Ce format a un certain nombre d'avantages, notamment la possibilité d'avoir des "fat binaries", appelées "Universal Binaries" par Apple, d'ailleurs je vous en avais déjà parlé ici et ici.
La commande otool -h permet d'analyser le header d'un fichier au format Mach-O. Voyons le résultat sur un fichier Mach-O bien connu (/bin/ls), et un autre fichier Mach-O que j'ai compilé moi-même:
[pierre@albert] /Users/pierre>otool -h /bin/lsIl est amusant de constater que le "magic number" dans le header est 0xfeedface.
/bin/ls:
Mach header
magic cputype cpusubtype caps filetype ncmds sizeofcmds flags
0xfeedface 7 3 0x00 2 14 1304 0x00000085
[pierre@albert] /Users/pierre>otool -h Documents/source/hello
Documents/source/hello:
Mach header
magic cputype cpusubtype caps filetype ncmds sizeofcmds flags
0xfeedface 7 3 0x00 2 11 936 0x00000085
En fait les quatre premiers octets de tout fichier au format Mach-O sont toujours 0xfeedface ou 0xcefaedfe si vous lisez un fichier petit-boutiste (little-endian) sur une machine grand-boutiste (big-endian), ou l'inverse...
Vous pouvez aussi consulter cette documentation officielle Apple sur la structure des exécutables Mach-O.
Aucun commentaire:
Enregistrer un commentaire