filehdr(5)
NAME
filehdr − file header for MIPS object files
SYNTAX
#include < filehdr.h>
DESCRIPTION
Every MIPS 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 pointer to symbolic header */
long f_nsyms; /* sizeof(symbolic header) */
unsigned short f_opthdr; /* sizeof(optional header) */
unsigned short f_flags; /* flags */
};
F_symptr is the byte offset into the file at which the symbolic header can be found. Its value can be used as the offset in fseek() to position an I/O stream to the symbolic header. The ULTRIX system optional header is 56-bytes. The valid magic numbers are given below:
#define MIPSEBMAGIC 0x0160 /* objects for big-endian machines */
#define MIPSELMAGIC 0x0162 /* objects for little-endian machines */
#define MIPSEBUMAGIC 0x0180 /* ucode objects for big-endian machines */
#define MIPSELUMAGIC 0x0182 /* ucode objects for little-endian machines */
MIPS object files can be loaded and examined on machines differing from the object’s target byte sex. Therefore, for object file magic numbers, the byte swapped values have define constants associated with them:
#define SMIPSEBMAGIC 0x6001
#define SMIPSELMAGIC 0x6201
The value in f_timdat is obtained from the time() system call. Flag bits used in MIPS objects 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 */
SEE ALSO
File Formats