]> git.ipfire.org Git - thirdparty/binutils-gdb.git/blobdiff - include/coff/x86_64.h
Allow objdump to recognise the System.Runtime.dll files that get shipped with .NET...
[thirdparty/binutils-gdb.git] / include / coff / x86_64.h
index 3d0e6f085d717d5afd88d09b14f6464db0a01545..c0e6de3b1fdb8789793e905ed252e0f34816b064 100644 (file)
 
 #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.  */