aout64.h File Reference

This graph shows which files directly or indirectly include this file:

Included by dependency graph

Go to the source code of this file.

Classes

struct  external_exec
struct  external_nlist
struct  internal_nlist
struct  reloc_std_external
struct  reloc_std_internal
struct  reloc_ext_external
struct  reloc_internal

Defines

#define EXEC_BYTES_SIZE   (4 + BYTES_IN_WORD * 7)
#define OMAGIC   0407
#define NMAGIC   0410
#define ZMAGIC   0413
#define BMAGIC   0415
#define QMAGIC   0314
#define N_BADMAG(x)
#define N_IS_QMAGIC(x)   (N_MAGIC (x) == QMAGIC)
#define N_SEGSIZE(x)   SEGMENT_SIZE
#define N_HEADER_IN_TEXT(x)   (((x).a_entry & (TARGET_PAGE_SIZE-1)) >= EXEC_BYTES_SIZE)
#define N_SHARED_LIB(x)   ((x).a_entry < TEXT_START_ADDR)
#define N_TXTADDR(x)
#define ZMAGIC_DISK_BLOCK_SIZE   TARGET_PAGE_SIZE
#define N_DISK_BLOCK_SIZE(x)   (N_MAGIC(x) == ZMAGIC ? ZMAGIC_DISK_BLOCK_SIZE : TARGET_PAGE_SIZE)
#define N_TXTOFF(x)
#define N_TXTSIZE(x)
#define N_DATADDR(x)
#define N_BSSADDR(x)   (N_DATADDR(x) + (x).a_data)
#define N_DATOFF(x)   (N_TXTOFF(x) + N_TXTSIZE(x))
#define N_TRELOFF(x)   ( N_DATOFF(x) + (x).a_data )
#define N_DRELOFF(x)   ( N_TRELOFF(x) + (x).a_trsize )
#define N_SYMOFF(x)   ( N_DRELOFF(x) + (x).a_drsize )
#define N_STROFF(x)   ( N_SYMOFF(x) + (x).a_syms )
#define EXTERNAL_NLIST_SIZE   (BYTES_IN_WORD+4+BYTES_IN_WORD)
#define N_UNDF   0
#define N_ABS   2
#define N_TEXT   4
#define N_DATA   6
#define N_BSS   8
#define N_COMM   0x12
#define N_FN   0x1f
#define N_FN_SEQ   0x0C
#define N_EXT   1
#define N_TYPE   0x1e
#define N_STAB   0xe0
#define N_INDR   0x0a
#define N_SETA   0x14
#define N_SETT   0x16
#define N_SETD   0x18
#define N_SETB   0x1A
#define N_SETV   0x1C
#define N_WARNING   0x1e
#define N_WEAKU   0x0d
#define N_WEAKA   0x0e
#define N_WEAKT   0x0f
#define N_WEAKD   0x10
#define N_WEAKB   0x11
#define RELOC_STD_BITS_PCREL_BIG   ((unsigned int) 0x80)
#define RELOC_STD_BITS_PCREL_LITTLE   ((unsigned int) 0x01)
#define RELOC_STD_BITS_LENGTH_BIG   ((unsigned int) 0x60)
#define RELOC_STD_BITS_LENGTH_SH_BIG   5
#define RELOC_STD_BITS_LENGTH_LITTLE   ((unsigned int) 0x06)
#define RELOC_STD_BITS_LENGTH_SH_LITTLE   1
#define RELOC_STD_BITS_EXTERN_BIG   ((unsigned int) 0x10)
#define RELOC_STD_BITS_EXTERN_LITTLE   ((unsigned int) 0x08)
#define RELOC_STD_BITS_BASEREL_BIG   ((unsigned int) 0x08)
#define RELOC_STD_BITS_BASEREL_LITTLE   ((unsigned int) 0x10)
#define RELOC_STD_BITS_JMPTABLE_BIG   ((unsigned int) 0x04)
#define RELOC_STD_BITS_JMPTABLE_LITTLE   ((unsigned int) 0x20)
#define RELOC_STD_BITS_RELATIVE_BIG   ((unsigned int) 0x02)
#define RELOC_STD_BITS_RELATIVE_LITTLE   ((unsigned int) 0x40)
#define RELOC_STD_SIZE   (BYTES_IN_WORD + 3 + 1)
#define RELOC_EXT_BITS_EXTERN_BIG   ((unsigned int) 0x80)
#define RELOC_EXT_BITS_EXTERN_LITTLE   ((unsigned int) 0x01)
#define RELOC_EXT_BITS_TYPE_BIG   ((unsigned int) 0x1F)
#define RELOC_EXT_BITS_TYPE_SH_BIG   0
#define RELOC_EXT_BITS_TYPE_LITTLE   ((unsigned int) 0xF8)
#define RELOC_EXT_BITS_TYPE_SH_LITTLE   3
#define RELOC_EXT_SIZE   (BYTES_IN_WORD + 3 + 1 + BYTES_IN_WORD)

Enumerations

enum  reloc_type {
  RELOC_8, RELOC_16, RELOC_32, RELOC_DISP8, RELOC_DISP16, RELOC_DISP32, RELOC_WDISP30, RELOC_WDISP22, RELOC_HI22, RELOC_22,
  RELOC_13, RELOC_LO10, RELOC_SFA_BASE, RELOC_SFA_OFF13, RELOC_BASE10, RELOC_BASE13, RELOC_BASE22, RELOC_PC10, RELOC_PC22, RELOC_JMP_TBL,
  RELOC_SEGOFF16, RELOC_GLOB_DAT, RELOC_JMP_SLOT, RELOC_RELATIVE, RELOC_11, RELOC_WDISP2_14, RELOC_WDISP19, RELOC_HHI22, RELOC_HLO10, RELOC_JUMPTARG,
  RELOC_CONST, RELOC_CONSTH, RELOC_64, RELOC_DISP64, RELOC_WDISP21, RELOC_DISP21, RELOC_DISP14, NO_RELOC
}


Define Documentation

#define BMAGIC   0415
 

#define EXEC_BYTES_SIZE   (4 + BYTES_IN_WORD * 7)
 

#define EXTERNAL_NLIST_SIZE   (BYTES_IN_WORD+4+BYTES_IN_WORD)
 

#define N_ABS   2
 

#define N_BADMAG x   ) 
 

Value:

(N_MAGIC(x) != OMAGIC           \
                        && N_MAGIC(x) != NMAGIC         \
                        && N_MAGIC(x) != ZMAGIC \
                        && N_MAGIC(x) != QMAGIC)

#define N_BSS   8
 

#define N_BSSADDR x   )     (N_DATADDR(x) + (x).a_data)
 

#define N_COMM   0x12
 

#define N_DATA   6
 

#define N_DATADDR x   ) 
 

Value:

(N_MAGIC(x)==OMAGIC? (N_TXTADDR(x)+N_TXTSIZE(x)) \
     :  (N_SEGSIZE(x) + ((N_TXTADDR(x)+N_TXTSIZE(x)-1) & ~(N_SEGSIZE(x)-1))))

#define N_DATOFF x   )     (N_TXTOFF(x) + N_TXTSIZE(x))
 

#define N_DISK_BLOCK_SIZE x   )     (N_MAGIC(x) == ZMAGIC ? ZMAGIC_DISK_BLOCK_SIZE : TARGET_PAGE_SIZE)
 

#define N_DRELOFF x   )     ( N_TRELOFF(x) + (x).a_trsize )
 

#define N_EXT   1
 

#define N_FN   0x1f
 

#define N_FN_SEQ   0x0C
 

#define N_HEADER_IN_TEXT x   )     (((x).a_entry & (TARGET_PAGE_SIZE-1)) >= EXEC_BYTES_SIZE)
 

#define N_INDR   0x0a
 

#define N_IS_QMAGIC x   )     (N_MAGIC (x) == QMAGIC)
 

#define N_SEGSIZE x   )     SEGMENT_SIZE
 

#define N_SETA   0x14
 

#define N_SETB   0x1A
 

#define N_SETD   0x18
 

#define N_SETT   0x16
 

#define N_SETV   0x1C
 

#define N_SHARED_LIB x   )     ((x).a_entry < TEXT_START_ADDR)
 

#define N_STAB   0xe0
 

#define N_STROFF x   )     ( N_SYMOFF(x) + (x).a_syms )
 

#define N_SYMOFF x   )     ( N_DRELOFF(x) + (x).a_drsize )
 

#define N_TEXT   4
 

#define N_TRELOFF x   )     ( N_DATOFF(x) + (x).a_data )
 

#define N_TXTADDR x   ) 
 

Value:

(/* The address of a QMAGIC file is always one page in, */ \
     /* with the header in the text.  */ \
     N_IS_QMAGIC (x) ? TARGET_PAGE_SIZE + EXEC_BYTES_SIZE : \
     N_MAGIC(x) != ZMAGIC ? 0 : /* object file or NMAGIC */\
     N_SHARED_LIB(x) ? 0 :      \
     N_HEADER_IN_TEXT(x)  ?     \
            TEXT_START_ADDR + EXEC_BYTES_SIZE : /* no padding */\
            TEXT_START_ADDR                     /* a page of padding */\
    )

#define N_TXTOFF x   ) 
 

Value:

(/* For {O,N,Q}MAGIC, no padding.  */ \
     N_MAGIC(x) != ZMAGIC ? EXEC_BYTES_SIZE : \
     N_SHARED_LIB(x) ? 0 : \
     N_HEADER_IN_TEXT(x) ?      \
            EXEC_BYTES_SIZE :                   /* no padding */\
            ZMAGIC_DISK_BLOCK_SIZE              /* a page of padding */\
    )

#define N_TXTSIZE x   ) 
 

Value:

(/* For QMAGIC, we don't consider the header part of the text section.  */\
     N_IS_QMAGIC (x) ? (x).a_text - EXEC_BYTES_SIZE : \
     (N_MAGIC(x) != ZMAGIC || N_SHARED_LIB(x)) ? (x).a_text : \
     N_HEADER_IN_TEXT(x)  ?     \
            (x).a_text - EXEC_BYTES_SIZE:       /* no padding */\
            (x).a_text                          /* a page of padding */\
    )

#define N_TYPE   0x1e
 

#define N_UNDF   0
 

#define N_WARNING   0x1e
 

#define N_WEAKA   0x0e
 

#define N_WEAKB   0x11
 

#define N_WEAKD   0x10
 

#define N_WEAKT   0x0f
 

#define N_WEAKU   0x0d
 

#define NMAGIC   0410
 

#define OMAGIC   0407
 

#define QMAGIC   0314
 

#define RELOC_EXT_BITS_EXTERN_BIG   ((unsigned int) 0x80)
 

#define RELOC_EXT_BITS_EXTERN_LITTLE   ((unsigned int) 0x01)
 

#define RELOC_EXT_BITS_TYPE_BIG   ((unsigned int) 0x1F)
 

#define RELOC_EXT_BITS_TYPE_LITTLE   ((unsigned int) 0xF8)
 

#define RELOC_EXT_BITS_TYPE_SH_BIG   0
 

#define RELOC_EXT_BITS_TYPE_SH_LITTLE   3
 

#define RELOC_EXT_SIZE   (BYTES_IN_WORD + 3 + 1 + BYTES_IN_WORD)
 

#define RELOC_STD_BITS_BASEREL_BIG   ((unsigned int) 0x08)
 

#define RELOC_STD_BITS_BASEREL_LITTLE   ((unsigned int) 0x10)
 

#define RELOC_STD_BITS_EXTERN_BIG   ((unsigned int) 0x10)
 

#define RELOC_STD_BITS_EXTERN_LITTLE   ((unsigned int) 0x08)
 

#define RELOC_STD_BITS_JMPTABLE_BIG   ((unsigned int) 0x04)
 

#define RELOC_STD_BITS_JMPTABLE_LITTLE   ((unsigned int) 0x20)
 

#define RELOC_STD_BITS_LENGTH_BIG   ((unsigned int) 0x60)
 

#define RELOC_STD_BITS_LENGTH_LITTLE   ((unsigned int) 0x06)
 

#define RELOC_STD_BITS_LENGTH_SH_BIG   5
 

#define RELOC_STD_BITS_LENGTH_SH_LITTLE   1
 

#define RELOC_STD_BITS_PCREL_BIG   ((unsigned int) 0x80)
 

#define RELOC_STD_BITS_PCREL_LITTLE   ((unsigned int) 0x01)
 

#define RELOC_STD_BITS_RELATIVE_BIG   ((unsigned int) 0x02)
 

#define RELOC_STD_BITS_RELATIVE_LITTLE   ((unsigned int) 0x40)
 

#define RELOC_STD_SIZE   (BYTES_IN_WORD + 3 + 1)
 

#define ZMAGIC   0413
 

#define ZMAGIC_DISK_BLOCK_SIZE   TARGET_PAGE_SIZE
 


Enumeration Type Documentation

enum reloc_type
 

Enumeration values:
RELOC_8 
RELOC_16 
RELOC_32 
RELOC_DISP8 
RELOC_DISP16 
RELOC_DISP32 
RELOC_WDISP30 
RELOC_WDISP22 
RELOC_HI22 
RELOC_22 
RELOC_13 
RELOC_LO10 
RELOC_SFA_BASE 
RELOC_SFA_OFF13 
RELOC_BASE10 
RELOC_BASE13 
RELOC_BASE22 
RELOC_PC10 
RELOC_PC22 
RELOC_JMP_TBL 
RELOC_SEGOFF16 
RELOC_GLOB_DAT 
RELOC_JMP_SLOT 
RELOC_RELATIVE 
RELOC_11 
RELOC_WDISP2_14 
RELOC_WDISP19 
RELOC_HHI22 
RELOC_HLO10 
RELOC_JUMPTARG 
RELOC_CONST 
RELOC_CONSTH 
RELOC_64 
RELOC_DISP64 
RELOC_WDISP21 
RELOC_DISP21 
RELOC_DISP14 
NO_RELOC 
00399 {
00400   /* simple relocations */
00401   RELOC_8,                      /* data[0:7] = addend + sv              */
00402   RELOC_16,                     /* data[0:15] = addend + sv             */
00403   RELOC_32,                     /* data[0:31] = addend + sv             */
00404   /* pc-rel displacement */
00405   RELOC_DISP8,                  /* data[0:7] = addend - pc + sv         */
00406   RELOC_DISP16,                 /* data[0:15] = addend - pc + sv        */
00407   RELOC_DISP32,                 /* data[0:31] = addend - pc + sv        */
00408   /* Special */
00409   RELOC_WDISP30,                /* data[0:29] = (addend + sv - pc)>>2   */
00410   RELOC_WDISP22,                /* data[0:21] = (addend + sv - pc)>>2   */
00411   RELOC_HI22,                   /* data[0:21] = (addend + sv)>>10       */
00412   RELOC_22,                     /* data[0:21] = (addend + sv)           */
00413   RELOC_13,                     /* data[0:12] = (addend + sv)           */
00414   RELOC_LO10,                   /* data[0:9] = (addend + sv)            */
00415   RELOC_SFA_BASE,               
00416   RELOC_SFA_OFF13,
00417   /* P.I.C. (base-relative) */
00418   RELOC_BASE10,                 /* Not sure - maybe we can do this the */
00419   RELOC_BASE13,                 /* right way now */
00420   RELOC_BASE22,
00421   /* for some sort of pc-rel P.I.C. (?) */
00422   RELOC_PC10,
00423   RELOC_PC22,
00424   /* P.I.C. jump table */
00425   RELOC_JMP_TBL,
00426   /* reputedly for shared libraries somehow */
00427   RELOC_SEGOFF16,
00428   RELOC_GLOB_DAT,
00429   RELOC_JMP_SLOT,
00430   RELOC_RELATIVE,
00431 
00432   RELOC_11,     
00433   RELOC_WDISP2_14,
00434   RELOC_WDISP19,
00435   RELOC_HHI22,                  /* data[0:21] = (addend + sv) >> 42     */
00436   RELOC_HLO10,                  /* data[0:9] = (addend + sv) >> 32      */
00437   
00438   /* 29K relocation types */
00439   RELOC_JUMPTARG,
00440   RELOC_CONST,
00441   RELOC_CONSTH,
00442   
00443   /* All the new ones I can think of, for sparc v9 */
00444 
00445   RELOC_64,                     /* data[0:63] = addend + sv             */
00446   RELOC_DISP64,                 /* data[0:63] = addend - pc + sv        */
00447   RELOC_WDISP21,                /* data[0:20] = (addend + sv - pc)>>2   */
00448   RELOC_DISP21,                 /* data[0:20] = addend - pc + sv        */
00449   RELOC_DISP14,                 /* data[0:13] = addend - pc + sv        */
00450   /* Q .
00451      What are the other ones,
00452      Since this is a clean slate, can we throw away the ones we dont
00453      understand ? Should we sort the values ? What about using a
00454      microcode format like the 68k ?
00455      */
00456   NO_RELOC
00457   };


Generated on Thu Feb 24 11:01:09 2005 for MySQL by  doxygen 1.3.9.1