struct filehdr { unsigned short f_magic ; /* magic number */ unsigned short f_nscns ; /* number of sections */ long f_timdat ; /* time & date stamp */ long f_symptr ; /* file ptr to symtab */ long f_nsyms ; /* number of symtab entries */ unsigned short f_opthdr ; /* sizeof(opt and header) */ unsigned short f_flags ; /* flags */ };
f_symptr is the byte offset into the file at which the symbol table can be found. Its value can be used as the offset in fseek(3S) to position an I/O stream to the symbol table. The UNIX system optional header is 28 bytes. The valid magic numbers are given below:
#define | I386MAGIC | 0514 | /* i386 Computer */ |
#define | WE32MAGIC | 0560 | /* 3B2, 3B5, and 3B15 computers */ |
#define | N3BMAGIC | 0550 | /* 3B20 computer */ |
#define | NTVMAGIC | 0551 | /* 3B20 computer */ |
#define | VAXWRMAGIC | 0570 | /* VAX writable text segments */ |
#define | VAXROMAGIC | 0575 | /* VAX read only sharable |
text segments */ |
The value in f_timdat is obtained from the time(2) system call. Flag bits currently defined are:
#define | F_RELFLG | 0000001 | /* relocation entries stripped */ |
#define | F_EXEC | 0000002 | /* file is executable */ |
#define | F_LNNO | 0000004 | /* line numbers stripped */ |
#define | F_LSYMS | 0000010 | /* local symbols stripped */ |
#define | F_AR16WR | 0000200 | /* 16-bit DEC host */ |
#define | F_AR32WR | 0000400 | /* 32-bit DEC host */ |
#define | F_AR32W | 0001000 | /* non-DEC host */ |
#define | F_BM32ID | 0160000 | /* WE32000 family ID field */ |
#define | F_BM32B | 0020000 | /* file contains WE 32100 code */ |
#define | F_BM32MAU | 0040000 | /* file reqs MAU to execute */ |
#define | F_BM32RST | 0010000 | /* this object file contains restore |
work around [3B5/3B2 only] */ |