Annotation of qemu/roms/openbios/include/arch/common/a.out.h, revision 1.1

1.1     ! root        1: #ifndef __A_OUT_GNU_H__
        !             2: #define __A_OUT_GNU_H__
        !             3: 
        !             4: #define __GNU_EXEC_MACROS__
        !             5: 
        !             6: #ifndef __STRUCT_EXEC_OVERRIDE__
        !             7: 
        !             8: #include "asm/a.out.h"
        !             9: 
        !            10: #endif /* __STRUCT_EXEC_OVERRIDE__ */
        !            11: 
        !            12: /* these go in the N_MACHTYPE field */
        !            13: enum machine_type {
        !            14: #if defined (M_OLDSUN2)
        !            15:   M__OLDSUN2 = M_OLDSUN2,
        !            16: #else
        !            17:   M_OLDSUN2 = 0,
        !            18: #endif
        !            19: #if defined (M_68010)
        !            20:   M__68010 = M_68010,
        !            21: #else
        !            22:   M_68010 = 1,
        !            23: #endif
        !            24: #if defined (M_68020)
        !            25:   M__68020 = M_68020,
        !            26: #else
        !            27:   M_68020 = 2,
        !            28: #endif
        !            29: #if defined (M_SPARC)
        !            30:   M__SPARC = M_SPARC,
        !            31: #else
        !            32:   M_SPARC = 3,
        !            33: #endif
        !            34:   /* skip a bunch so we don't run into any of sun's numbers */
        !            35:   M_386 = 100,
        !            36:   M_MIPS1 = 151,       /* MIPS R3000/R3000 binary */
        !            37:   M_MIPS2 = 152                /* MIPS R6000/R4000 binary */
        !            38: };
        !            39: 
        !            40: #if !defined (N_MAGIC)
        !            41: #define N_MAGIC(exec) ((exec).a_info & 0xffff)
        !            42: #endif
        !            43: #define N_MACHTYPE(exec) ((enum machine_type)(((exec).a_info >> 16) & 0xff))
        !            44: #define N_FLAGS(exec) (((exec).a_info >> 24) & 0xff)
        !            45: #define N_SET_INFO(exec, magic, type, flags) \
        !            46:        ((exec).a_info = ((magic) & 0xffff) \
        !            47:         | (((int)(type) & 0xff) << 16) \
        !            48:         | (((flags) & 0xff) << 24))
        !            49: #define N_SET_MAGIC(exec, magic) \
        !            50:        ((exec).a_info = (((exec).a_info & 0xffff0000) | ((magic) & 0xffff)))
        !            51: 
        !            52: #define N_SET_MACHTYPE(exec, machtype) \
        !            53:        ((exec).a_info = \
        !            54:         ((exec).a_info&0xff00ffff) | ((((int)(machtype))&0xff) << 16))
        !            55: 
        !            56: #define N_SET_FLAGS(exec, flags) \
        !            57:        ((exec).a_info = \
        !            58:         ((exec).a_info&0x00ffffff) | (((flags) & 0xff) << 24))
        !            59: 
        !            60: /* Code indicating object file or impure executable.  */
        !            61: #define OMAGIC 0407
        !            62: /* Code indicating pure executable.  */
        !            63: #define NMAGIC 0410
        !            64: /* Code indicating demand-paged executable.  */
        !            65: #define ZMAGIC 0413
        !            66: /* This indicates a demand-paged executable with the header in the text.
        !            67:    The first page is unmapped to help trap NULL pointer references */
        !            68: #define QMAGIC 0314
        !            69: 
        !            70: /* Code indicating core file.  */
        !            71: #define CMAGIC 0421
        !            72: 
        !            73: #if !defined (N_BADMAG)
        !            74: #define N_BADMAG(x)      (N_MAGIC(x) != OMAGIC         \
        !            75:                        && N_MAGIC(x) != NMAGIC         \
        !            76:                        && N_MAGIC(x) != ZMAGIC \
        !            77:                        && N_MAGIC(x) != QMAGIC)
        !            78: #endif
        !            79: 
        !            80: #define _N_HDROFF(x) (1024 - sizeof (struct exec))
        !            81: 
        !            82: #if !defined (N_TXTOFF)
        !            83: #define N_TXTOFF(x) \
        !            84:  (N_MAGIC(x) == ZMAGIC ? _N_HDROFF((x)) + sizeof (struct exec) : \
        !            85:   (N_MAGIC(x) == QMAGIC ? 0 : sizeof (struct exec)))
        !            86: #endif
        !            87: 
        !            88: #if !defined (N_DATOFF)
        !            89: #define N_DATOFF(x) (N_TXTOFF(x) + (x).a_text)
        !            90: #endif
        !            91: 
        !            92: #if !defined (N_TRELOFF)
        !            93: #define N_TRELOFF(x) (N_DATOFF(x) + (x).a_data)
        !            94: #endif
        !            95: 
        !            96: #if !defined (N_DRELOFF)
        !            97: #define N_DRELOFF(x) (N_TRELOFF(x) + N_TRSIZE(x))
        !            98: #endif
        !            99: 
        !           100: #if !defined (N_SYMOFF)
        !           101: #define N_SYMOFF(x) (N_DRELOFF(x) + N_DRSIZE(x))
        !           102: #endif
        !           103: 
        !           104: #if !defined (N_STROFF)
        !           105: #define N_STROFF(x) (N_SYMOFF(x) + N_SYMSIZE(x))
        !           106: #endif
        !           107: 
        !           108: /* Address of text segment in memory after it is loaded.  */
        !           109: #if !defined (N_TXTADDR)
        !           110: #define N_TXTADDR(x) (N_MAGIC(x) == QMAGIC ? PAGE_SIZE : 0)
        !           111: #endif
        !           112: 
        !           113: /* Address of data segment in memory after it is loaded.
        !           114:    Note that it is up to you to define SEGMENT_SIZE
        !           115:    on machines not listed here.  */
        !           116: #if defined(vax) || defined(hp300) || defined(pyr)
        !           117: #define SEGMENT_SIZE page_size
        !           118: #endif
        !           119: #ifdef sony
        !           120: #define        SEGMENT_SIZE    0x2000
        !           121: #endif /* Sony.  */
        !           122: #ifdef is68k
        !           123: #define SEGMENT_SIZE 0x20000
        !           124: #endif
        !           125: #if defined(m68k) && defined(PORTAR)
        !           126: #define PAGE_SIZE 0x400
        !           127: #define SEGMENT_SIZE PAGE_SIZE
        !           128: #endif
        !           129: 
        !           130: #if !defined(SEGMENT_SIZE)
        !           131: #ifdef linux
        !           132: #if defined(__i386__) || defined(__mc68000__)
        !           133: #define SEGMENT_SIZE   1024
        !           134: #elif defined(__sparc__)
        !           135: #define SEGMENT_SIZE    0x2000
        !           136: #else
        !           137: #if defined(PAGE_SIZE)
        !           138: #define SEGMENT_SIZE   PAGE_SIZE
        !           139: #endif
        !           140: #endif
        !           141: #endif
        !           142: #endif
        !           143: 
        !           144: #define _N_SEGMENT_ROUND(x) (((x) + SEGMENT_SIZE - 1) & ~(SEGMENT_SIZE - 1))
        !           145: 
        !           146: #define _N_TXTENDADDR(x) (N_TXTADDR(x)+(x).a_text)
        !           147: 
        !           148: #ifndef N_DATADDR
        !           149: #define N_DATADDR(x) \
        !           150:     (N_MAGIC(x)==OMAGIC? (_N_TXTENDADDR(x)) \
        !           151:      : (_N_SEGMENT_ROUND (_N_TXTENDADDR(x))))
        !           152: #endif
        !           153: 
        !           154: /* Address of bss segment in memory after it is loaded.  */
        !           155: #if !defined (N_BSSADDR)
        !           156: #define N_BSSADDR(x) (N_DATADDR(x) + (x).a_data)
        !           157: #endif
        !           158: 
        !           159: #if !defined (N_NLIST_DECLARED)
        !           160: struct nlist {
        !           161:   union {
        !           162:     char *n_name;
        !           163:     struct nlist *n_next;
        !           164:     long n_strx;
        !           165:   } n_un;
        !           166:   unsigned char n_type;
        !           167:   char n_other;
        !           168:   short n_desc;
        !           169:   unsigned long n_value;
        !           170: };
        !           171: #endif /* no N_NLIST_DECLARED.  */
        !           172: 
        !           173: #if !defined (N_UNDF)
        !           174: #define N_UNDF 0
        !           175: #endif
        !           176: #if !defined (N_ABS)
        !           177: #define N_ABS 2
        !           178: #endif
        !           179: #if !defined (N_TEXT)
        !           180: #define N_TEXT 4
        !           181: #endif
        !           182: #if !defined (N_DATA)
        !           183: #define N_DATA 6
        !           184: #endif
        !           185: #if !defined (N_BSS)
        !           186: #define N_BSS 8
        !           187: #endif
        !           188: #if !defined (N_FN)
        !           189: #define N_FN 15
        !           190: #endif
        !           191: 
        !           192: #if !defined (N_EXT)
        !           193: #define N_EXT 1
        !           194: #endif
        !           195: #if !defined (N_TYPE)
        !           196: #define N_TYPE 036
        !           197: #endif
        !           198: #if !defined (N_STAB)
        !           199: #define N_STAB 0340
        !           200: #endif
        !           201: 
        !           202: /* The following type indicates the definition of a symbol as being
        !           203:    an indirect reference to another symbol.  The other symbol
        !           204:    appears as an undefined reference, immediately following this symbol.
        !           205: 
        !           206:    Indirection is asymmetrical.  The other symbol's value will be used
        !           207:    to satisfy requests for the indirect symbol, but not vice versa.
        !           208:    If the other symbol does not have a definition, libraries will
        !           209:    be searched to find a definition.  */
        !           210: #define N_INDR 0xa
        !           211: 
        !           212: /* The following symbols refer to set elements.
        !           213:    All the N_SET[ATDB] symbols with the same name form one set.
        !           214:    Space is allocated for the set in the text section, and each set
        !           215:    element's value is stored into one word of the space.
        !           216:    The first word of the space is the length of the set (number of elements).
        !           217: 
        !           218:    The address of the set is made into an N_SETV symbol
        !           219:    whose name is the same as the name of the set.
        !           220:    This symbol acts like a N_DATA global symbol
        !           221:    in that it can satisfy undefined external references.  */
        !           222: 
        !           223: /* These appear as input to LD, in a .o file.  */
        !           224: #define        N_SETA  0x14            /* Absolute set element symbol */
        !           225: #define        N_SETT  0x16            /* Text set element symbol */
        !           226: #define        N_SETD  0x18            /* Data set element symbol */
        !           227: #define        N_SETB  0x1A            /* Bss set element symbol */
        !           228: 
        !           229: /* This is output from LD.  */
        !           230: #define N_SETV 0x1C            /* Pointer to set vector in data area.  */
        !           231: 
        !           232: #if !defined (N_RELOCATION_INFO_DECLARED)
        !           233: /* This structure describes a single relocation to be performed.
        !           234:    The text-relocation section of the file is a vector of these structures,
        !           235:    all of which apply to the text section.
        !           236:    Likewise, the data-relocation section applies to the data section.  */
        !           237: 
        !           238: struct relocation_info
        !           239: {
        !           240:   /* Address (within segment) to be relocated.  */
        !           241:   int r_address;
        !           242:   /* The meaning of r_symbolnum depends on r_extern.  */
        !           243:   unsigned int r_symbolnum:24;
        !           244:   /* Nonzero means value is a pc-relative offset
        !           245:      and it should be relocated for changes in its own address
        !           246:      as well as for changes in the symbol or section specified.  */
        !           247:   unsigned int r_pcrel:1;
        !           248:   /* Length (as exponent of 2) of the field to be relocated.
        !           249:      Thus, a value of 2 indicates 1<<2 bytes.  */
        !           250:   unsigned int r_length:2;
        !           251:   /* 1 => relocate with value of symbol.
        !           252:           r_symbolnum is the index of the symbol
        !           253:          in file's the symbol table.
        !           254:      0 => relocate with the address of a segment.
        !           255:           r_symbolnum is N_TEXT, N_DATA, N_BSS or N_ABS
        !           256:          (the N_EXT bit may be set also, but signifies nothing).  */
        !           257:   unsigned int r_extern:1;
        !           258:   /* Four bits that aren't used, but when writing an object file
        !           259:      it is desirable to clear them.  */
        !           260: #ifdef NS32K
        !           261:   unsigned r_bsr:1;
        !           262:   unsigned r_disp:1;
        !           263:   unsigned r_pad:2;
        !           264: #else
        !           265:   unsigned int r_pad:4;
        !           266: #endif
        !           267: };
        !           268: #endif /* no N_RELOCATION_INFO_DECLARED.  */
        !           269: 
        !           270: 
        !           271: #endif /* __A_OUT_GNU_H__ */

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.