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:
Justine Tunney 2024-01-09 01:26:03 -08:00
parent cb19e172da
commit eeb20775d2
No known key found for this signature in database
GPG key ID: BE714B4575D6E328
103 changed files with 1455 additions and 1456 deletions

View file

@ -19,137 +19,137 @@
* @see libc/sysv/errfuns.inc (for implementation)
*/
intptr_t einval(void) relegated;
intptr_t eperm(void) relegated;
intptr_t enoent(void) relegated;
intptr_t esrch(void) relegated;
intptr_t eintr(void) relegated;
intptr_t eio(void) relegated;
intptr_t enxio(void) relegated;
intptr_t e2big(void) relegated;
intptr_t enoexec(void) relegated;
intptr_t ebadf(void) relegated;
intptr_t echild(void) relegated;
intptr_t eagain(void) relegated;
intptr_t enomem(void) relegated;
intptr_t eacces(void) relegated;
intptr_t efault(void) relegated;
intptr_t enotblk(void) relegated;
intptr_t ebusy(void) relegated;
intptr_t eexist(void) relegated;
intptr_t exdev(void) relegated;
intptr_t enodev(void) relegated;
intptr_t enotdir(void) relegated;
intptr_t eisdir(void) relegated;
intptr_t enfile(void) relegated;
intptr_t emfile(void) relegated;
intptr_t enotty(void) relegated;
intptr_t enotsup(void) relegated;
intptr_t etxtbsy(void) relegated;
intptr_t efbig(void) relegated;
intptr_t enospc(void) relegated;
intptr_t espipe(void) relegated;
intptr_t erofs(void) relegated;
intptr_t emlink(void) relegated;
intptr_t epipe(void) relegated;
intptr_t edom(void) relegated;
intptr_t erange(void) relegated;
intptr_t edeadlk(void) relegated;
intptr_t enametoolong(void) relegated;
intptr_t enolck(void) relegated;
intptr_t enosys(void) relegated;
intptr_t enotempty(void) relegated;
intptr_t eloop(void) relegated;
intptr_t enomsg(void) relegated;
intptr_t eidrm(void) relegated;
intptr_t echrng(void) relegated;
intptr_t el2nsync(void) relegated;
intptr_t el3hlt(void) relegated;
intptr_t el3rst(void) relegated;
intptr_t elnrng(void) relegated;
intptr_t eunatch(void) relegated;
intptr_t enocsi(void) relegated;
intptr_t el2hlt(void) relegated;
intptr_t ebade(void) relegated;
intptr_t ebadr(void) relegated;
intptr_t exfull(void) relegated;
intptr_t enoano(void) relegated;
intptr_t ebadrqc(void) relegated;
intptr_t ebadslt(void) relegated;
intptr_t enostr(void) relegated;
intptr_t enodata(void) relegated;
intptr_t etime(void) relegated;
intptr_t enosr(void) relegated;
intptr_t enonet(void) relegated;
intptr_t enopkg(void) relegated;
intptr_t eremote(void) relegated;
intptr_t enolink(void) relegated;
intptr_t eadv(void) relegated;
intptr_t esrmnt(void) relegated;
intptr_t ecomm(void) relegated;
intptr_t eproto(void) relegated;
intptr_t emultihop(void) relegated;
intptr_t edotdot(void) relegated;
intptr_t ebadmsg(void) relegated;
intptr_t eoverflow(void) relegated;
intptr_t enotuniq(void) relegated;
intptr_t ebadfd(void) relegated;
intptr_t eremchg(void) relegated;
intptr_t elibacc(void) relegated;
intptr_t elibbad(void) relegated;
intptr_t elibscn(void) relegated;
intptr_t elibmax(void) relegated;
intptr_t elibexec(void) relegated;
intptr_t eilseq(void) relegated;
intptr_t erestart(void) relegated;
intptr_t estrpipe(void) relegated;
intptr_t eusers(void) relegated;
intptr_t enotsock(void) relegated;
intptr_t edestaddrreq(void) relegated;
intptr_t emsgsize(void) relegated;
intptr_t eprototype(void) relegated;
intptr_t enoprotoopt(void) relegated;
intptr_t eprotonosupport(void) relegated;
intptr_t esocktnosupport(void) relegated;
intptr_t eopnotsupp(void) relegated;
intptr_t epfnosupport(void) relegated;
intptr_t eafnosupport(void) relegated;
intptr_t eaddrinuse(void) relegated;
intptr_t eaddrnotavail(void) relegated;
intptr_t enetdown(void) relegated;
intptr_t enetunreach(void) relegated;
intptr_t enetreset(void) relegated;
intptr_t econnaborted(void) relegated;
intptr_t econnreset(void) relegated;
intptr_t enobufs(void) relegated;
intptr_t eisconn(void) relegated;
intptr_t enotconn(void) relegated;
intptr_t eshutdown(void) relegated;
intptr_t etoomanyrefs(void) relegated;
intptr_t etimedout(void) relegated;
intptr_t econnrefused(void) relegated;
intptr_t ehostdown(void) relegated;
intptr_t ehostunreach(void) relegated;
intptr_t ealready(void) relegated;
intptr_t einprogress(void) relegated;
intptr_t estale(void) relegated;
intptr_t euclean(void) relegated;
intptr_t enotnam(void) relegated;
intptr_t enavail(void) relegated;
intptr_t eisnam(void) relegated;
intptr_t eremoteio(void) relegated;
intptr_t edquot(void) relegated;
intptr_t enomedium(void) relegated;
intptr_t emediumtype(void) relegated;
intptr_t ecanceled(void) relegated;
intptr_t enokey(void) relegated;
intptr_t ekeyexpired(void) relegated;
intptr_t ekeyrevoked(void) relegated;
intptr_t ekeyrejected(void) relegated;
intptr_t eownerdead(void) relegated;
intptr_t enotrecoverable(void) relegated;
intptr_t erfkill(void) relegated;
intptr_t ehwpoison(void) relegated;
libcesque intptr_t einval(void) relegated;
libcesque intptr_t eperm(void) relegated;
libcesque intptr_t enoent(void) relegated;
libcesque intptr_t esrch(void) relegated;
libcesque intptr_t eintr(void) relegated;
libcesque intptr_t eio(void) relegated;
libcesque intptr_t enxio(void) relegated;
libcesque intptr_t e2big(void) relegated;
libcesque intptr_t enoexec(void) relegated;
libcesque intptr_t ebadf(void) relegated;
libcesque intptr_t echild(void) relegated;
libcesque intptr_t eagain(void) relegated;
libcesque intptr_t enomem(void) relegated;
libcesque intptr_t eacces(void) relegated;
libcesque intptr_t efault(void) relegated;
libcesque intptr_t enotblk(void) relegated;
libcesque intptr_t ebusy(void) relegated;
libcesque intptr_t eexist(void) relegated;
libcesque intptr_t exdev(void) relegated;
libcesque intptr_t enodev(void) relegated;
libcesque intptr_t enotdir(void) relegated;
libcesque intptr_t eisdir(void) relegated;
libcesque intptr_t enfile(void) relegated;
libcesque intptr_t emfile(void) relegated;
libcesque intptr_t enotty(void) relegated;
libcesque intptr_t enotsup(void) relegated;
libcesque intptr_t etxtbsy(void) relegated;
libcesque intptr_t efbig(void) relegated;
libcesque intptr_t enospc(void) relegated;
libcesque intptr_t espipe(void) relegated;
libcesque intptr_t erofs(void) relegated;
libcesque intptr_t emlink(void) relegated;
libcesque intptr_t epipe(void) relegated;
libcesque intptr_t edom(void) relegated;
libcesque intptr_t erange(void) relegated;
libcesque intptr_t edeadlk(void) relegated;
libcesque intptr_t enametoolong(void) relegated;
libcesque intptr_t enolck(void) relegated;
libcesque intptr_t enosys(void) relegated;
libcesque intptr_t enotempty(void) relegated;
libcesque intptr_t eloop(void) relegated;
libcesque intptr_t enomsg(void) relegated;
libcesque intptr_t eidrm(void) relegated;
libcesque intptr_t echrng(void) relegated;
libcesque intptr_t el2nsync(void) relegated;
libcesque intptr_t el3hlt(void) relegated;
libcesque intptr_t el3rst(void) relegated;
libcesque intptr_t elnrng(void) relegated;
libcesque intptr_t eunatch(void) relegated;
libcesque intptr_t enocsi(void) relegated;
libcesque intptr_t el2hlt(void) relegated;
libcesque intptr_t ebade(void) relegated;
libcesque intptr_t ebadr(void) relegated;
libcesque intptr_t exfull(void) relegated;
libcesque intptr_t enoano(void) relegated;
libcesque intptr_t ebadrqc(void) relegated;
libcesque intptr_t ebadslt(void) relegated;
libcesque intptr_t enostr(void) relegated;
libcesque intptr_t enodata(void) relegated;
libcesque intptr_t etime(void) relegated;
libcesque intptr_t enosr(void) relegated;
libcesque intptr_t enonet(void) relegated;
libcesque intptr_t enopkg(void) relegated;
libcesque intptr_t eremote(void) relegated;
libcesque intptr_t enolink(void) relegated;
libcesque intptr_t eadv(void) relegated;
libcesque intptr_t esrmnt(void) relegated;
libcesque intptr_t ecomm(void) relegated;
libcesque intptr_t eproto(void) relegated;
libcesque intptr_t emultihop(void) relegated;
libcesque intptr_t edotdot(void) relegated;
libcesque intptr_t ebadmsg(void) relegated;
libcesque intptr_t eoverflow(void) relegated;
libcesque intptr_t enotuniq(void) relegated;
libcesque intptr_t ebadfd(void) relegated;
libcesque intptr_t eremchg(void) relegated;
libcesque intptr_t elibacc(void) relegated;
libcesque intptr_t elibbad(void) relegated;
libcesque intptr_t elibscn(void) relegated;
libcesque intptr_t elibmax(void) relegated;
libcesque intptr_t elibexec(void) relegated;
libcesque intptr_t eilseq(void) relegated;
libcesque intptr_t erestart(void) relegated;
libcesque intptr_t estrpipe(void) relegated;
libcesque intptr_t eusers(void) relegated;
libcesque intptr_t enotsock(void) relegated;
libcesque intptr_t edestaddrreq(void) relegated;
libcesque intptr_t emsgsize(void) relegated;
libcesque intptr_t eprototype(void) relegated;
libcesque intptr_t enoprotoopt(void) relegated;
libcesque intptr_t eprotonosupport(void) relegated;
libcesque intptr_t esocktnosupport(void) relegated;
libcesque intptr_t eopnotsupp(void) relegated;
libcesque intptr_t epfnosupport(void) relegated;
libcesque intptr_t eafnosupport(void) relegated;
libcesque intptr_t eaddrinuse(void) relegated;
libcesque intptr_t eaddrnotavail(void) relegated;
libcesque intptr_t enetdown(void) relegated;
libcesque intptr_t enetunreach(void) relegated;
libcesque intptr_t enetreset(void) relegated;
libcesque intptr_t econnaborted(void) relegated;
libcesque intptr_t econnreset(void) relegated;
libcesque intptr_t enobufs(void) relegated;
libcesque intptr_t eisconn(void) relegated;
libcesque intptr_t enotconn(void) relegated;
libcesque intptr_t eshutdown(void) relegated;
libcesque intptr_t etoomanyrefs(void) relegated;
libcesque intptr_t etimedout(void) relegated;
libcesque intptr_t econnrefused(void) relegated;
libcesque intptr_t ehostdown(void) relegated;
libcesque intptr_t ehostunreach(void) relegated;
libcesque intptr_t ealready(void) relegated;
libcesque intptr_t einprogress(void) relegated;
libcesque intptr_t estale(void) relegated;
libcesque intptr_t euclean(void) relegated;
libcesque intptr_t enotnam(void) relegated;
libcesque intptr_t enavail(void) relegated;
libcesque intptr_t eisnam(void) relegated;
libcesque intptr_t eremoteio(void) relegated;
libcesque intptr_t edquot(void) relegated;
libcesque intptr_t enomedium(void) relegated;
libcesque intptr_t emediumtype(void) relegated;
libcesque intptr_t ecanceled(void) relegated;
libcesque intptr_t enokey(void) relegated;
libcesque intptr_t ekeyexpired(void) relegated;
libcesque intptr_t ekeyrevoked(void) relegated;
libcesque intptr_t ekeyrejected(void) relegated;
libcesque intptr_t eownerdead(void) relegated;
libcesque intptr_t enotrecoverable(void) relegated;
libcesque intptr_t erfkill(void) relegated;
libcesque intptr_t ehwpoison(void) relegated;
#if defined(__MNO_RED_ZONE__) && defined(__GNUC__) && !defined(__STRICT_ANSI__)
#define __ERRFUN(FUNC) \