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

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 } |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Value: |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Value: |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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 */\ ) |
|
|
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 */\ ) |
|
|
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 */\ ) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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 };
|
1.3.9.1