diff --git a/libc/intrin/dos2errno.c b/libc/intrin/dos2errno.c index 73c90b8a8..e2cfe0703 100644 --- a/libc/intrin/dos2errno.c +++ b/libc/intrin/dos2errno.c @@ -36,7 +36,7 @@ privileged errno_t __dos2errno(uint32_t error) { if (error) { for (i = 0; kDos2Errno[i].doscode; ++i) { if (error == kDos2Errno[i].doscode) { - return *(const int *)((intptr_t)kDos2Errno + kDos2Errno[i].systemv); + return *(const int *)((intptr_t)kDos2Errno[i].systemv); } } } diff --git a/libc/intrin/kdos2errno.S b/libc/intrin/kdos2errno.S index 3e472a87f..56ae496b3 100644 --- a/libc/intrin/kdos2errno.S +++ b/libc/intrin/kdos2errno.S @@ -16,160 +16,17 @@ │ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR │ │ PERFORMANCE OF THIS SOFTWARE. │ ╚─────────────────────────────────────────────────────────────────────────────*/ -#include "libc/nt/errors.h" -#include "libc/nt/errors.h" #include "libc/macros.internal.h" // @fileoverview data structure for __dos2errno() +// @see libc/sysv/dos2errno.sh for the numbers - .macro .e doscode systemv - .short \doscode - .long \systemv - kDos2Errno - .endm - - .section .rodata,"a",@progbits - .align 4 - .underrun -kDos2Errno: -// .e kNtErrorInvalidFunction,ENOSYS # in consts.sh -// .e kNtErrorFileNotFound,ENOENT # in consts.sh -// .e kNtErrorPathNotFound,ENOTDIR # in consts.sh -// .e kNtErrorTooManyOpenFiles,EMFILE # in consts.sh -// .e kNtErrorTooManyDescriptors,ENFILE # in consts.sh -// .e kNtErrorTooManyLinks,EMLINK # in consts.sh -// .e kNtErrorAccessDenied,EACCES # in consts.sh -// .e kNtErrorInvalidHandle,EBADF # in consts.sh -// .e kNtErrorInvalidAccess,EPERM # in consts.sh -// .e kNtErrorNotEnoughQuota,EDQUOT # in consts.sh -// .e kNtErrorSeek,ESPIPE # in consts.sh -// .e kNtErrorNotDosDisk,ENOTBLK # in consts.sh -// .e kNtErrorFileExists,EEXIST # in consts.sh -// .e kNtErrorInvalidParameter,EINVAL # in consts.sh -// .e kNtErrorOutofmemory,ENOMEM # in consts.sh -// .e kNtErrorBrokenPipe,EPIPE # in consts.sh -// .e kNtErrorWaitNoChildren,ECHILD # in consts.sh -// .e kNtErrorPathBusy,ETXTBSY # in consts.sh -// .e kNtErrorBusy,EBUSY # in consts.sh -// .e kNtErrorAlreadyExists,EEXIST # in consts.sh -// .e kNtErrorBadExeFormat,ENOEXEC # in consts.sh -// .e kNtErrorFileTooLarge,EFBIG # in consts.sh -// .e kNtErrorDirectoryNotSupported,EISDIR # in consts.sh -// .e kNtErrorInvalidAddress,EFAULT # in consts.sh -// .e kNtErrorThreadNotInProcess,ESRCH # in consts.sh -// .e kNtErrorNoMediaInDrive,ENXIO # in consts.sh -// .e kNtErrorIoDevice,EIO # in consts.sh -// .e kNtErrorSerialNoDevice,ENOTTY # in consts.sh -// .e kNtErrorPossibleDeadlock,EDEADLK # in consts.sh -// .e kNtErrorBadDevice,ENODEV # in consts.sh -// .e kNtErrorInvalidCommandLine,E2BIG # in consts.sh -// .e kNtErrorFileReadOnly,EROFS # in consts.sh -// .e kNtErrorNoData,ENODATA # in consts.sh -// .e WSAEPROCLIM,EPROCLIM # in consts.sh -// .e WSAESHUTDOWN,ESHUTDOWN # in consts.sh -// .e WSAEINPROGRESS,EINPROGRESS # in consts.sh -// .e WSAENETDOWN,ENETDOWN # in consts.sh -// .e WSAENETUNREACH,ENETUNREACH # in consts.sh -// .e WSAENETRESET,ENETRESET # in consts.sh -// .e WSAEUSERS,EUSERS # in consts.sh -// .e WSAENOTSOCK,ENOTSOCK # in consts.sh -// .e WSAEDESTADDRREQ,EDESTADDRREQ # in consts.sh -// .e WSAEMSGSIZE,EMSGSIZE # in consts.sh -// .e WSAEPROTOTYPE,EPROTOTYPE # in consts.sh -// .e WSAENOPROTOOPT,ENOPROTOOPT # in consts.sh -// .e WSAEPROTONOSUPPORT,EPROTONOSUPPORT # in consts.sh -// .e WSAESOCKTNOSUPPORT,ESOCKTNOSUPPORT # in consts.sh -// .e WSAEOPNOTSUPP,ENOTSUP # in consts.sh -// .e WSAEOPNOTSUPP,EOPNOTSUPP # in consts.sh -// .e WSAEPFNOSUPPORT,EPFNOSUPPORT # in consts.sh -// .e WSAEAFNOSUPPORT,EAFNOSUPPORT # in consts.sh -// .e WSAEADDRINUSE,EADDRINUSE # in consts.sh -// .e WSAEADDRNOTAVAIL,EADDRNOTAVAIL # in consts.sh -// .e WSAECONNABORTED,ECONNABORTED # in consts.sh -// .e WSAECONNRESET,ECONNRESET # in consts.sh -// .e WSAENOBUFS,ENOBUFS # in consts.sh -// .e WSAEISCONN,EISCONN # in consts.sh -// .e WSAENOTCONN,ENOTCONN # in consts.sh -// .e WSAESHUTDOWN,ESHUTDOWN # in consts.sh -// .e WSAETOOMANYREFS,ETOOMANYREFS # in consts.sh -// .e WSAETIMEDOUT,ETIMEDOUT # in consts.sh -// .e WSAECONNREFUSED,ECONNREFUSED # in consts.sh -// .e WSAEHOSTDOWN,EHOSTDOWN # in consts.sh -// .e WSAEHOSTUNREACH,EHOSTUNREACH # in consts.sh -// .e WSAEALREADY,EALREADY # in consts.sh -// .e WSAESTALE,ESTALE # in consts.sh -// .e WSAEREMOTE,EREMOTE # in consts.sh -// .e WSAEINTR,EINTR # in consts.sh - .e kNtErrorModNotFound,ENOSYS - .e kNtErrorBadCommand,EACCES - .e kNtErrorBadLength,EACCES - .e kNtErrorBadNetpath,ENOENT - .e kNtErrorBadNetName,ENOENT - .e kNtErrorBadPathname,ENOENT - .e kNtErrorBadNetResp,ENETDOWN - .e kNtErrorFileExists,EEXIST - .e kNtErrorCannotMake,EACCES - .e kNtErrorCommitmentLimit,ENOMEM - .e kNtErrorConnectionAborted,ECONNABORTED - .e kNtErrorConnectionActive,EISCONN - .e kNtErrorConnectionRefused,ECONNREFUSED - .e kNtErrorCrc,EACCES - .e kNtErrorDirNotEmpty,ENOTEMPTY - .e kNtErrorDupName,EADDRINUSE - .e kNtErrorFilenameExcedRange,ENAMETOOLONG - .e kNtErrorGenFailure,EACCES - .e kNtErrorGracefulDisconnect,EPIPE - .e kNtErrorHostDown,EHOSTUNREACH - .e kNtErrorHostUnreachable,EHOSTUNREACH - .e kNtErrorInsufficientBuffer,EFAULT - .e kNtErrorNoaccess,EFAULT - .e kNtErrorInvalidAddress,EADDRNOTAVAIL - .e kNtErrorNotAReparsePoint,EINVAL - .e kNtErrorInvalidFunction,EINVAL - .e kNtErrorInvalidNetname,EADDRNOTAVAIL - .e kNtErrorInvalidUserBuffer,EMSGSIZE - .e kNtErrorIoPending,EINPROGRESS - .e kNtErrorLockViolation,EACCES - .e kNtErrorMoreData,EMSGSIZE - .e kNtErrorNetnameDeleted,ECONNABORTED - .e kNtErrorNetworkAccessDenied,EACCES - .e kNtErrorNetworkBusy,ENETDOWN - .e kNtErrorNetworkUnreachable,ENETUNREACH - .e kNtErrorNonpagedSystemResources,ENOMEM - .e kNtErrorNotEnoughMemory,ENOMEM - .e kNtErrorNotEnoughQuota,ENOMEM - .e kNtErrorNotFound,ENOENT - .e kNtErrorNotLocked,EACCES - .e kNtErrorNotReady,EACCES - .e kNtErrorNotSupported,ENOTSUP - .e kNtErrorNoMoreFiles,ENOENT - .e kNtErrorNoSystemResources,ENOMEM - .e kNtErrorOperationAborted,EINTR - .e kNtErrorOutOfPaper,EACCES - .e kNtErrorPagedSystemResources,ENOMEM - .e kNtErrorPagefileQuota,ENOMEM - .e kNtErrorPipeNotConnected,EPIPE - .e kNtErrorPortUnreachable,ECONNRESET - .e kNtErrorProtocolUnreachable,ENETUNREACH - .e kNtErrorRemNotList,ECONNREFUSED - .e kNtErrorRequestAborted,EINTR - .e kNtErrorReqNotAccep,EWOULDBLOCK - .e kNtErrorSectorNotFound,EACCES - .e kNtErrorSemTimeout,ETIMEDOUT - .e kNtErrorSharingViolation,EACCES - .e kNtErrorTooManyNames,ENOMEM - .e kNtErrorUnexpNetErr,ECONNABORTED - .e kNtErrorWorkingSetQuota,ENOMEM - .e kNtErrorWriteProtect,EACCES - .e kNtErrorWrongDisk,EACCES - .e WSAEACCES,EACCES - .e WSAEDISCON,EPIPE - .e WSAEFAULT,EFAULT - .e WSAEINVAL,EINVAL - .e WSAEDQUOT,EDQUOT - .e WSAEPROCLIM,ENOMEM - .e WSANOTINITIALISED,ENETDOWN - .e WSASYSNOTREADY,ENETDOWN - .e WSAVERNOTSUPPORTED,ENOSYS + .section .sort.rodata.dos2errno.1,"a",@progbits + .align 8 +kDos2Errno:/* + ...decentralized content... + */.endobj kDos2Errno,globl + .previous + .section .sort.rodata.dos2errno.3,"a",@progbits .short 0 - .endobj kDos2Errno,globl,hidden - .overrun + .previous diff --git a/libc/nt/errors.h b/libc/nt/errors.h index da05e1af2..484e668e6 100644 --- a/libc/nt/errors.h +++ b/libc/nt/errors.h @@ -89,7 +89,7 @@ #define kNtErrorBufferOverflow 111 #define kNtErrorDiskFull 112 /* ENOSPC */ #define kNtErrorNoMoreSearchHandles 113 -#define kNtErrorInvalidTargetHandle 114 +#define kNtErrorInvalidTargetHandle 114 /* EBADF */ #define kNtErrorInvalidCategory 117 #define kNtErrorInvalidVerifySwitch 118 #define kNtErrorBadDriverLevel 119 @@ -103,7 +103,7 @@ #define kNtErrorProcNotFound 127 #define kNtErrorWaitNoChildren 128 /* ECHILD */ #define kNtErrorChildNotComplete 129 -#define kNtErrorDirectAccessHandle 130 +#define kNtErrorDirectAccessHandle 130 /* EBADF */ #define kNtErrorNegativeSeek 131 #define kNtErrorSeekOnDevice 132 #define kNtErrorIsJoinTarget 133 diff --git a/libc/nt/kernel32/SuspendThread.s b/libc/nt/kernel32/SuspendThread.s index 350b06471..76654fa04 100644 --- a/libc/nt/kernel32/SuspendThread.s +++ b/libc/nt/kernel32/SuspendThread.s @@ -1,2 +1,15 @@ .include "o/libc/nt/codegen.inc" .imp kernel32,__imp_SuspendThread,SuspendThread,0 + + .text.windows +SuspendThread: + push %rbp + mov %rsp,%rbp + .profilable + mov %rdi,%rcx + sub $32,%rsp + call *__imp_SuspendThread(%rip) + leave + ret + .endfn SuspendThread,globl + .previous diff --git a/libc/nt/master.sh b/libc/nt/master.sh index ae8625595..1d269f4fc 100755 --- a/libc/nt/master.sh +++ b/libc/nt/master.sh @@ -983,7 +983,7 @@ imp 'SleepConditionVariableSRW' SleepConditionVariableSRW kernel32 0 imp 'SleepEx' SleepEx kernel32 0 2 imp 'SortCloseHandle' SortCloseHandle kernel32 1416 imp 'SortGetHandle' SortGetHandle kernel32 1417 -imp 'SuspendThread' SuspendThread kernel32 0 +imp 'SuspendThread' SuspendThread kernel32 0 1 imp 'SwitchToFiber' SwitchToFiber kernel32 0 imp 'SwitchToThread' SwitchToThread kernel32 0 imp 'SystemTimeToFileTime' SystemTimeToFileTime kernel32 0 2 diff --git a/libc/sysv/consts/EACCES.s b/libc/sysv/consts/EACCES.s index c63d0601b..568a7caad 100644 --- a/libc/sysv/consts/EACCES.s +++ b/libc/sysv/consts/EACCES.s @@ -1,2 +1,3 @@ .include "o/libc/sysv/consts/syscon.internal.inc" .syscon errno,EACCES,13,13,13,13,13,5 +.yoink kDos2Errno.EACCES diff --git a/libc/sysv/consts/EADDRINUSE.s b/libc/sysv/consts/EADDRINUSE.s index 74cc22d3d..e6c24b1e4 100644 --- a/libc/sysv/consts/EADDRINUSE.s +++ b/libc/sysv/consts/EADDRINUSE.s @@ -1,2 +1,3 @@ .include "o/libc/sysv/consts/syscon.internal.inc" .syscon errno,EADDRINUSE,98,48,48,48,48,10048 +.yoink kDos2Errno.EADDRINUSE diff --git a/libc/sysv/consts/EADDRNOTAVAIL.s b/libc/sysv/consts/EADDRNOTAVAIL.s index 558fcb2ff..eb1b0d618 100644 --- a/libc/sysv/consts/EADDRNOTAVAIL.s +++ b/libc/sysv/consts/EADDRNOTAVAIL.s @@ -1,2 +1,3 @@ .include "o/libc/sysv/consts/syscon.internal.inc" .syscon errno,EADDRNOTAVAIL,99,49,49,49,49,10049 +.yoink kDos2Errno.EADDRNOTAVAIL diff --git a/libc/sysv/consts/EBADF.s b/libc/sysv/consts/EBADF.s index 2cd60a4fc..46a9a00d0 100644 --- a/libc/sysv/consts/EBADF.s +++ b/libc/sysv/consts/EBADF.s @@ -1,2 +1,3 @@ .include "o/libc/sysv/consts/syscon.internal.inc" .syscon errno,EBADF,9,9,9,9,9,6 +.yoink kDos2Errno.EBADF diff --git a/libc/sysv/consts/ECONNABORTED.s b/libc/sysv/consts/ECONNABORTED.s index 65c7be23c..ff99a126f 100644 --- a/libc/sysv/consts/ECONNABORTED.s +++ b/libc/sysv/consts/ECONNABORTED.s @@ -1,2 +1,3 @@ .include "o/libc/sysv/consts/syscon.internal.inc" .syscon errno,ECONNABORTED,103,53,53,53,53,10053 +.yoink kDos2Errno.ECONNABORTED diff --git a/libc/sysv/consts/ECONNREFUSED.s b/libc/sysv/consts/ECONNREFUSED.s index 02ba3224a..f70b75ab9 100644 --- a/libc/sysv/consts/ECONNREFUSED.s +++ b/libc/sysv/consts/ECONNREFUSED.s @@ -1,2 +1,3 @@ .include "o/libc/sysv/consts/syscon.internal.inc" .syscon errno,ECONNREFUSED,111,61,61,61,61,10061 +.yoink kDos2Errno.ECONNREFUSED diff --git a/libc/sysv/consts/ECONNRESET.s b/libc/sysv/consts/ECONNRESET.s index c8a1ddff7..6b256d062 100644 --- a/libc/sysv/consts/ECONNRESET.s +++ b/libc/sysv/consts/ECONNRESET.s @@ -1,2 +1,3 @@ .include "o/libc/sysv/consts/syscon.internal.inc" .syscon errno,ECONNRESET,104,54,54,54,54,10054 +.yoink kDos2Errno.ECONNRESET diff --git a/libc/sysv/consts/EDQUOT.s b/libc/sysv/consts/EDQUOT.s index acbaf6b4e..5bd117e2d 100644 --- a/libc/sysv/consts/EDQUOT.s +++ b/libc/sysv/consts/EDQUOT.s @@ -1,2 +1,3 @@ .include "o/libc/sysv/consts/syscon.internal.inc" .syscon errno,EDQUOT,122,69,69,69,69,1816 +.yoink kDos2Errno.EDQUOT diff --git a/libc/sysv/consts/EEXIST.s b/libc/sysv/consts/EEXIST.s index 30a855d0e..b6841db7c 100644 --- a/libc/sysv/consts/EEXIST.s +++ b/libc/sysv/consts/EEXIST.s @@ -1,2 +1,3 @@ .include "o/libc/sysv/consts/syscon.internal.inc" .syscon errno,EEXIST,17,17,17,17,17,183 +.yoink kDos2Errno.EEXIST diff --git a/libc/sysv/consts/EFAULT.s b/libc/sysv/consts/EFAULT.s index fb8451634..cfd358111 100644 --- a/libc/sysv/consts/EFAULT.s +++ b/libc/sysv/consts/EFAULT.s @@ -1,2 +1,3 @@ .include "o/libc/sysv/consts/syscon.internal.inc" .syscon errno,EFAULT,14,14,14,14,14,487 +.yoink kDos2Errno.EFAULT diff --git a/libc/sysv/consts/EHOSTUNREACH.s b/libc/sysv/consts/EHOSTUNREACH.s index 8d052854c..4bccf7461 100644 --- a/libc/sysv/consts/EHOSTUNREACH.s +++ b/libc/sysv/consts/EHOSTUNREACH.s @@ -1,2 +1,3 @@ .include "o/libc/sysv/consts/syscon.internal.inc" .syscon errno,EHOSTUNREACH,113,65,65,65,65,10065 +.yoink kDos2Errno.EHOSTUNREACH diff --git a/libc/sysv/consts/EINPROGRESS.s b/libc/sysv/consts/EINPROGRESS.s index f8a28b0b7..4fec07922 100644 --- a/libc/sysv/consts/EINPROGRESS.s +++ b/libc/sysv/consts/EINPROGRESS.s @@ -1,2 +1,3 @@ .include "o/libc/sysv/consts/syscon.internal.inc" .syscon errno,EINPROGRESS,115,36,36,36,36,10036 +.yoink kDos2Errno.EINPROGRESS diff --git a/libc/sysv/consts/EINTR.s b/libc/sysv/consts/EINTR.s index 448803d21..c5df19d6e 100644 --- a/libc/sysv/consts/EINTR.s +++ b/libc/sysv/consts/EINTR.s @@ -1,2 +1,3 @@ .include "o/libc/sysv/consts/syscon.internal.inc" .syscon errno,EINTR,4,4,4,4,4,10004 +.yoink kDos2Errno.EINTR diff --git a/libc/sysv/consts/EINVAL.s b/libc/sysv/consts/EINVAL.s index a22e5cdfe..fb562f261 100644 --- a/libc/sysv/consts/EINVAL.s +++ b/libc/sysv/consts/EINVAL.s @@ -1,2 +1,3 @@ .include "o/libc/sysv/consts/syscon.internal.inc" .syscon errno,EINVAL,22,22,22,22,22,87 +.yoink kDos2Errno.EINVAL diff --git a/libc/sysv/consts/EISCONN.s b/libc/sysv/consts/EISCONN.s index 1d5cd7cf6..ec8bbb1d0 100644 --- a/libc/sysv/consts/EISCONN.s +++ b/libc/sysv/consts/EISCONN.s @@ -1,2 +1,3 @@ .include "o/libc/sysv/consts/syscon.internal.inc" .syscon errno,EISCONN,106,56,56,56,56,10056 +.yoink kDos2Errno.EISCONN diff --git a/libc/sysv/consts/EMSGSIZE.s b/libc/sysv/consts/EMSGSIZE.s index 5b6452995..da41c40d8 100644 --- a/libc/sysv/consts/EMSGSIZE.s +++ b/libc/sysv/consts/EMSGSIZE.s @@ -1,2 +1,3 @@ .include "o/libc/sysv/consts/syscon.internal.inc" .syscon errno,EMSGSIZE,90,40,40,40,40,10040 +.yoink kDos2Errno.EMSGSIZE diff --git a/libc/sysv/consts/ENAMETOOLONG.s b/libc/sysv/consts/ENAMETOOLONG.s index b26df190c..d06bd106b 100644 --- a/libc/sysv/consts/ENAMETOOLONG.s +++ b/libc/sysv/consts/ENAMETOOLONG.s @@ -1,2 +1,3 @@ .include "o/libc/sysv/consts/syscon.internal.inc" .syscon errno,ENAMETOOLONG,36,63,63,63,63,10063 +.yoink kDos2Errno.ENAMETOOLONG diff --git a/libc/sysv/consts/ENETDOWN.s b/libc/sysv/consts/ENETDOWN.s index 6088aa025..a33ce04c8 100644 --- a/libc/sysv/consts/ENETDOWN.s +++ b/libc/sysv/consts/ENETDOWN.s @@ -1,2 +1,3 @@ .include "o/libc/sysv/consts/syscon.internal.inc" .syscon errno,ENETDOWN,100,50,50,50,50,10050 +.yoink kDos2Errno.ENETDOWN diff --git a/libc/sysv/consts/ENETUNREACH.s b/libc/sysv/consts/ENETUNREACH.s index 3dad30dff..51df610ff 100644 --- a/libc/sysv/consts/ENETUNREACH.s +++ b/libc/sysv/consts/ENETUNREACH.s @@ -1,2 +1,3 @@ .include "o/libc/sysv/consts/syscon.internal.inc" .syscon errno,ENETUNREACH,101,51,51,51,51,10051 +.yoink kDos2Errno.ENETUNREACH diff --git a/libc/sysv/consts/ENOENT.s b/libc/sysv/consts/ENOENT.s index 9e9f0bf33..2344662ca 100644 --- a/libc/sysv/consts/ENOENT.s +++ b/libc/sysv/consts/ENOENT.s @@ -1,2 +1,3 @@ .include "o/libc/sysv/consts/syscon.internal.inc" .syscon errno,ENOENT,2,2,2,2,2,2 +.yoink kDos2Errno.ENOENT diff --git a/libc/sysv/consts/ENOMEM.s b/libc/sysv/consts/ENOMEM.s index 7a2748ac1..d83dba57d 100644 --- a/libc/sysv/consts/ENOMEM.s +++ b/libc/sysv/consts/ENOMEM.s @@ -1,2 +1,3 @@ .include "o/libc/sysv/consts/syscon.internal.inc" .syscon errno,ENOMEM,12,12,12,12,12,14 +.yoink kDos2Errno.ENOMEM diff --git a/libc/sysv/consts/ENOSYS.s b/libc/sysv/consts/ENOSYS.s index a7e49865a..046d38577 100644 --- a/libc/sysv/consts/ENOSYS.s +++ b/libc/sysv/consts/ENOSYS.s @@ -1,2 +1,3 @@ .include "o/libc/sysv/consts/syscon.internal.inc" .syscon errno,ENOSYS,38,78,78,78,78,1 +.yoink kDos2Errno.ENOSYS diff --git a/libc/sysv/consts/ENOTEMPTY.s b/libc/sysv/consts/ENOTEMPTY.s index 432fc27b5..2005367a8 100644 --- a/libc/sysv/consts/ENOTEMPTY.s +++ b/libc/sysv/consts/ENOTEMPTY.s @@ -1,2 +1,3 @@ .include "o/libc/sysv/consts/syscon.internal.inc" .syscon errno,ENOTEMPTY,39,66,66,66,66,145 +.yoink kDos2Errno.ENOTEMPTY diff --git a/libc/sysv/consts/ENOTSUP.s b/libc/sysv/consts/ENOTSUP.s index 39df5ea3d..41c63cb9e 100644 --- a/libc/sysv/consts/ENOTSUP.s +++ b/libc/sysv/consts/ENOTSUP.s @@ -1,2 +1,3 @@ .include "o/libc/sysv/consts/syscon.internal.inc" .syscon errno,ENOTSUP,95,45,45,91,86,10045 +.yoink kDos2Errno.ENOTSUP diff --git a/libc/sysv/consts/EPIPE.s b/libc/sysv/consts/EPIPE.s index 05ffc17d7..f4e66907a 100644 --- a/libc/sysv/consts/EPIPE.s +++ b/libc/sysv/consts/EPIPE.s @@ -1,2 +1,3 @@ .include "o/libc/sysv/consts/syscon.internal.inc" .syscon errno,EPIPE,32,32,32,32,32,109 +.yoink kDos2Errno.EPIPE diff --git a/libc/sysv/consts/ETIMEDOUT.s b/libc/sysv/consts/ETIMEDOUT.s index c24c2bf62..7bbeff37d 100644 --- a/libc/sysv/consts/ETIMEDOUT.s +++ b/libc/sysv/consts/ETIMEDOUT.s @@ -1,2 +1,3 @@ .include "o/libc/sysv/consts/syscon.internal.inc" .syscon errno,ETIMEDOUT,110,60,60,60,60,10060 +.yoink kDos2Errno.ETIMEDOUT diff --git a/libc/sysv/consts/EWOULDBLOCK.s b/libc/sysv/consts/EWOULDBLOCK.s index 01ce27aa5..9a4b18ba2 100644 --- a/libc/sysv/consts/EWOULDBLOCK.s +++ b/libc/sysv/consts/EWOULDBLOCK.s @@ -1,2 +1,3 @@ .include "o/libc/sysv/consts/syscon.internal.inc" .syscon compat,EWOULDBLOCK,11,35,35,35,35,10035 +.yoink kDos2Errno.EWOULDBLOCK diff --git a/libc/sysv/dos2errno.sh b/libc/sysv/dos2errno.sh new file mode 100755 index 000000000..a9ca19cbb --- /dev/null +++ b/libc/sysv/dos2errno.sh @@ -0,0 +1,173 @@ +/*bin/echo ' -*- mode:sh; indent-tabs-mode:nil; tab-width:8; coding:utf-8 -*-│ +│vi: set net ft=sh ts=2 sts=2 sw=2 fenc=utf-8 :vi│ +╞══════════════════════════════════════════════════════════════════════════════╡ +│ Copyright 2020 Justine Alexandra Roberts Tunney │ +│ │ +│ Permission to use, copy, modify, and/or distribute this software for │ +│ any purpose with or without fee is hereby granted, provided that the │ +│ above copyright notice and this permission notice appear in all copies. │ +│ │ +│ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL │ +│ WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED │ +│ WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE │ +│ AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL │ +│ DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR │ +│ PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER │ +│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR │ +│ PERFORMANCE OF THIS SOFTWARE. │ +╚────────────────────────────────────────────────────────────────'>/dev/null #*/ +dir=libc/sysv/dos2errno +. libc/sysv/gen.sh + +# # DOS ERRNO CANONICAL MAPPINGS +# # +# # These are defined by consts.sh. +# # They're here too as a reminder. +# # +# dos kNtErrorInvalidFunction ENOSYS # in consts.sh +# dos kNtErrorFileNotFound ENOENT # in consts.sh +# dos kNtErrorPathNotFound ENOTDIR # in consts.sh +# dos kNtErrorTooManyOpenFiles EMFILE # in consts.sh +# dos kNtErrorTooManyDescriptors ENFILE # in consts.sh +# dos kNtErrorTooManyLinks EMLINK # in consts.sh +# dos kNtErrorAccessDenied EACCES # in consts.sh +# dos kNtErrorInvalidHandle EBADF # in consts.sh +# dos kNtErrorInvalidAccess EPERM # in consts.sh +# dos kNtErrorNotEnoughQuota EDQUOT # in consts.sh +# dos kNtErrorSeek ESPIPE # in consts.sh +# dos kNtErrorNotDosDisk ENOTBLK # in consts.sh +# dos kNtErrorFileExists EEXIST # in consts.sh +# dos kNtErrorInvalidParameter EINVAL # in consts.sh +# dos kNtErrorOutofmemory ENOMEM # in consts.sh +# dos kNtErrorBrokenPipe EPIPE # in consts.sh +# dos kNtErrorWaitNoChildren ECHILD # in consts.sh +# dos kNtErrorPathBusy ETXTBSY # in consts.sh +# dos kNtErrorBusy EBUSY # in consts.sh +# dos kNtErrorAlreadyExists EEXIST # in consts.sh +# dos kNtErrorBadExeFormat ENOEXEC # in consts.sh +# dos kNtErrorFileTooLarge EFBIG # in consts.sh +# dos kNtErrorDirectoryNotSupported EISDIR # in consts.sh +# dos kNtErrorInvalidAddress EFAULT # in consts.sh +# dos kNtErrorThreadNotInProcess ESRCH # in consts.sh +# dos kNtErrorNoMediaInDrive ENXIO # in consts.sh +# dos kNtErrorIoDevice EIO # in consts.sh +# dos kNtErrorSerialNoDevice ENOTTY # in consts.sh +# dos kNtErrorPossibleDeadlock EDEADLK # in consts.sh +# dos kNtErrorBadDevice ENODEV # in consts.sh +# dos kNtErrorInvalidCommandLine E2BIG # in consts.sh +# dos kNtErrorFileReadOnly EROFS # in consts.sh +# dos kNtErrorNoData ENODATA # in consts.sh +# dos WSAEPROCLIM EPROCLIM # in consts.sh +# dos WSAESHUTDOWN ESHUTDOWN # in consts.sh +# dos WSAEINPROGRESS EINPROGRESS # in consts.sh +# dos WSAENETDOWN ENETDOWN # in consts.sh +# dos WSAENETUNREACH ENETUNREACH # in consts.sh +# dos WSAENETRESET ENETRESET # in consts.sh +# dos WSAEUSERS EUSERS # in consts.sh +# dos WSAENOTSOCK ENOTSOCK # in consts.sh +# dos WSAEDESTADDRREQ EDESTADDRREQ # in consts.sh +# dos WSAEMSGSIZE EMSGSIZE # in consts.sh +# dos WSAEPROTOTYPE EPROTOTYPE # in consts.sh +# dos WSAENOPROTOOPT ENOPROTOOPT # in consts.sh +# dos WSAEPROTONOSUPPORT EPROTONOSUPPORT # in consts.sh +# dos WSAESOCKTNOSUPPORT ESOCKTNOSUPPORT # in consts.sh +# dos WSAEOPNOTSUPP ENOTSUP # in consts.sh +# dos WSAEOPNOTSUPP EOPNOTSUPP # in consts.sh +# dos WSAEPFNOSUPPORT EPFNOSUPPORT # in consts.sh +# dos WSAEAFNOSUPPORT EAFNOSUPPORT # in consts.sh +# dos WSAEADDRINUSE EADDRINUSE # in consts.sh +# dos WSAEADDRNOTAVAIL EADDRNOTAVAIL # in consts.sh +# dos WSAECONNABORTED ECONNABORTED # in consts.sh +# dos WSAECONNRESET ECONNRESET # in consts.sh +# dos WSAENOBUFS ENOBUFS # in consts.sh +# dos WSAEISCONN EISCONN # in consts.sh +# dos WSAENOTCONN ENOTCONN # in consts.sh +# dos WSAESHUTDOWN ESHUTDOWN # in consts.sh +# dos WSAETOOMANYREFS ETOOMANYREFS # in consts.sh +# dos WSAETIMEDOUT ETIMEDOUT # in consts.sh +# dos WSAECONNREFUSED ECONNREFUSED # in consts.sh +# dos WSAEHOSTDOWN EHOSTDOWN # in consts.sh +# dos WSAEHOSTUNREACH EHOSTUNREACH # in consts.sh +# dos WSAEALREADY EALREADY # in consts.sh +# dos WSAESTALE ESTALE # in consts.sh +# dos WSAEREMOTE EREMOTE # in consts.sh +# dos WSAEINTR EINTR # in consts.sh + +# DOS ERRNO MULTIMAPPINGS +# +# These mappings are defined in a decentralized section which are +# grouped at linktime into kDos2Errno. (libc/intrin/kdos2errno.S) +# +dos kNtErrorInvalidTargetHandle EBADF +dos kNtErrorDirectAccessHandle EBADF +dos kNtErrorModNotFound ENOSYS +dos kNtErrorBadCommand EACCES +dos kNtErrorBadLength EACCES +dos kNtErrorBadNetpath ENOENT +dos kNtErrorBadNetName ENOENT +dos kNtErrorBadPathname ENOENT +dos kNtErrorBadNetResp ENETDOWN +dos kNtErrorFileExists EEXIST +dos kNtErrorCannotMake EACCES +dos kNtErrorCommitmentLimit ENOMEM +dos kNtErrorConnectionAborted ECONNABORTED +dos kNtErrorConnectionActive EISCONN +dos kNtErrorConnectionRefused ECONNREFUSED +dos kNtErrorCrc EACCES +dos kNtErrorDirNotEmpty ENOTEMPTY +dos kNtErrorDupName EADDRINUSE +dos kNtErrorFilenameExcedRange ENAMETOOLONG +dos kNtErrorGenFailure EACCES +dos kNtErrorGracefulDisconnect EPIPE +dos kNtErrorHostDown EHOSTUNREACH +dos kNtErrorHostUnreachable EHOSTUNREACH +dos kNtErrorInsufficientBuffer EFAULT +dos kNtErrorNoaccess EFAULT +dos kNtErrorInvalidAddress EADDRNOTAVAIL +dos kNtErrorNotAReparsePoint EINVAL +dos kNtErrorInvalidFunction EINVAL +dos kNtErrorInvalidNetname EADDRNOTAVAIL +dos kNtErrorInvalidUserBuffer EMSGSIZE +dos kNtErrorIoPending EINPROGRESS +dos kNtErrorLockViolation EACCES +dos kNtErrorMoreData EMSGSIZE +dos kNtErrorNetnameDeleted ECONNABORTED +dos kNtErrorNetworkAccessDenied EACCES +dos kNtErrorNetworkBusy ENETDOWN +dos kNtErrorNetworkUnreachable ENETUNREACH +dos kNtErrorNonpagedSystemResources ENOMEM +dos kNtErrorNotEnoughMemory ENOMEM +dos kNtErrorNotEnoughQuota ENOMEM +dos kNtErrorNotFound ENOENT +dos kNtErrorNotLocked EACCES +dos kNtErrorNotReady EACCES +dos kNtErrorNotSupported ENOTSUP +dos kNtErrorNoMoreFiles ENOENT +dos kNtErrorNoSystemResources ENOMEM +dos kNtErrorOperationAborted EINTR +dos kNtErrorOutOfPaper EACCES +dos kNtErrorPagedSystemResources ENOMEM +dos kNtErrorPagefileQuota ENOMEM +dos kNtErrorPipeNotConnected EPIPE +dos kNtErrorPortUnreachable ECONNRESET +dos kNtErrorProtocolUnreachable ENETUNREACH +dos kNtErrorRemNotList ECONNREFUSED +dos kNtErrorRequestAborted EINTR +dos kNtErrorReqNotAccep EWOULDBLOCK +dos kNtErrorSectorNotFound EACCES +dos kNtErrorSemTimeout ETIMEDOUT +dos kNtErrorSharingViolation EACCES +dos kNtErrorTooManyNames ENOMEM +dos kNtErrorUnexpNetErr ECONNABORTED +dos kNtErrorWorkingSetQuota ENOMEM +dos kNtErrorWriteProtect EACCES +dos kNtErrorWrongDisk EACCES +dos WSAEACCES EACCES +dos WSAEDISCON EPIPE +dos WSAEFAULT EFAULT +dos WSAEINVAL EINVAL +dos WSAEDQUOT EDQUOT +dos WSAEPROCLIM ENOMEM +dos WSANOTINITIALISED ENETDOWN +dos WSASYSNOTREADY ENETDOWN +dos WSAVERNOTSUPPORTED ENOSYS diff --git a/libc/sysv/dos2errno/EACCES.S b/libc/sysv/dos2errno/EACCES.S new file mode 100644 index 000000000..71d4e1264 --- /dev/null +++ b/libc/sysv/dos2errno/EACCES.S @@ -0,0 +1,25 @@ +// generated by libc/sysv/dos2errno.sh +#include "libc/nt/errors.h" + .macro .e doscode systemv + .short \doscode + .long \systemv + .endm + .section .sort.rodata.dos2errno.2,"a",@progbits + .globl kDos2Errno.EACCES + .type kDos2Errno.EACCES,@object +kDos2Errno.EACCES: + .e kNtErrorBadCommand,EACCES + .e kNtErrorBadLength,EACCES + .e kNtErrorCannotMake,EACCES + .e kNtErrorCrc,EACCES + .e kNtErrorGenFailure,EACCES + .e kNtErrorLockViolation,EACCES + .e kNtErrorNetworkAccessDenied,EACCES + .e kNtErrorNotLocked,EACCES + .e kNtErrorNotReady,EACCES + .e kNtErrorOutOfPaper,EACCES + .e kNtErrorSectorNotFound,EACCES + .e kNtErrorSharingViolation,EACCES + .e kNtErrorWriteProtect,EACCES + .e kNtErrorWrongDisk,EACCES + .e WSAEACCES,EACCES diff --git a/libc/sysv/dos2errno/EADDRINUSE.S b/libc/sysv/dos2errno/EADDRINUSE.S new file mode 100644 index 000000000..32a1a6491 --- /dev/null +++ b/libc/sysv/dos2errno/EADDRINUSE.S @@ -0,0 +1,11 @@ +// generated by libc/sysv/dos2errno.sh +#include "libc/nt/errors.h" + .macro .e doscode systemv + .short \doscode + .long \systemv + .endm + .section .sort.rodata.dos2errno.2,"a",@progbits + .globl kDos2Errno.EADDRINUSE + .type kDos2Errno.EADDRINUSE,@object +kDos2Errno.EADDRINUSE: + .e kNtErrorDupName,EADDRINUSE diff --git a/libc/sysv/dos2errno/EADDRNOTAVAIL.S b/libc/sysv/dos2errno/EADDRNOTAVAIL.S new file mode 100644 index 000000000..e33fb13e8 --- /dev/null +++ b/libc/sysv/dos2errno/EADDRNOTAVAIL.S @@ -0,0 +1,12 @@ +// generated by libc/sysv/dos2errno.sh +#include "libc/nt/errors.h" + .macro .e doscode systemv + .short \doscode + .long \systemv + .endm + .section .sort.rodata.dos2errno.2,"a",@progbits + .globl kDos2Errno.EADDRNOTAVAIL + .type kDos2Errno.EADDRNOTAVAIL,@object +kDos2Errno.EADDRNOTAVAIL: + .e kNtErrorInvalidAddress,EADDRNOTAVAIL + .e kNtErrorInvalidNetname,EADDRNOTAVAIL diff --git a/libc/sysv/dos2errno/EBADF.S b/libc/sysv/dos2errno/EBADF.S new file mode 100644 index 000000000..ce6690a71 --- /dev/null +++ b/libc/sysv/dos2errno/EBADF.S @@ -0,0 +1,12 @@ +// generated by libc/sysv/dos2errno.sh +#include "libc/nt/errors.h" + .macro .e doscode systemv + .short \doscode + .long \systemv + .endm + .section .sort.rodata.dos2errno.2,"a",@progbits + .globl kDos2Errno.EBADF + .type kDos2Errno.EBADF,@object +kDos2Errno.EBADF: + .e kNtErrorInvalidTargetHandle,EBADF + .e kNtErrorDirectAccessHandle,EBADF diff --git a/libc/sysv/dos2errno/ECONNABORTED.S b/libc/sysv/dos2errno/ECONNABORTED.S new file mode 100644 index 000000000..a437be229 --- /dev/null +++ b/libc/sysv/dos2errno/ECONNABORTED.S @@ -0,0 +1,13 @@ +// generated by libc/sysv/dos2errno.sh +#include "libc/nt/errors.h" + .macro .e doscode systemv + .short \doscode + .long \systemv + .endm + .section .sort.rodata.dos2errno.2,"a",@progbits + .globl kDos2Errno.ECONNABORTED + .type kDos2Errno.ECONNABORTED,@object +kDos2Errno.ECONNABORTED: + .e kNtErrorConnectionAborted,ECONNABORTED + .e kNtErrorNetnameDeleted,ECONNABORTED + .e kNtErrorUnexpNetErr,ECONNABORTED diff --git a/libc/sysv/dos2errno/ECONNREFUSED.S b/libc/sysv/dos2errno/ECONNREFUSED.S new file mode 100644 index 000000000..4e11016ef --- /dev/null +++ b/libc/sysv/dos2errno/ECONNREFUSED.S @@ -0,0 +1,12 @@ +// generated by libc/sysv/dos2errno.sh +#include "libc/nt/errors.h" + .macro .e doscode systemv + .short \doscode + .long \systemv + .endm + .section .sort.rodata.dos2errno.2,"a",@progbits + .globl kDos2Errno.ECONNREFUSED + .type kDos2Errno.ECONNREFUSED,@object +kDos2Errno.ECONNREFUSED: + .e kNtErrorConnectionRefused,ECONNREFUSED + .e kNtErrorRemNotList,ECONNREFUSED diff --git a/libc/sysv/dos2errno/ECONNRESET.S b/libc/sysv/dos2errno/ECONNRESET.S new file mode 100644 index 000000000..e77f5698d --- /dev/null +++ b/libc/sysv/dos2errno/ECONNRESET.S @@ -0,0 +1,11 @@ +// generated by libc/sysv/dos2errno.sh +#include "libc/nt/errors.h" + .macro .e doscode systemv + .short \doscode + .long \systemv + .endm + .section .sort.rodata.dos2errno.2,"a",@progbits + .globl kDos2Errno.ECONNRESET + .type kDos2Errno.ECONNRESET,@object +kDos2Errno.ECONNRESET: + .e kNtErrorPortUnreachable,ECONNRESET diff --git a/libc/sysv/dos2errno/EDQUOT.S b/libc/sysv/dos2errno/EDQUOT.S new file mode 100644 index 000000000..160f01fa3 --- /dev/null +++ b/libc/sysv/dos2errno/EDQUOT.S @@ -0,0 +1,11 @@ +// generated by libc/sysv/dos2errno.sh +#include "libc/nt/errors.h" + .macro .e doscode systemv + .short \doscode + .long \systemv + .endm + .section .sort.rodata.dos2errno.2,"a",@progbits + .globl kDos2Errno.EDQUOT + .type kDos2Errno.EDQUOT,@object +kDos2Errno.EDQUOT: + .e WSAEDQUOT,EDQUOT diff --git a/libc/sysv/dos2errno/EEXIST.S b/libc/sysv/dos2errno/EEXIST.S new file mode 100644 index 000000000..039fd6fbb --- /dev/null +++ b/libc/sysv/dos2errno/EEXIST.S @@ -0,0 +1,11 @@ +// generated by libc/sysv/dos2errno.sh +#include "libc/nt/errors.h" + .macro .e doscode systemv + .short \doscode + .long \systemv + .endm + .section .sort.rodata.dos2errno.2,"a",@progbits + .globl kDos2Errno.EEXIST + .type kDos2Errno.EEXIST,@object +kDos2Errno.EEXIST: + .e kNtErrorFileExists,EEXIST diff --git a/libc/sysv/dos2errno/EFAULT.S b/libc/sysv/dos2errno/EFAULT.S new file mode 100644 index 000000000..1a8f5f7f5 --- /dev/null +++ b/libc/sysv/dos2errno/EFAULT.S @@ -0,0 +1,13 @@ +// generated by libc/sysv/dos2errno.sh +#include "libc/nt/errors.h" + .macro .e doscode systemv + .short \doscode + .long \systemv + .endm + .section .sort.rodata.dos2errno.2,"a",@progbits + .globl kDos2Errno.EFAULT + .type kDos2Errno.EFAULT,@object +kDos2Errno.EFAULT: + .e kNtErrorInsufficientBuffer,EFAULT + .e kNtErrorNoaccess,EFAULT + .e WSAEFAULT,EFAULT diff --git a/libc/sysv/dos2errno/EHOSTUNREACH.S b/libc/sysv/dos2errno/EHOSTUNREACH.S new file mode 100644 index 000000000..12dc9aa03 --- /dev/null +++ b/libc/sysv/dos2errno/EHOSTUNREACH.S @@ -0,0 +1,12 @@ +// generated by libc/sysv/dos2errno.sh +#include "libc/nt/errors.h" + .macro .e doscode systemv + .short \doscode + .long \systemv + .endm + .section .sort.rodata.dos2errno.2,"a",@progbits + .globl kDos2Errno.EHOSTUNREACH + .type kDos2Errno.EHOSTUNREACH,@object +kDos2Errno.EHOSTUNREACH: + .e kNtErrorHostDown,EHOSTUNREACH + .e kNtErrorHostUnreachable,EHOSTUNREACH diff --git a/libc/sysv/dos2errno/EINPROGRESS.S b/libc/sysv/dos2errno/EINPROGRESS.S new file mode 100644 index 000000000..80bf427c5 --- /dev/null +++ b/libc/sysv/dos2errno/EINPROGRESS.S @@ -0,0 +1,11 @@ +// generated by libc/sysv/dos2errno.sh +#include "libc/nt/errors.h" + .macro .e doscode systemv + .short \doscode + .long \systemv + .endm + .section .sort.rodata.dos2errno.2,"a",@progbits + .globl kDos2Errno.EINPROGRESS + .type kDos2Errno.EINPROGRESS,@object +kDos2Errno.EINPROGRESS: + .e kNtErrorIoPending,EINPROGRESS diff --git a/libc/sysv/dos2errno/EINTR.S b/libc/sysv/dos2errno/EINTR.S new file mode 100644 index 000000000..927e3bdb6 --- /dev/null +++ b/libc/sysv/dos2errno/EINTR.S @@ -0,0 +1,12 @@ +// generated by libc/sysv/dos2errno.sh +#include "libc/nt/errors.h" + .macro .e doscode systemv + .short \doscode + .long \systemv + .endm + .section .sort.rodata.dos2errno.2,"a",@progbits + .globl kDos2Errno.EINTR + .type kDos2Errno.EINTR,@object +kDos2Errno.EINTR: + .e kNtErrorOperationAborted,EINTR + .e kNtErrorRequestAborted,EINTR diff --git a/libc/sysv/dos2errno/EINVAL.S b/libc/sysv/dos2errno/EINVAL.S new file mode 100644 index 000000000..1f4f528ee --- /dev/null +++ b/libc/sysv/dos2errno/EINVAL.S @@ -0,0 +1,13 @@ +// generated by libc/sysv/dos2errno.sh +#include "libc/nt/errors.h" + .macro .e doscode systemv + .short \doscode + .long \systemv + .endm + .section .sort.rodata.dos2errno.2,"a",@progbits + .globl kDos2Errno.EINVAL + .type kDos2Errno.EINVAL,@object +kDos2Errno.EINVAL: + .e kNtErrorNotAReparsePoint,EINVAL + .e kNtErrorInvalidFunction,EINVAL + .e WSAEINVAL,EINVAL diff --git a/libc/sysv/dos2errno/EISCONN.S b/libc/sysv/dos2errno/EISCONN.S new file mode 100644 index 000000000..eff148e71 --- /dev/null +++ b/libc/sysv/dos2errno/EISCONN.S @@ -0,0 +1,11 @@ +// generated by libc/sysv/dos2errno.sh +#include "libc/nt/errors.h" + .macro .e doscode systemv + .short \doscode + .long \systemv + .endm + .section .sort.rodata.dos2errno.2,"a",@progbits + .globl kDos2Errno.EISCONN + .type kDos2Errno.EISCONN,@object +kDos2Errno.EISCONN: + .e kNtErrorConnectionActive,EISCONN diff --git a/libc/sysv/dos2errno/EMSGSIZE.S b/libc/sysv/dos2errno/EMSGSIZE.S new file mode 100644 index 000000000..d1cc178e2 --- /dev/null +++ b/libc/sysv/dos2errno/EMSGSIZE.S @@ -0,0 +1,12 @@ +// generated by libc/sysv/dos2errno.sh +#include "libc/nt/errors.h" + .macro .e doscode systemv + .short \doscode + .long \systemv + .endm + .section .sort.rodata.dos2errno.2,"a",@progbits + .globl kDos2Errno.EMSGSIZE + .type kDos2Errno.EMSGSIZE,@object +kDos2Errno.EMSGSIZE: + .e kNtErrorInvalidUserBuffer,EMSGSIZE + .e kNtErrorMoreData,EMSGSIZE diff --git a/libc/sysv/dos2errno/ENAMETOOLONG.S b/libc/sysv/dos2errno/ENAMETOOLONG.S new file mode 100644 index 000000000..9d0090fca --- /dev/null +++ b/libc/sysv/dos2errno/ENAMETOOLONG.S @@ -0,0 +1,11 @@ +// generated by libc/sysv/dos2errno.sh +#include "libc/nt/errors.h" + .macro .e doscode systemv + .short \doscode + .long \systemv + .endm + .section .sort.rodata.dos2errno.2,"a",@progbits + .globl kDos2Errno.ENAMETOOLONG + .type kDos2Errno.ENAMETOOLONG,@object +kDos2Errno.ENAMETOOLONG: + .e kNtErrorFilenameExcedRange,ENAMETOOLONG diff --git a/libc/sysv/dos2errno/ENETDOWN.S b/libc/sysv/dos2errno/ENETDOWN.S new file mode 100644 index 000000000..039f89079 --- /dev/null +++ b/libc/sysv/dos2errno/ENETDOWN.S @@ -0,0 +1,14 @@ +// generated by libc/sysv/dos2errno.sh +#include "libc/nt/errors.h" + .macro .e doscode systemv + .short \doscode + .long \systemv + .endm + .section .sort.rodata.dos2errno.2,"a",@progbits + .globl kDos2Errno.ENETDOWN + .type kDos2Errno.ENETDOWN,@object +kDos2Errno.ENETDOWN: + .e kNtErrorBadNetResp,ENETDOWN + .e kNtErrorNetworkBusy,ENETDOWN + .e WSANOTINITIALISED,ENETDOWN + .e WSASYSNOTREADY,ENETDOWN diff --git a/libc/sysv/dos2errno/ENETUNREACH.S b/libc/sysv/dos2errno/ENETUNREACH.S new file mode 100644 index 000000000..37ada58a5 --- /dev/null +++ b/libc/sysv/dos2errno/ENETUNREACH.S @@ -0,0 +1,12 @@ +// generated by libc/sysv/dos2errno.sh +#include "libc/nt/errors.h" + .macro .e doscode systemv + .short \doscode + .long \systemv + .endm + .section .sort.rodata.dos2errno.2,"a",@progbits + .globl kDos2Errno.ENETUNREACH + .type kDos2Errno.ENETUNREACH,@object +kDos2Errno.ENETUNREACH: + .e kNtErrorNetworkUnreachable,ENETUNREACH + .e kNtErrorProtocolUnreachable,ENETUNREACH diff --git a/libc/sysv/dos2errno/ENOENT.S b/libc/sysv/dos2errno/ENOENT.S new file mode 100644 index 000000000..74b0890d1 --- /dev/null +++ b/libc/sysv/dos2errno/ENOENT.S @@ -0,0 +1,15 @@ +// generated by libc/sysv/dos2errno.sh +#include "libc/nt/errors.h" + .macro .e doscode systemv + .short \doscode + .long \systemv + .endm + .section .sort.rodata.dos2errno.2,"a",@progbits + .globl kDos2Errno.ENOENT + .type kDos2Errno.ENOENT,@object +kDos2Errno.ENOENT: + .e kNtErrorBadNetpath,ENOENT + .e kNtErrorBadNetName,ENOENT + .e kNtErrorBadPathname,ENOENT + .e kNtErrorNotFound,ENOENT + .e kNtErrorNoMoreFiles,ENOENT diff --git a/libc/sysv/dos2errno/ENOMEM.S b/libc/sysv/dos2errno/ENOMEM.S new file mode 100644 index 000000000..0bee86f34 --- /dev/null +++ b/libc/sysv/dos2errno/ENOMEM.S @@ -0,0 +1,20 @@ +// generated by libc/sysv/dos2errno.sh +#include "libc/nt/errors.h" + .macro .e doscode systemv + .short \doscode + .long \systemv + .endm + .section .sort.rodata.dos2errno.2,"a",@progbits + .globl kDos2Errno.ENOMEM + .type kDos2Errno.ENOMEM,@object +kDos2Errno.ENOMEM: + .e kNtErrorCommitmentLimit,ENOMEM + .e kNtErrorNonpagedSystemResources,ENOMEM + .e kNtErrorNotEnoughMemory,ENOMEM + .e kNtErrorNotEnoughQuota,ENOMEM + .e kNtErrorNoSystemResources,ENOMEM + .e kNtErrorPagedSystemResources,ENOMEM + .e kNtErrorPagefileQuota,ENOMEM + .e kNtErrorTooManyNames,ENOMEM + .e kNtErrorWorkingSetQuota,ENOMEM + .e WSAEPROCLIM,ENOMEM diff --git a/libc/sysv/dos2errno/ENOSYS.S b/libc/sysv/dos2errno/ENOSYS.S new file mode 100644 index 000000000..145df291c --- /dev/null +++ b/libc/sysv/dos2errno/ENOSYS.S @@ -0,0 +1,12 @@ +// generated by libc/sysv/dos2errno.sh +#include "libc/nt/errors.h" + .macro .e doscode systemv + .short \doscode + .long \systemv + .endm + .section .sort.rodata.dos2errno.2,"a",@progbits + .globl kDos2Errno.ENOSYS + .type kDos2Errno.ENOSYS,@object +kDos2Errno.ENOSYS: + .e kNtErrorModNotFound,ENOSYS + .e WSAVERNOTSUPPORTED,ENOSYS diff --git a/libc/sysv/dos2errno/ENOTEMPTY.S b/libc/sysv/dos2errno/ENOTEMPTY.S new file mode 100644 index 000000000..e1a33ba6d --- /dev/null +++ b/libc/sysv/dos2errno/ENOTEMPTY.S @@ -0,0 +1,11 @@ +// generated by libc/sysv/dos2errno.sh +#include "libc/nt/errors.h" + .macro .e doscode systemv + .short \doscode + .long \systemv + .endm + .section .sort.rodata.dos2errno.2,"a",@progbits + .globl kDos2Errno.ENOTEMPTY + .type kDos2Errno.ENOTEMPTY,@object +kDos2Errno.ENOTEMPTY: + .e kNtErrorDirNotEmpty,ENOTEMPTY diff --git a/libc/sysv/dos2errno/ENOTSUP.S b/libc/sysv/dos2errno/ENOTSUP.S new file mode 100644 index 000000000..509536622 --- /dev/null +++ b/libc/sysv/dos2errno/ENOTSUP.S @@ -0,0 +1,11 @@ +// generated by libc/sysv/dos2errno.sh +#include "libc/nt/errors.h" + .macro .e doscode systemv + .short \doscode + .long \systemv + .endm + .section .sort.rodata.dos2errno.2,"a",@progbits + .globl kDos2Errno.ENOTSUP + .type kDos2Errno.ENOTSUP,@object +kDos2Errno.ENOTSUP: + .e kNtErrorNotSupported,ENOTSUP diff --git a/libc/sysv/dos2errno/EPIPE.S b/libc/sysv/dos2errno/EPIPE.S new file mode 100644 index 000000000..b20c5eac0 --- /dev/null +++ b/libc/sysv/dos2errno/EPIPE.S @@ -0,0 +1,13 @@ +// generated by libc/sysv/dos2errno.sh +#include "libc/nt/errors.h" + .macro .e doscode systemv + .short \doscode + .long \systemv + .endm + .section .sort.rodata.dos2errno.2,"a",@progbits + .globl kDos2Errno.EPIPE + .type kDos2Errno.EPIPE,@object +kDos2Errno.EPIPE: + .e kNtErrorGracefulDisconnect,EPIPE + .e kNtErrorPipeNotConnected,EPIPE + .e WSAEDISCON,EPIPE diff --git a/libc/sysv/dos2errno/ETIMEDOUT.S b/libc/sysv/dos2errno/ETIMEDOUT.S new file mode 100644 index 000000000..816f72a94 --- /dev/null +++ b/libc/sysv/dos2errno/ETIMEDOUT.S @@ -0,0 +1,11 @@ +// generated by libc/sysv/dos2errno.sh +#include "libc/nt/errors.h" + .macro .e doscode systemv + .short \doscode + .long \systemv + .endm + .section .sort.rodata.dos2errno.2,"a",@progbits + .globl kDos2Errno.ETIMEDOUT + .type kDos2Errno.ETIMEDOUT,@object +kDos2Errno.ETIMEDOUT: + .e kNtErrorSemTimeout,ETIMEDOUT diff --git a/libc/sysv/dos2errno/EWOULDBLOCK.S b/libc/sysv/dos2errno/EWOULDBLOCK.S new file mode 100644 index 000000000..6e20c2ccf --- /dev/null +++ b/libc/sysv/dos2errno/EWOULDBLOCK.S @@ -0,0 +1,11 @@ +// generated by libc/sysv/dos2errno.sh +#include "libc/nt/errors.h" + .macro .e doscode systemv + .short \doscode + .long \systemv + .endm + .section .sort.rodata.dos2errno.2,"a",@progbits + .globl kDos2Errno.EWOULDBLOCK + .type kDos2Errno.EWOULDBLOCK,@object +kDos2Errno.EWOULDBLOCK: + .e kNtErrorReqNotAccep,EWOULDBLOCK diff --git a/libc/sysv/gen.sh b/libc/sysv/gen.sh index fe3def4ea..d99f1b737 100644 --- a/libc/sysv/gen.sh +++ b/libc/sysv/gen.sh @@ -29,9 +29,17 @@ scall() { } syscon() { + if [ -f "libc/sysv/dos2errno/${2/$/-}.S" ]; then + EXT=".S" + else + EXT=".s" + fi { echo ".include \"o/libc/sysv/consts/syscon.internal.inc\"" echo ".syscon" "$*" + if [ -f "libc/sysv/dos2errno/${2/$/-}.S" ]; then + echo ".yoink kDos2Errno.${2/$/-}" + fi } >"$dir/${2/$/-}.s" } @@ -59,3 +67,23 @@ errfun() { ' "$ERRNO" "$NAME" } >"$dir/${1/$/-}.S" } + +dos() { + DOS="$1" + UNIX="$2" + if ! [ -f "$dir/${UNIX/$/-}.S" ]; then + cat <"$dir/${UNIX/$/-}.S" +// generated by libc/sysv/dos2errno.sh +#include "libc/nt/errors.h" + .macro .e doscode systemv + .short \doscode + .long \systemv + .endm + .section .sort.rodata.dos2errno.2,"a",@progbits + .globl kDos2Errno.${UNIX} + .type kDos2Errno.${UNIX},@object +kDos2Errno.${UNIX}: +EOF + fi + printf %s\\n " .e ${DOS},${UNIX}" >>"$dir/${UNIX/$/-}.S" +} diff --git a/libc/sysv/sysv.mk b/libc/sysv/sysv.mk index 238a6434c..bb7578485 100644 --- a/libc/sysv/sysv.mk +++ b/libc/sysv/sysv.mk @@ -43,7 +43,8 @@ LIBC_SYSV_A_FILES := \ libc/sysv/strace.greg.c \ libc/sysv/describeos.greg.c \ $(wildcard libc/sysv/consts/*) \ - $(wildcard libc/sysv/errfuns/*) + $(wildcard libc/sysv/errfuns/*) \ + $(wildcard libc/sysv/dos2errno/*) LIBC_SYSV_A_SRCS = \ $(LIBC_SYSV_A_SRCS_A) \ diff --git a/test/libc/intrin/dos2errno_test.c b/test/libc/intrin/dos2errno_test.c index 391f900c4..db4b6ccda 100644 --- a/test/libc/intrin/dos2errno_test.c +++ b/test/libc/intrin/dos2errno_test.c @@ -17,11 +17,11 @@ │ PERFORMANCE OF THIS SOFTWARE. │ ╚─────────────────────────────────────────────────────────────────────────────*/ #include "libc/errno.h" -#include "libc/fmt/fmt.h" +#include "libc/intrin/dos2errno.internal.h" +#include "libc/intrin/kprintf.h" #include "libc/nt/errors.h" #include "libc/sock/internal.h" -#include "libc/sock/sock.h" -#include "libc/stdio/stdio.h" +#include "libc/str/str.h" #include "libc/testlib/testlib.h" TEST(__dos2errno, test) {