NAME | SYNOPSIS | DESCRIPTION | SEE ALSO
#include <filehdr.h>
Every common object file begins with a 20-byte header. The following C struct declaration is used:
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] */ |
NAME | SYNOPSIS | DESCRIPTION | SEE ALSO