* dwarf2read.c (partial_read_comp_unit_head): Set header->offset,
[deliverable/binutils-gdb.git] / gas / symbols.h
CommitLineData
252b5132 1/* symbols.h -
9758f3fc 2 Copyright 1987, 1990, 1992, 1993, 1994, 1995, 1997, 1999, 2000, 2001,
aa820537 3 2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
252b5132
RH
4
5 This file is part of GAS, the GNU Assembler.
6
7 GAS is free software; you can redistribute it and/or modify
8 it under the terms of the GNU General Public License as published by
ec2655a6 9 the Free Software Foundation; either version 3, or (at your option)
252b5132
RH
10 any later version.
11
12 GAS is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 GNU General Public License for more details.
16
17 You should have received a copy of the GNU General Public License
18 along with GAS; see the file COPYING. If not, write to the Free
4b4da160
NC
19 Software Foundation, 51 Franklin Street - Fifth Floor, Boston, MA
20 02110-1301, USA. */
252b5132 21
a01b9fa4 22extern struct obstack notes; /* eg FixS live here. */
252b5132
RH
23
24extern struct obstack cond_obstack; /* this is where we track .ifdef/.endif
25 (if we do that at all). */
26
27extern symbolS *symbol_rootP; /* all the symbol nodes */
28extern symbolS *symbol_lastP; /* last struct symbol we made, or NULL */
29
30extern symbolS abs_symbol;
4a826962 31extern symbolS dot_symbol;
252b5132
RH
32
33extern int symbol_table_frozen;
34
35/* This is non-zero if symbols are case sensitive, which is the
36 default. */
37extern int symbols_case_sensitive;
38
280d71bf
DB
39char * symbol_relc_make_expr (expressionS *);
40char * symbol_relc_make_sym (symbolS *);
41char * symbol_relc_make_value (offsetT);
74937d39
KH
42char *decode_local_label_name (char *s);
43symbolS *symbol_find (const char *name);
06e77878 44symbolS *symbol_find_noref (const char *name, int noref);
74937d39 45symbolS *symbol_find_exact (const char *name);
06e77878 46symbolS *symbol_find_exact_noref (const char *name, int noref);
74937d39
KH
47symbolS *symbol_find_or_make (const char *name);
48symbolS *symbol_make (const char *name);
49symbolS *symbol_new (const char *name, segT segment, valueT value,
50 fragS * frag);
51symbolS *symbol_create (const char *name, segT segment, valueT value,
52 fragS * frag);
00ce9deb
AM
53struct local_symbol *local_symbol_make (const char *name, segT section,
54 valueT val, fragS *frag);
9497f5ac
NC
55symbolS *symbol_clone (symbolS *, int);
56#undef symbol_clone_if_forward_ref
57symbolS *symbol_clone_if_forward_ref (symbolS *, int);
58#define symbol_clone_if_forward_ref(s) symbol_clone_if_forward_ref (s, 0)
74937d39
KH
59symbolS *symbol_temp_new (segT, valueT, fragS *);
60symbolS *symbol_temp_new_now (void);
61symbolS *symbol_temp_make (void);
62
63symbolS *colon (const char *sym_name);
64void local_colon (int n);
65void symbol_begin (void);
4a826962 66void dot_symbol_init (void);
74937d39
KH
67void symbol_print_statistics (FILE *);
68void symbol_table_insert (symbolS * symbolP);
69valueT resolve_symbol_value (symbolS *);
70void resolve_local_symbol_values (void);
2e1e12b1 71int snapshot_symbol (symbolS **, valueT *, segT *, fragS **);
74937d39
KH
72
73void print_symbol_value (symbolS *);
74void print_expr (expressionS *);
75void print_expr_1 (FILE *, expressionS *);
76void print_symbol_value_1 (FILE *, symbolS *);
77
78int dollar_label_defined (long l);
79void dollar_label_clear (void);
80void define_dollar_label (long l);
81char *dollar_label_name (long l, int augend);
82
83void fb_label_instance_inc (long label);
84char *fb_label_name (long n, long augend);
85
86extern void copy_symbol_attributes (symbolS *, symbolS *);
252b5132
RH
87
88/* Get and set the values of symbols. These used to be macros. */
74937d39
KH
89extern valueT S_GET_VALUE (symbolS *);
90extern void S_SET_VALUE (symbolS *, valueT);
252b5132 91
74937d39
KH
92extern int S_IS_FUNCTION (symbolS *);
93extern int S_IS_EXTERNAL (symbolS *);
94extern int S_IS_WEAK (symbolS *);
06e77878
AO
95extern int S_IS_WEAKREFR (symbolS *);
96extern int S_IS_WEAKREFD (symbolS *);
74937d39
KH
97extern int S_IS_COMMON (symbolS *);
98extern int S_IS_DEFINED (symbolS *);
99extern int S_FORCE_RELOC (symbolS *, int);
100extern int S_IS_DEBUG (symbolS *);
101extern int S_IS_LOCAL (symbolS *);
74937d39 102extern int S_IS_STABD (symbolS *);
9497f5ac
NC
103extern int S_IS_VOLATILE (const symbolS *);
104extern int S_IS_FORWARD_REF (const symbolS *);
74937d39
KH
105extern const char *S_GET_NAME (symbolS *);
106extern segT S_GET_SEGMENT (symbolS *);
107extern void S_SET_SEGMENT (symbolS *, segT);
108extern void S_SET_EXTERNAL (symbolS *);
977cdf5a 109extern void S_SET_NAME (symbolS *, const char *);
74937d39
KH
110extern void S_CLEAR_EXTERNAL (symbolS *);
111extern void S_SET_WEAK (symbolS *);
06e77878
AO
112extern void S_SET_WEAKREFR (symbolS *);
113extern void S_CLEAR_WEAKREFR (symbolS *);
114extern void S_SET_WEAKREFD (symbolS *);
115extern void S_CLEAR_WEAKREFD (symbolS *);
74937d39 116extern void S_SET_THREAD_LOCAL (symbolS *);
9497f5ac 117extern void S_SET_VOLATILE (symbolS *);
92757bc9 118extern void S_CLEAR_VOLATILE (symbolS *);
9497f5ac 119extern void S_SET_FORWARD_REF (symbolS *);
252b5132 120
49309057
ILT
121#ifndef WORKING_DOT_WORD
122struct broken_word
123 {
124 /* Linked list -- one of these structures per ".word x-y+C"
125 expression. */
126 struct broken_word *next_broken_word;
127 /* Segment and subsegment for broken word. */
128 segT seg;
129 subsegT subseg;
130 /* Which frag is this broken word in? */
131 fragS *frag;
132 /* Where in the frag is it? */
133 char *word_goes_here;
134 /* Where to add the break. */
135 fragS *dispfrag; /* where to add the break */
136 /* Operands of expression. */
137 symbolS *add;
138 symbolS *sub;
139 offsetT addnum;
140
47eebc20 141 int added; /* nasty thing happened yet? */
49309057
ILT
142 /* 1: added and has a long-jump */
143 /* 2: added but uses someone elses long-jump */
144
145 /* Pointer to broken_word with a similar long-jump. */
146 struct broken_word *use_jump;
147 };
148extern struct broken_word *broken_words;
149#endif /* ndef WORKING_DOT_WORD */
150
151/*
152 * Current means for getting from symbols to segments and vice verse.
153 * This will change for infinite-segments support (e.g. COFF).
154 */
155extern const segT N_TYPE_seg[]; /* subseg.c */
156
157#define SEGMENT_TO_SYMBOL_TYPE(seg) ( seg_N_TYPE [(int) (seg)] )
158extern const short seg_N_TYPE[];/* subseg.c */
159
160#define N_REGISTER 30 /* Fake N_TYPE value for SEG_REGISTER */
161
74937d39 162void symbol_clear_list_pointers (symbolS * symbolP);
49309057 163
74937d39
KH
164void symbol_insert (symbolS * addme, symbolS * target,
165 symbolS ** rootP, symbolS ** lastP);
166void symbol_remove (symbolS * symbolP, symbolS ** rootP,
167 symbolS ** lastP);
49309057 168
74937d39 169extern symbolS *symbol_previous (symbolS *);
49309057 170
74937d39 171void verify_symbol_chain (symbolS * rootP, symbolS * lastP);
74937d39
KH
172
173void symbol_append (symbolS * addme, symbolS * target,
174 symbolS ** rootP, symbolS ** lastP);
175
176extern symbolS *symbol_next (symbolS *);
177
178extern expressionS *symbol_get_value_expression (symbolS *);
179extern void symbol_set_value_expression (symbolS *, const expressionS *);
514d955d 180extern offsetT *symbol_X_add_number (symbolS *);
74937d39
KH
181extern void symbol_set_value_now (symbolS *);
182extern void symbol_set_frag (symbolS *, fragS *);
183extern fragS *symbol_get_frag (symbolS *);
184extern void symbol_mark_used (symbolS *);
185extern void symbol_clear_used (symbolS *);
186extern int symbol_used_p (symbolS *);
187extern void symbol_mark_used_in_reloc (symbolS *);
188extern void symbol_clear_used_in_reloc (symbolS *);
189extern int symbol_used_in_reloc_p (symbolS *);
190extern void symbol_mark_mri_common (symbolS *);
191extern void symbol_clear_mri_common (symbolS *);
192extern int symbol_mri_common_p (symbolS *);
193extern void symbol_mark_written (symbolS *);
194extern void symbol_clear_written (symbolS *);
195extern int symbol_written_p (symbolS *);
196extern void symbol_mark_resolved (symbolS *);
197extern int symbol_resolved_p (symbolS *);
198extern int symbol_section_p (symbolS *);
199extern int symbol_equated_p (symbolS *);
200extern int symbol_equated_reloc_p (symbolS *);
201extern int symbol_constant_p (symbolS *);
bdf128d6 202extern int symbol_shadow_p (symbolS *);
74937d39
KH
203extern asymbol *symbol_get_bfdsym (symbolS *);
204extern void symbol_set_bfdsym (symbolS *, asymbol *);
087d837e 205extern int symbol_same_p (symbolS *, symbolS *);
49309057
ILT
206
207#ifdef OBJ_SYMFIELD_TYPE
74937d39
KH
208OBJ_SYMFIELD_TYPE *symbol_get_obj (symbolS *);
209void symbol_set_obj (symbolS *, OBJ_SYMFIELD_TYPE *);
49309057
ILT
210#endif
211
212#ifdef TC_SYMFIELD_TYPE
74937d39
KH
213TC_SYMFIELD_TYPE *symbol_get_tc (symbolS *);
214void symbol_set_tc (symbolS *, TC_SYMFIELD_TYPE *);
49309057 215#endif
This page took 0.525018 seconds and 4 git commands to generate.