man Pages(4): File Formats
  Search only this book
Download this book in PDF

NAME

filehdr - file header for common object files

SYNOPSIS

#include <filehdr.h>

DESCRIPTION

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] ** /

SEE ALSO

time(2), fseek(3S), a.out (4)