mirror of
https://github.com/jart/cosmopolitan.git
synced 2025-06-28 07:18:30 +00:00
Add dontthrow
attribute to most libc functions
This will help C++ code that uses exceptions to be tinier. For example, this change shaves away 1000 lines of assembly code from LLVM's libcxx, which is 0.7% of all assembly instructions in the entire library.
This commit is contained in:
parent
cb19e172da
commit
eeb20775d2
103 changed files with 1455 additions and 1456 deletions
138
libc/str/str.h
138
libc/str/str.h
|
@ -23,38 +23,38 @@
|
|||
#if !(__ASSEMBLER__ + __LINKER__ + 0)
|
||||
COSMOPOLITAN_C_START_
|
||||
|
||||
int isascii(int);
|
||||
int isspace(int);
|
||||
int isalpha(int);
|
||||
int isdigit(int);
|
||||
int isalnum(int);
|
||||
int isxdigit(int);
|
||||
int isprint(int);
|
||||
int islower(int);
|
||||
int isupper(int);
|
||||
int isblank(int);
|
||||
int iscntrl(int);
|
||||
int isgraph(int);
|
||||
int tolower(int);
|
||||
int ispunct(int);
|
||||
int toupper(int);
|
||||
int toascii(int);
|
||||
int isascii(int) libcesque;
|
||||
int isspace(int) libcesque;
|
||||
int isalpha(int) libcesque;
|
||||
int isdigit(int) libcesque;
|
||||
int isalnum(int) libcesque;
|
||||
int isxdigit(int) libcesque;
|
||||
int isprint(int) libcesque;
|
||||
int islower(int) libcesque;
|
||||
int isupper(int) libcesque;
|
||||
int isblank(int) libcesque;
|
||||
int iscntrl(int) libcesque;
|
||||
int isgraph(int) libcesque;
|
||||
int tolower(int) libcesque;
|
||||
int ispunct(int) libcesque;
|
||||
int toupper(int) libcesque;
|
||||
int toascii(int) libcesque;
|
||||
|
||||
int iswalnum(wint_t);
|
||||
int iswalpha(wint_t);
|
||||
int iswblank(wint_t);
|
||||
int iswcntrl(wint_t);
|
||||
int iswdigit(wint_t);
|
||||
int iswgraph(wint_t);
|
||||
int iswlower(wint_t);
|
||||
int iswspace(wint_t);
|
||||
int iswupper(wint_t);
|
||||
int iswxdigit(wint_t);
|
||||
int iswpunct(wint_t);
|
||||
int iswprint(wint_t);
|
||||
int iswseparator(wint_t);
|
||||
wint_t towlower(wint_t);
|
||||
wint_t towupper(wint_t);
|
||||
int iswalnum(wint_t) libcesque;
|
||||
int iswalpha(wint_t) libcesque;
|
||||
int iswblank(wint_t) libcesque;
|
||||
int iswcntrl(wint_t) libcesque;
|
||||
int iswdigit(wint_t) libcesque;
|
||||
int iswgraph(wint_t) libcesque;
|
||||
int iswlower(wint_t) libcesque;
|
||||
int iswspace(wint_t) libcesque;
|
||||
int iswupper(wint_t) libcesque;
|
||||
int iswxdigit(wint_t) libcesque;
|
||||
int iswpunct(wint_t) libcesque;
|
||||
int iswprint(wint_t) libcesque;
|
||||
int iswseparator(wint_t) libcesque;
|
||||
wint_t towlower(wint_t) libcesque;
|
||||
wint_t towupper(wint_t) libcesque;
|
||||
|
||||
void *memset(void *, int, size_t) memcpyesque;
|
||||
void *memmove(void *, const void *, size_t) memcpyesque;
|
||||
|
@ -65,19 +65,19 @@ void *memccpy(void *restrict, const void *restrict, int, size_t) memcpyesque;
|
|||
void explicit_bzero(void *, size_t);
|
||||
|
||||
int memcmp(const void *, const void *, size_t) strlenesque;
|
||||
int timingsafe_bcmp(const void *, const void *, size_t);
|
||||
int timingsafe_memcmp(const void *, const void *, size_t);
|
||||
int timingsafe_bcmp(const void *, const void *, size_t) libcesque;
|
||||
int timingsafe_memcmp(const void *, const void *, size_t) libcesque;
|
||||
|
||||
size_t strlen(const char *) strlenesque;
|
||||
size_t strnlen(const char *, size_t) strlenesque;
|
||||
size_t strnlen_s(const char *, size_t);
|
||||
size_t strnlen_s(const char *, size_t) libcesque;
|
||||
char *strchr(const char *, int) strlenesque;
|
||||
void *memchr(const void *, int, size_t) strlenesque;
|
||||
char *strchrnul(const char *, int) strlenesque returnsnonnull;
|
||||
void *rawmemchr(const void *, int) strlenesque returnsnonnull;
|
||||
size_t wcslen(const wchar_t *) strlenesque;
|
||||
size_t wcsnlen(const wchar_t *, size_t) strlenesque;
|
||||
size_t wcsnlen_s(const wchar_t *, size_t);
|
||||
size_t wcsnlen_s(const wchar_t *, size_t) libcesque;
|
||||
wchar_t *wcschr(const wchar_t *, wchar_t) strlenesque;
|
||||
wchar_t *wmemchr(const wchar_t *, wchar_t, size_t) strlenesque;
|
||||
wchar_t *wcschrnul(const wchar_t *, wchar_t)
|
||||
|
@ -107,14 +107,14 @@ size_t strcspn(const char *, const char *) strlenesque;
|
|||
size_t wcscspn(const wchar_t *, const wchar_t *) strlenesque;
|
||||
void *memfrob(void *, size_t) memcpyesque;
|
||||
int strcoll(const char *, const char *) strlenesque;
|
||||
char *strsep(char **, const char *) paramsnonnull();
|
||||
char *strsep(char **, const char *) libcesque paramsnonnull();
|
||||
char *stpcpy(char *, const char *) memcpyesque;
|
||||
char *stpncpy(char *, const char *, size_t) memcpyesque;
|
||||
char *strcat(char *, const char *) memcpyesque;
|
||||
wchar_t *wcscat(wchar_t *, const wchar_t *) memcpyesque;
|
||||
size_t strlcpy(char *, const char *, size_t);
|
||||
size_t strlcat(char *, const char *, size_t);
|
||||
size_t strxfrm(char *, const char *, size_t);
|
||||
size_t strlcpy(char *, const char *, size_t) libcesque;
|
||||
size_t strlcat(char *, const char *, size_t) libcesque;
|
||||
size_t strxfrm(char *, const char *, size_t) libcesque;
|
||||
char *strcpy(char *, const char *) memcpyesque;
|
||||
wchar_t *wcscpy(wchar_t *, const wchar_t *) memcpyesque;
|
||||
char *strncat(char *, const char *, size_t) memcpyesque;
|
||||
|
@ -123,56 +123,56 @@ char *strncpy(char *, const char *, size_t) memcpyesque;
|
|||
char *strtok(char *, const char *) paramsnonnull((2)) libcesque;
|
||||
char *strtok_r(char *, const char *, char **) paramsnonnull((2, 3));
|
||||
wchar_t *wcstok(wchar_t *, const wchar_t *, wchar_t **) paramsnonnull((2, 3));
|
||||
int strverscmp(const char *, const char *);
|
||||
int strverscmp(const char *, const char *) libcesque;
|
||||
wchar_t *wmemset(wchar_t *, wchar_t, size_t) memcpyesque;
|
||||
wchar_t *wmemcpy(wchar_t *, const wchar_t *, size_t) memcpyesque;
|
||||
wchar_t *wmempcpy(wchar_t *, const wchar_t *, size_t) memcpyesque;
|
||||
wchar_t *wmemmove(wchar_t *, const wchar_t *, size_t) memcpyesque;
|
||||
void *memmem(const void *, size_t, const void *, size_t)
|
||||
libcesque nosideeffect;
|
||||
ssize_t strfmon(char *, size_t, const char *, ...);
|
||||
long a64l(const char *);
|
||||
char *l64a(long);
|
||||
ssize_t strfmon(char *, size_t, const char *, ...) libcesque;
|
||||
long a64l(const char *) libcesque;
|
||||
char *l64a(long) libcesque;
|
||||
|
||||
typedef unsigned mbstate_t;
|
||||
|
||||
wchar_t *wcsncpy(wchar_t *, const wchar_t *, size_t);
|
||||
int mbtowc(wchar_t *, const char *, size_t);
|
||||
size_t mbrtowc(wchar_t *, const char *, size_t, mbstate_t *);
|
||||
size_t mbsrtowcs(wchar_t *, const char **, size_t, mbstate_t *);
|
||||
size_t mbstowcs(wchar_t *, const char *, size_t);
|
||||
size_t wcrtomb(char *, wchar_t, mbstate_t *);
|
||||
size_t c32rtomb(char *, char32_t, mbstate_t *);
|
||||
size_t mbrtoc32(char32_t *, const char *, size_t, mbstate_t *);
|
||||
size_t c16rtomb(char *, char16_t, mbstate_t *);
|
||||
size_t mbrtoc16(char16_t *, const char *, size_t, mbstate_t *);
|
||||
size_t mbrlen(const char *, size_t, mbstate_t *);
|
||||
wchar_t *wcsncpy(wchar_t *, const wchar_t *, size_t) libcesque;
|
||||
int mbtowc(wchar_t *, const char *, size_t) libcesque;
|
||||
size_t mbrtowc(wchar_t *, const char *, size_t, mbstate_t *) libcesque;
|
||||
size_t mbsrtowcs(wchar_t *, const char **, size_t, mbstate_t *) libcesque;
|
||||
size_t mbstowcs(wchar_t *, const char *, size_t) libcesque;
|
||||
size_t wcrtomb(char *, wchar_t, mbstate_t *) libcesque;
|
||||
size_t c32rtomb(char *, char32_t, mbstate_t *) libcesque;
|
||||
size_t mbrtoc32(char32_t *, const char *, size_t, mbstate_t *) libcesque;
|
||||
size_t c16rtomb(char *, char16_t, mbstate_t *) libcesque;
|
||||
size_t mbrtoc16(char16_t *, const char *, size_t, mbstate_t *) libcesque;
|
||||
size_t mbrlen(const char *, size_t, mbstate_t *) libcesque;
|
||||
size_t mbsnrtowcs(wchar_t *, const char **, size_t, size_t, mbstate_t *);
|
||||
size_t wcsnrtombs(char *, const wchar_t **, size_t, size_t, mbstate_t *);
|
||||
size_t wcsrtombs(char *, const wchar_t **, size_t, mbstate_t *);
|
||||
size_t wcstombs(char *, const wchar_t *, size_t);
|
||||
int mbsinit(const mbstate_t *);
|
||||
int mblen(const char *, size_t);
|
||||
int wctomb(char *, wchar_t);
|
||||
int wctob(wint_t);
|
||||
wint_t btowc(int);
|
||||
size_t wcsrtombs(char *, const wchar_t **, size_t, mbstate_t *) libcesque;
|
||||
size_t wcstombs(char *, const wchar_t *, size_t) libcesque;
|
||||
int mbsinit(const mbstate_t *) libcesque;
|
||||
int mblen(const char *, size_t) libcesque;
|
||||
int wctomb(char *, wchar_t) libcesque;
|
||||
int wctob(wint_t) libcesque;
|
||||
wint_t btowc(int) libcesque;
|
||||
|
||||
typedef unsigned wctype_t;
|
||||
wctype_t wctype(const char *) strlenesque;
|
||||
int iswctype(wint_t, wctype_t) pureconst;
|
||||
pureconst int iswctype(wint_t, wctype_t) libcesque;
|
||||
|
||||
typedef const int *wctrans_t;
|
||||
wctrans_t wctrans(const char *);
|
||||
wint_t towctrans(wint_t, wctrans_t);
|
||||
wctrans_t wctrans(const char *) libcesque;
|
||||
wint_t towctrans(wint_t, wctrans_t) libcesque;
|
||||
|
||||
int getsubopt(char **, char *const *, char **) paramsnonnull();
|
||||
int getsubopt(char **, char *const *, char **) libcesque paramsnonnull();
|
||||
char *strsignal(int) returnsnonnull libcesque;
|
||||
char *strerror(int) returnsnonnull dontthrow nocallback;
|
||||
errno_t strerror_r(int, char *, size_t) libcesque;
|
||||
char *__xpg_strerror_r(int, char *, size_t) libcesque;
|
||||
|
||||
#ifdef _COSMO_SOURCE
|
||||
uint64_t tpenc(uint32_t) pureconst;
|
||||
pureconst uint64_t tpenc(uint32_t) libcesque;
|
||||
char *chomp(char *) libcesque;
|
||||
wchar_t *wchomp(wchar_t *) libcesque;
|
||||
uint64_t __fnv(const void *, size_t) strlenesque;
|
||||
|
@ -205,11 +205,11 @@ char16_t *strncat16(char16_t *, const char16_t *, size_t) memcpyesque;
|
|||
char16_t *memset16(char16_t *, char16_t, size_t) memcpyesque;
|
||||
bool32 startswith16(const char16_t *, const char16_t *) strlenesque;
|
||||
bool32 endswith16(const char16_t *, const char16_t *) strlenesque;
|
||||
axdx_t tprecode8to16(char16_t *, size_t, const char *);
|
||||
axdx_t tprecode16to8(char *, size_t, const char16_t *);
|
||||
axdx_t tprecode8to16(char16_t *, size_t, const char *) libcesque;
|
||||
axdx_t tprecode16to8(char *, size_t, const char16_t *) libcesque;
|
||||
bool32 wcsstartswith(const wchar_t *, const wchar_t *) strlenesque;
|
||||
bool32 wcsendswith(const wchar_t *, const wchar_t *) strlenesque;
|
||||
char *__join_paths(char *, size_t, const char *, const char *) __wur;
|
||||
char *__join_paths(char *, size_t, const char *, const char *) libcesque __wur;
|
||||
int __mkntpathat(int, const char *, int, char16_t[hasatleast 1024]);
|
||||
#endif /* _COSMO_SOURCE */
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue