magic__Magdir__mach.diff [plain text]
--- magic/Magdir/mach.orig 2003-09-12 12:03:47.000000000 -0700
+++ magic/Magdir/mach 2006-01-12 18:01:26.000000000 -0800
@@ -1,21 +1,76 @@
#------------------------------------------------------------------------------
# mach file description
#
-0 belong 0xcafebabe Mach-O fat file
->4 belong 1 with 1 architecture
+# Since Java bytecode and Mach-O universal binaries have the same magic number
+# the test must be preformed in the same "magic" sequence to get both right.
+# The long at offset 4 in a universal binary tells the number of architectures.
+# The short at offset 4 in a Java bytecode file is the compiler minor version
+# and the short at offset 6 is the compiler major version. Since there are
+# only 18 labeled Mach-O architectures at current, and the first released
+# Java class format was version 43.0, we can safely choose any number
+# between 18 and 39 to test the number of architectures against
+# (and use as a hack).
+#
+0 belong 0xcafebabe
+>4 belong >19 compiled Java class data,
+>>6 beshort x version %d.
+>>4 beshort x \b%d
+>4 belong 1 Mach-O universal binary with 1 architecture
>4 belong >1
->>4 belong x with %ld architectures
+# The following is necessary to support java class files.
+>>4 belong <20 Mach-O universal binary with %ld architectures
+#>>4 belong <0xffff Mach-O universal binary with %ld architectures
+#
+0 lelong&0xfffffffe 0xfeedface Mach-O
+>0 byte 0xcf 64-bit
+>12 lelong 1 object
+>12 lelong 2 executable
+>12 lelong 3 fixed virtual memory shared library
+>12 lelong 4 core
+>12 lelong 5 preload executable
+>12 lelong 6 dynamically linked shared library
+>12 lelong 7 dynamic linker
+>12 lelong 8 bundle
+>12 lelong 9 dynamically linked shared library stub
+>12 lelong >9
+>>12 lelong x filetype=%ld
+>4 lelong <0
+>>4 lelong x architecture=%ld
+>4 lelong 1 vax
+>4 lelong 2 romp
+>4 lelong 3 architecture=3
+>4 lelong 4 ns32032
+>4 lelong 5 ns32332
+>4 lelong 6 m68k
+>4 lelong 7 i386
+>4 lelong 8 mips
+>4 lelong 9 ns32532
+>4 lelong 10 architecture=10
+>4 lelong 11 hppa
+>4 lelong 12 acorn
+>4 lelong 13 m88k
+>4 lelong 14 sparc
+>4 lelong 15 i860-big
+>4 lelong 16 i860
+>4 lelong 17 rs6000
+>4 lelong 18 ppc
+>4 lelong 16777223 x86_64
+>4 lelong 16777234 ppc64
+>4 lelong >16777234
+>>4 lelong x architecture=%ld
#
-0 belong 0xfeedface Mach-O
+0 belong&0xfffffffe 0xfeedface Mach-O
+>3 byte 0xcf 64-bit
>12 belong 1 object
>12 belong 2 executable
->12 belong 3 shared library
+>12 belong 3 fixed virtual memory shared library
>12 belong 4 core
>12 belong 5 preload executable
>12 belong 6 dynamically linked shared library
>12 belong 7 dynamic linker
>12 belong 8 bundle
->12 belong >8
+>12 belong 9 dynamically linked shared library stub
+>12 belong >9
>>12 belong x filetype=%ld
>4 belong <0
>>4 belong x architecture=%ld
@@ -34,7 +89,7 @@
>4 belong 8 mips
>4 belong 9 ns32532
>4 belong 10 architecture=10
->4 belong 11 hp pa-risc
+>4 belong 11 hppa
>4 belong 12 acorn
>4 belong 13 m88k
>4 belong 14 sparc
@@ -42,5 +97,7 @@
>4 belong 16 i860
>4 belong 17 rs6000
>4 belong 18 ppc
->4 belong >18
+>4 belong 16777223 x86_64
+>4 belong 16777234 ppc64
+>4 belong >16777234
>>4 belong x architecture=%ld