|
|
1.1 root 1: /* a.out.h - Definitions and declarations for GNU-style a.out
2: binaries.
3: Written by Guido Flohr ([email protected]).
4:
5: This file is in the public domain. */
6:
7: #ifndef __A_OUT_GNU_H__
8: #define __A_OUT_GNU_H__ 1
9:
10: struct nlist {
11: union {
12: const char *n_name; /* in memory address */
13: struct nlist *n_next;
14: size_t n_strx; /* string table offset */
15: } n_un;
16: unsigned char n_type;
17: char n_other;
18: short n_desc;
19: uint32_t n_value;
20: };
21:
22: /* sizeof(struct nlist) on disk */
23: #define SIZEOF_STRUCT_NLIST 12
24:
25:
26: #define N_UNDF 0x00 /* undefined */
27: #define N_ABS 0x02 /* absolute */
28: #define N_TEXT 0x04 /* text */
29: #define N_DATA 0x06 /* data */
30: #define N_BSS 0x08 /* bss */
31: #define N_SIZE 0x0c /* pseudo type, defines a symbol's size */
32: #define N_FN 0x1f /* File name of a .o file */
33: #define N_COMM 0x12 /* common (internal to ld) */
34:
35: #define N_EXT 0x01 /* external bit, or'ed in */
36: #define N_TYPE 0x1e /* mask for all the type bits */
37: #define N_STAB 0xe0 /* if any of these bits set, don't discard */
38:
39: /* The following type indicates the definition of a symbol as being
40: an indirect reference to another symbol. The other symbol
41: appears as an undefined reference, immediately following this symbol.
42:
43: Indirection is asymmetrical. The other symbol's value will be used
44: to satisfy requests for the indirect symbol, but not vice versa.
45: If the other symbol does not have a definition, libraries will
46: be searched to find a definition. */
47: #define N_INDR 0x0a
48:
49: /* The following symbols refer to set elements.
50: All the N_SET[ATDB] symbols with the same name form one set.
51: Space is allocated for the set in the text section, and each set
52: element's value is stored into one word of the space.
53: The first word of the space is the length of the set (number of elements).
54:
55: The address of the set is made into an N_SETV symbol
56: whose name is the same as the name of the set.
57: This symbol acts like a N_DATA global symbol
58: in that it can satisfy undefined external references. */
59:
60: /* These appear as input to LD, in a .o file. */
61: #define N_SETA 0x14 /* Absolute set element symbol */
62: #define N_SETT 0x16 /* Text set element symbol */
63: #define N_SETD 0x18 /* Data set element symbol */
64: #define N_SETB 0x1A /* Bss set element symbol */
65:
66: /* This is output from LD. */
67: #define N_SETV 0x1C /* Pointer to set vector in data area. */
68:
69: /* Warning symbol. The text gives a warning message, the next symbol
70: in the table will be undefined. When the symbol is referenced, the
71: message is printed. */
72:
73: #define N_WARNING 0x1e
74:
75: /* Weak symbols. These are a GNU extension to the a.out format. The
76: semantics are those of ELF weak symbols. Weak symbols are always
77: externally visible. The N_WEAK? values are squeezed into the
78: available slots. The value of a N_WEAKU symbol is 0. The values
79: of the other types are the definitions. */
80: #define N_WEAKU 0x0d /* Weak undefined symbol. */
81: #define N_WEAKA 0x0e /* Weak absolute symbol. */
82: #define N_WEAKT 0x0f /* Weak text symbol. */
83: #define N_WEAKD 0x10 /* Weak data symbol. */
84: #define N_WEAKB 0x11 /* Weak bss symbol. */
85:
86: #endif /* __A_OUT_GNU_H__ */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.