Mac OS X Support : Mach-O file recognition in loader.c
Pierre d'Herbemont
stegefin at free.fr
Sat May 3 14:51:41 CDT 2003
Hi,
Here is a patch which fix Mach-O file format recognition when loading a
file.
Thanks,
Pierre.
Modified files:
loader/module.c
ChangeLog:
Add Mach-O file format recognition when loading a file.
-------------- next part --------------
Index: loader/module.c
===================================================================
RCS file: /home/wine/wine/loader/module.c,v
retrieving revision 1.182
diff -u -r1.182 module.c
--- loader/module.c 5 Apr 2003 05:13:33 -0000 1.182
+++ loader/module.c 3 May 2003 19:20:00 -0000
@@ -30,6 +30,9 @@
#ifdef HAVE_UNISTD_H
# include <unistd.h>
#endif
+#ifdef HAVE_MACHO_LOADER_H_
+# include <mach-o/loader.h>
+#endif
#include "wine/winbase16.h"
#include "winerror.h"
#include "winternl.h"
@@ -255,6 +258,18 @@
unsigned char ignored[12];
unsigned short type;
} elf;
+#ifdef USE_MACHO
+ struct
+ {
+ unsigned long magic;
+ unsigned long cputype;
+ unsigned long cpusubtype;
+ unsigned long filetype;
+ unsigned long ncmds;
+ unsigned long sizeofcmds;
+ unsigned long flags;
+ } macho;
+#endif /* USE_MACHO */
IMAGE_DOS_HEADER mz;
} header;
@@ -277,6 +292,30 @@
}
return BINARY_UNKNOWN;
}
+
+#ifdef USE_MACHO
+Ê Ê Ê/* Mach-o File with Endian set to Big Endian */
+ Êif (header.macho.magic == 0xfeedface)
+Ê Ê Ê{
+ /* FIXME: we don't bother to check byte order, architecture, etc. */
+ switch(header.macho.filetype)
+ {
+ case MH_BUNDLE: return BINARY_UNIX_LIB;
+ }
+ return BINARY_UNKNOWN;
+ }
+
+Ê Ê /* Mach-o File with Endian set to Little Endian */
+ if (header.macho.magic == 0xecafdeef)
+ {
+Ê Ê Ê Ê Ê/* FIXME: we don't bother to check byte order, architecture, etc. */
+ switch(header.macho.filetype)
+ {
+ case MH_BUNDLE: return BINARY_UNIX_LIB;
+ }
+ return BINARY_UNKNOWN;
+ }
+#endif /* USE_MACHO */
/* Not ELF, try DOS */
More information about the wine-patches
mailing list