BSD 3 development
[unix-history] / usr / include / a.out.h
CommitLineData
140724ba
BJ
1/*
2 * Format of an a.out header
3 */
4
5struct exec { /* a.out header */
6 int a_magic; /* magic number */
7 unsigned a_text; /* size of text segment */
8 unsigned a_data; /* size of initialized data */
9 unsigned a_bss; /* size of uninitialized data */
10 unsigned a_syms; /* size of symbol table */
11 unsigned a_entry; /* entry point */
12 unsigned a_trsize; /* size of text relocation */
13 unsigned a_drsize; /* size of data relocation */
14};
15
16#define A_MAGIC1 0407 /* normal */
17#define A_MAGIC2 0410 /* read-only text */
18#define A_MAGIC3 0411 /* separated I&D (not on VAX) */
19#define A_MAGIC4 0405 /* overlay */
20#define A_MAGIC5 0413 /* demand page read-only text */
21
22struct relocation_info {
23 long r_address; /* relative to current segment */
24 long r_symbolnum:24,
25 /* if extern then symbol table */
26 /* ordinal (0, 1, 2, ...) else */
27 /* segment number (same as symbol types) */
28 r_pcrel:1, /* if so, segment offset has already */
29 /* been subtracted */
30 r_length:2, /* 0=byte, 1=word, 2=long */
31 r_extern:1, /* does not include value */
32 /* of symbol referenced */
33 r_offset:1, /* already includes origin */
34 /* of this segment (?) */
35 r_pad:3; /* nothing, yet */
36};
37struct nlist { /* symbol table entry */
38 char n_name[8]; /* symbol name */
39 char n_type; /* type flag */
40 char n_other;
41 short n_desc;
42 unsigned n_value; /* value */
43};
44
45 /* values for type flag */
46#define N_UNDF 0 /* undefined */
47#define N_ABS 02 /* absolute */
48#define N_TEXT 04 /* text */
49#define N_DATA 06 /* data */
50#define N_BSS 08
51#define N_TYPE 037
52#define N_FN 037 /* file name symbol */
53
54#define N_GSYM 0040 /* global sym: name,,type,0 */
55#define N_FNAME 0042 /* procedure name (f77 kludge): name,,,0 */
56#define N_FUN 0044 /* procedure: name,,linenumber,address */
57#define N_STSYM 0046 /* static symbol: name,,type,address */
58#define N_LCSYM 0048 /* .lcomm symbol: name,,type,address */
59#define N_RSYM 0100 /* register sym: name,,register,offset */
60#define N_SLINE 0104 /* src line: ,,linenumber,address */
61#define N_SSYM 0140 /* structure elt: name,,type,struct_offset */
62#define N_SO 0144 /* source file name: name,,,address */
63#define N_LSYM 0200 /* local sym: name,,type,offset */
64#define N_SOL 0204 /* #line source filename: name,,,address */
65#define N_PSYM 0240 /* parameter: name,,type,offset */
66#define N_ENTRY 0244 /* alternate entry: name,,linenumber,address */
67#define N_LBRAC 0300 /* left bracket: ,,nesting level,address */
68#define N_RBRAC 0340 /* right bracket: ,,nesting level,address */
69#define N_BCOMM 0342 /* begin common: name,,, */
70#define N_ECOMM 0344 /* end common: name,,, */
71#define N_ECOML 0348 /* end common (local name): ,,,address */
72#define N_LENG 0376 /* second stab entry with length information */
73
74#define N_EXT 01 /* external bit, or'ed in */
75
76#define FORMAT "%08x"
77
78#define STABTYPES 0340