|
|
1.1 root 1: /* sections.h (was subsegs.h in the original GAS)
2: Copyright (C) 1987 Free Software Foundation, Inc.
3:
4: This file is part of GAS, the GNU Assembler.
5:
6: GAS is free software; you can redistribute it and/or modify
7: it under the terms of the GNU General Public License as published by
8: the Free Software Foundation; either version 1, or (at your option)
9: any later version.
10:
11: GAS is distributed in the hope that it will be useful,
12: but WITHOUT ANY WARRANTY; without even the implied warranty of
13: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14: GNU General Public License for more details.
15:
16: You should have received a copy of the GNU General Public License
17: along with GAS; see the file COPYING. If not, write to
18: the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
19:
20: #import <mach-o/loader.h>
21: #import "struc-symbol.h"
22:
23: /*
24: * For every section the user mentions in the assembley program, we make one
25: * struct frchain. Each section has exactly one struct frchain and vice versa.
26: *
27: * Struct frchain's are forward chained (in ascending order of section number).
28: * The chain runs through frch_next of each section.
29: *
30: * From each struct frchain dangles a chain of struct frags. The frags
31: * represent code fragments, for that section, forward chained.
32: */
33:
34: struct frchain { /* control building of a frag chain */
35: struct frag *frch_root; /* 1st struct frag in chain, or NULL */
36: struct frag *frch_last; /* last struct frag in chain, or NULL */
37: struct frchain *frch_next; /* next in chain of struct frchain-s */
38:
39: struct section frch_section; /* section info, name, type, etc. */
40: unsigned long frch_nsect; /* section number (1,2,3,...) */
41: struct fix *frch_fix_root; /* section fixups */
42: isymbolS *frch_isym_root; /* 1st indirect symbol in chain */
43: isymbolS *frch_isym_last; /* last indirect symbol in chain */
44: };
45:
46: typedef struct frchain frchainS;
47:
48: /*
49: * All sections' chains hang off here. NULL means no frchains yet.
50: */
51: extern frchainS *frchain_root;
52:
53: /*
54: * The frchain we are assembling into now. That is, the current section's
55: * frag chain, even if it contains no (complete) frags.
56: */
57: extern frchainS *frchain_now;
58:
59: /*
60: * The global routines defined in sections.c
61: */
62: extern void sections_begin(
63: void);
64:
65: extern frchainS *section_new(
66: char *segname,
67: char *sectname,
68: unsigned long type,
69: unsigned long attributes,
70: unsigned long sizeof_stub);
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.