Cputype impar en / bin / ls binary

2

Acabo de empezar con el Manual de hackers de Mac de Charlie Miller y Dino Dai Zovi y estaba haciendo los tutoriales. Esto incluye conocer cosas como 'otool'

otool -f \bin\ls
Fat headers
fat_magic 0xcafebabe
nfat_arch 2
architecture 0
    cputype 16777223
    cpusubtype 3
    capabilities 0x80
    offset 4096
    size 39600
    align 2^12 (4096)
architecture 1
    cputype 7
    cpusubtype 3
    capabilities 0x0
    offset 45056
    size 35632
    align 2^12 (4096)

Traté de encontrar algo sobre ese primer cputype en /usr/include/mach/machine.h, pero no encontré nada. Claramente me falta algo.

    
pregunta er4z0r 04.02.2011 - 21:27

2 respuestas

4

cputype 16777223 es "x86 64" (modo de 64 bits); 7 es "i386" (modo de 32 bits). Por cierto, 16777223 == 0x1000007, por lo que el bit 24 significa "64 bit".

Buscando en /usr/include/mach/machine.h (señalado por …/mach-o/fat.h , que parece ser un lugar razonable para comenzar), encontramos lo siguiente:

⋮
typedef integer_t       cpu_type_t;
⋮
#define CPU_ARCH_ABI64  0x01000000              /* 64 bit ABI */
⋮
#define CPU_TYPE_X86            ((cpu_type_t) 7)
#define CPU_TYPE_I386           CPU_TYPE_X86            /* compatibility */
#define CPU_TYPE_X86_64         (CPU_TYPE_X86 | CPU_ARCH_ABI64)
⋮
#define CPU_TYPE_POWERPC                ((cpu_type_t) 18)
#define CPU_TYPE_POWERPC64              (CPU_TYPE_POWERPC | CPU_ARCH_ABI64)
⋮

Por supuesto, también puede agregar la opción -v a su comando otool para que muestre los valores simbólicos:

% otool -vf /bin/ls
Fat headers
fat_magic FAT_MAGIC
nfat_arch 2
architecture x86_64
    cputype CPU_TYPE_X86_64
    cpusubtype CPU_SUBTYPE_X86_64_ALL
    capabilities CPU_SUBTYPE_LIB64
    offset 4096
    size 39600
    align 2^12 (4096)
architecture i386
    cputype CPU_TYPE_I386
    cpusubtype CPU_SUBTYPE_I386_ALL
    capabilities 0x0
    offset 45056
    size 35632
    align 2^12 (4096)
    
respondido por el Chris Johnsen 05.02.2011 - 05:32
1

Hasta donde puedo entender, los objetos compilados con Intel FORTRAN utilizan un cputype 16777223 pero los objetos compilados con gcc usan un cputype de 7

    
respondido por el conorgriffin 04.02.2011 - 22:35

Lea otras preguntas en las etiquetas