Was ist erforderlich, damit eine ausführbare Mach-O-Datei geladen werden kann?

Ich versuche, eine ausführbare Mach-O-Datei von Hand zu schreiben. Es gibt drei Ladebefehle:

LC_SEGMENT_64 Wird geladen__PAGEZEROLC_SEGMENT_64 Wird geladen__TEXT, mit einem einzelnen__text SektioLC_UNIXTHREAD mit einem entsprechend gesetztenrip

Jeder Befehl entspricht den Strukturen inmach/loader.h und verwandte Header.otool -l listet die Informationen wie erwartet auf und meldet keine Fehler. Es handelt sich in jedem Fall um eine wohlgeformte Objektdatei, doch OS X 10.10.5 beendet die Task (SIGKILL).

Welche Funktionen einer ausführbaren Mach-O-Datei werden überprüft, bevor sie von OS X geladen wird? Wo befinden sich diese Informationen? Wechseln diese Funktionen von Version zu Version? (Die oft zitierte "OS X ABI Mach-O-Referenz" fehlt anscheinend.)

Hier ist eineilweise kommentierter Hexdu der Binärdatei.

otool Sanity Check (Auszug):

$ otool -l machtest
machtest:
Load command 0
      cmd LC_SEGMENT_64
  cmdsize 72
  segname __PAGEZERO
…
Load command 1
      cmd LC_SEGMENT_64
  cmdsize 152
  segname __TEXT
…
Section
  sectname __text
   segname __TEXT
…
Load command 2
        cmd LC_UNIXTHREAD
…

Antworten auf die Frage(4)

Ihre Antwort auf die Frage