Mach-O

Mach-O (pour Mach-object) est un format de fichier exécutable, sous Apple/Darwin, alias Mac OS X.

Mach-O
Icône de terminal, semblable à celle du terminal de Mac OS X
Caractéristiques
Extension
none, .o, .dylib
PUID
Signatures
CF FA ED FE (hexa)
CE FA ED FE (hexa)
FE ED FA CE (hexa)
FE ED FA CF (hexa)
Développé par
Type de format

Structure des fichiers Mach-O

Chaque fichier Mach-O est constitué d'un entête, suivi d'une série de commandes de chargement, suivie d'un ou plusieurs segments qui contiennent jusqu'à 255 sections. Le format Mach-O utilise le format de réallocation REL pour gérer les références de symboles. Lors de la recherche de symboles, Mach-O utilise un espace de noms à deux niveaux qui encode chaque symbole dans une paire 'objet/nom du symbole' qui est ensuite recherchée linéairement, d'abord par l'objet, puis par le nom du symbole[1].

La structure basique des fichier Mach-O est constitué d'une liste de "commandes de chargment" de longueur variable qui fait référence a des pages de données autrepars dans le fichier[2], cette structure était aussi utiliser dans le format de fichier executable d'Accent, étant a son tour, basée sur une idée de Spice Lisp.

Exécutable Multi-Architecture

Plusieurs fichiers Mach-o peuvent être combiné dans un exécutable multi-achitecture, ceci permet a un seul fichier executable de contenir du code pouvant supporté plusieurs set d'instruction d'architectures. Par exemple: un executable multi-architecture pour Mac OS X peut contenir a la fois du code PowerPC 32-bit et 64-bit, ou contenir a la fois du code PowerPC 32-bit et x86, ou contenir du code PowerPC 32-bit, 64-bit, du code x86, et x86_64.

Le devenir de Mach-O

Avec l'introduction de la version 10.6 de Mac OS X (Snow Leopard), le format Mach-O a subi une importante modification, qui empêche les binaires compilés sous Mac OS X 10.6 d'être exécutés sur des versions plus anciennes du système. La différence vient de certaines commandes de chargement que l'éditeur de liens des anciennes versions de Mac OS X ne comprend pas. Autre changement significatif du format est le change de comment les tables d'édition de liens (trouvé dans la section "__LINKEDIT") fonctionne. Dans Mac OS X 10.6 ces nouvelles tables d'edition de lien sont compréssée en suppriment les bits d'information non-utilisée et inutile, Toutefois Mac OS X 10.5 et les versions precédentes ne pouvent pas lire ce nouveaux format de tables. Pour résoudre ce problème de rétro-compatiblité de l'option d'éditeur de liens "-mmacosx-version-min=" peut être utilisé.

Autre Implémentation

Certaines versions de NetBSD ont un support Mach-O ajouté entant qu'une partie d'implementation de compatibilité d'exécutable, qui permet d'executer certain exécutable Mac OS 10.3.[3],[4]

Pour Linux, un executeur de fichier Mach-O pouvant exécuter des exécutable Mac OS 10.6 a été écrit par Shinichiro Hamaji[5]. Pour une solution compléte basé sur cette exécuteur, le Project DarlingHQ vise a fournir un environement complet permettent a une application macOS de s'exécuter sur Linux.

Pour le language de programmation Ruby, la librairie "ruby-macho"[6] fournit une implémentation d'un editeur et analyser Mach-O.

Notes et références

  1. « OS X ABI Mach-O File Format Reference » [archive du ], Apple Inc., (consulté le )
  2. Avadis Tevanian, Richard F. Rashid, Michael W. Young et David B. Golub, « A Unix Interface for Shared Memory and Memory Mapped Files Under Mach », In Proceedings of the Summer 1987 USENIX Conference, , p. 53–67 (lire en ligne, consulté le )
  3. « Mach and Darwin binary compatiblity for NetBSD/powerpc and NetBSD/i386. », sur hcpnet.free.fr (consulté le )
  4. (en) Emmanuel Dreyfus, « Mac OS X binary compatibility on NetBSD: challenges and implementation », 2004.eurobsdcon.org, (lire en ligne [PDF])
  5. « Mach-O loader for Linux - I wrote... », sur shinh.skr.jp (consulté le )
  6. ruby-macho, Homebrew, (lire en ligne)

Voir aussi

Articles connexes

Liens externes

  • Portail de l’informatique
Cet article est issu de Wikipedia. Le texte est sous licence Creative Commons - Attribution - Partage dans les Mêmes. Des conditions supplémentaires peuvent s'appliquer aux fichiers multimédias.