diff options
Diffstat (limited to 'include/coff')
-rw-r--r-- | include/coff/i386.h | 19 | ||||
-rw-r--r-- | include/coff/x86_64.h | 22 |
2 files changed, 40 insertions, 1 deletions
diff --git a/include/coff/i386.h b/include/coff/i386.h index 1d2ccff..8fd2b8d 100644 --- a/include/coff/i386.h +++ b/include/coff/i386.h @@ -43,7 +43,26 @@ #define LYNXCOFFMAGIC 0415 +/* .NET DLLs XOR the Machine number (above) with an override to + indicate that the DLL contains OS-specific machine code rather + than just IL or bytecode. See + https://github.com/dotnet/coreclr/blob/6f7aa7967c607b8c667518314ab937c0d7547025/src/inc/pedecoder.h#L94-L107. */ +#define IMAGE_FILE_MACHINE_NATIVE_APPLE_OVERRIDE 0x4644 +#define IMAGE_FILE_MACHINE_NATIVE_FREEBSD_OVERRIDE 0xadc4 +#define IMAGE_FILE_MACHINE_NATIVE_LINUX_OVERRIDE 0x7b79 +#define IMAGE_FILE_MACHINE_NATIVE_NETBSD_OVERRIDE 0x1993 + +/* Used in some .NET DLLs that target a specific OS. */ +#define I386_APPLE_MAGIC (I386MAGIC ^ IMAGE_FILE_MACHINE_NATIVE_APPLE_OVERRIDE) +#define I386_FREEBSD_MAGIC (I386MAGIC ^ IMAGE_FILE_MACHINE_NATIVE_FREEBSD_OVERRIDE) +#define I386_LINUX_MAGIC (I386MAGIC ^ IMAGE_FILE_MACHINE_NATIVE_LINUX_OVERRIDE) +#define I386_NETBSD_MAGIC (I386MAGIC ^ IMAGE_FILE_MACHINE_NATIVE_NETBSD_OVERRIDE) + #define I386BADMAG(x) ( ((x).f_magic != I386MAGIC) \ + && (x).f_magic != I386_APPLE_MAGIC \ + && (x).f_magic != I386_FREEBSD_MAGIC \ + && (x).f_magic != I386_LINUX_MAGIC \ + && (x).f_magic != I386_NETBSD_MAGIC \ && (x).f_magic != I386AIXMAGIC \ && (x).f_magic != I386PTXMAGIC \ && (x).f_magic != LYNXCOFFMAGIC) diff --git a/include/coff/x86_64.h b/include/coff/x86_64.h index 3d0e6f0..c0e6de3 100644 --- a/include/coff/x86_64.h +++ b/include/coff/x86_64.h @@ -29,7 +29,27 @@ #define AMD64MAGIC 0x8664 -#define AMD64BADMAG(x) ((x).f_magic != AMD64MAGIC) +/* .NET DLLs XOR the Machine number (above) with an override to + indicate that the DLL contains OS-specific machine code rather + than just IL or bytecode. See + https://github.com/dotnet/coreclr/blob/6f7aa7967c607b8c667518314ab937c0d7547025/src/inc/pedecoder.h#L94-L107. */ +#define IMAGE_FILE_MACHINE_NATIVE_APPLE_OVERRIDE 0x4644 +#define IMAGE_FILE_MACHINE_NATIVE_FREEBSD_OVERRIDE 0xadc4 +#define IMAGE_FILE_MACHINE_NATIVE_LINUX_OVERRIDE 0x7b79 +#define IMAGE_FILE_MACHINE_NATIVE_NETBSD_OVERRIDE 0x1993 + +/* Used in some .NET DLLs that target a specific OS. */ +#define AMD64_APPLE_MAGIC (AMD64MAGIC ^ IMAGE_FILE_MACHINE_NATIVE_APPLE_OVERRIDE) +#define AMD64_FREEBSD_MAGIC (AMD64MAGIC ^ IMAGE_FILE_MACHINE_NATIVE_FREEBSD_OVERRIDE) +#define AMD64_LINUX_MAGIC (AMD64MAGIC ^ IMAGE_FILE_MACHINE_NATIVE_LINUX_OVERRIDE) +#define AMD64_NETBSD_MAGIC (AMD64MAGIC ^ IMAGE_FILE_MACHINE_NATIVE_NETBSD_OVERRIDE) + +#define AMD64BADMAG(x) ( ((x).f_magic != AMD64MAGIC) \ + && ((x).f_magic != AMD64_APPLE_MAGIC) \ + && ((x).f_magic != AMD64_FREEBSD_MAGIC) \ + && ((x).f_magic != AMD64_LINUX_MAGIC) \ + && ((x).f_magic != AMD64_NETBSD_MAGIC)) + #define IMAGE_NT_OPTIONAL_HDR64_MAGIC 0x20b #define OMAGIC 0404 /* Object files, eg as output. */ |