2012-02-27 8 views
6

Sto scavando attraverso due build ARM compilate cross-compilate Linux. Non c'è molta documentazione diversa da "utilizzare questa immagine VM per costruire la fonte" L'unica differenza tra l'output del comando file è la presenza di "(SYSV)"Comando file Linux: cosa implica SYSV?

# file Executable 
Executable: ELF 32-bit LSB executable, ARM, version 1 (SYSV) ... 

Che dovrei essere in grado di assumere a base sulla presenza o assenza di SYSV nella stringa?

+3

Probabilmente correlato al sistema UNIX V – Icarus

+1

+1 @icarus http://en.wikipedia.org/wiki/UNIX_System_V Questo contiene un numero di standard ancora in uso su sistemi operativi Unix. – mikemaccana

risposta

10

Se vedi che (SYSV) stringa, significa che il campo e_ident[EI_OSABI] nell'intestazione ELF è impostato a 0. Dal ELF spec (PDF link):

Table 5. Operating System and ABI Identifiers, e_ident[EI_OSABI] 
Name     Value Meaning 
ELFOSABI_SYSV   0  System V ABI 
ELFOSABI_HPUX   1  HP-UX operating system 
ELFOSABI_STANDALONE 255 Standalone (embedded) application 

di file di mia macchina locale /usr/share/file/magic/elf ha una lista più lunga:

# Up to now only 0, 1 and 2 are defined; I've seen a file with 0x83, it seemed 
# like proper ELF, but extracting the string had bad results. 
>4  byte   <0x80 
>>8 string  >\0  (%s) 
>8 string  \0 
>>7 byte  0  (SYSV) 
>>7 byte  1  (HP-UX) 
>>7 byte  2  (NetBSD) 
>>7 byte  3  (GNU/Linux) 
>>7 byte  4  (GNU/Hurd) 
>>7 byte  5  (86Open) 
>>7 byte  6  (Solaris) 
>>7 byte  7  (Monterey) 
>>7 byte  8  (IRIX) 
>>7 byte  9  (FreeBSD) 
>>7 byte  10  (Tru64) 
>>7 byte  11  (Novell Modesto) 
>>7 byte  12  (OpenBSD) 
>8  string   \2 
>>7  byte   13    (OpenVMS) 
>>7 byte  97  (ARM) 
>>7 byte  255  (embedded) 

Ecco l'intestazione ELF e compensazioni per il vostro riferimento (da this link):

#define EI_NIDENT 16 

typedef struct { 
     unsigned char e_ident[EI_NIDENT]; 
     Elf32_Half  e_type; 
     Elf32_Half  e_machine; 
     Elf32_Word  e_version; 
     Elf32_Addr  e_entry; 
     Elf32_Off  e_phoff; 
     Elf32_Off  e_shoff; 
     Elf32_Word  e_flags; 
     Elf32_Half  e_ehsize; 
     Elf32_Half  e_phentsize; 
     Elf32_Half  e_phnum; 
     Elf32_Half  e_shentsize; 
     Elf32_Half  e_shnum; 
     Elf32_Half  e_shstrndx; 
} Elf32_Ehdr; 


Figure 4-4: e_ident[] Identification Indexes 
Name  Value Purpose 
EI_MAG0  0  File identification 
EI_MAG1  1  File identification 
EI_MAG2  2  File identification 
EI_MAG3  3  File identification 
EI_CLASS  4  File class 
EI_DATA  5  Data encoding 
EI_VERSION 6  File version 
EI_OSABI  7  Operating system/ABI identification 
EI_ABIVERSION 8  ABI version 
EI_PAD  9  Start of padding bytes 
EI_NIDENT  16 Size of e_ident[] 
+0

Grazie per la risposta dettagliata. –

+0

Nessun problema: felice di aiutare. –

Problemi correlati