diff options
author | Omar Majid <omajid@redhat.com> | 2019-07-23 09:44:57 +0100 |
---|---|---|
committer | Nick Clifton <nickc@redhat.com> | 2019-07-23 09:44:57 +0100 |
commit | 1dd1bc4daf99ec7ad1f9a6feea8cf4ebe715a92d (patch) | |
tree | 968e6d80c069a68fcb0bc8630dd2b67ab14362e3 /include/coff | |
parent | 5ba29434765feed692b6342a8b0f853050be2402 (diff) | |
download | binutils-1dd1bc4daf99ec7ad1f9a6feea8cf4ebe715a92d.zip binutils-1dd1bc4daf99ec7ad1f9a6feea8cf4ebe715a92d.tar.gz binutils-1dd1bc4daf99ec7ad1f9a6feea8cf4ebe715a92d.tar.bz2 |
Allow objdump to recognise the System.Runtime.dll files that get shipped with .NET Core 2.1.
include * coff/i386.h (IMAGE_FILE_MACHINE_NATIVE_APPLE_OVERRIDE): Define.
(IMAGE_FILE_MACHINE_NATIVE_FREEBSD_OVERRIDE): Define.
(IMAGE_FILE_MACHINE_NATIVE_LINUX_OVERRIDE): Define.
(IMAGE_FILE_MACHINE_NATIVE_NETBSD_OVERRIDE): Define.
(I386_APPLE_MAGIC): Define.
(I386_FREEBSD_MAGIC): Define.
(I386_LINUX_MAGIC): Define.
(I386_NETBSD_MAGIC): Define.
(I386BADMAG): Extend macro to allow new magic numbers.
* coff/x86_64.h (IMAGE_FILE_MACHINE_NATIVE_APPLE_OVERRIDE): Define.
(IMAGE_FILE_MACHINE_NATIVE_FREEBSD_OVERRIDE): Define.
(IMAGE_FILE_MACHINE_NATIVE_LINUX_OVERRIDE): Define.
(IMAGE_FILE_MACHINE_NATIVE_NETBSD_OVERRIDE): Define.
(AMD64_APPLE_MAGIC): Define.
(AMD64_FREEBSD_MAGIC): Define.
(AMD64_LINUX_MAGIC): Define.
(AMD64_NETBSD_MAGIC): Define.
(AMD64BADMAG): Extend macro to allow new magic numbers.
bfd * coffcode.h (coff_set_arch_mach_hook): Handle I386_APPLE_MAGIC,
I386_FREEBSD_MAGIC, I386_LINUX_MAGIC, I386_NETBSD_MAGIC,
AMD64_APPLE_MAGIC, AMD64_FREEBSD_MAGIC, AMD64_LINUX_MAGIC,
AMD64_NETBSD_MAGIC.
* peXXigen.c: Add comment about source of .NET magic numbers.
binutils* Makefile.am (AUTOMAKE_OPTIONS): Add subdir-objects
(GENTESTDLLSPROG): Define.
(TEST_PROGS): Add GENTESTDLLSPROG.
* Makefile.in: Regenerate.
* testsuite/binutils-all/objdump.exp
(test_objdump_dotnet_assemblies): New proc.
Run the new proc.
* testsuite/gentestdlls.c: New source file.
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. */ |