diff options
Diffstat (limited to 'gas/struc-symbol.h')
-rw-r--r-- | gas/struc-symbol.h | 90 |
1 files changed, 48 insertions, 42 deletions
diff --git a/gas/struc-symbol.h b/gas/struc-symbol.h index 541f65c..1db476f 100644 --- a/gas/struc-symbol.h +++ b/gas/struc-symbol.h @@ -1,39 +1,42 @@ /* struct_symbol.h - Internal symbol structure Copyright (C) 1987, 1992 Free Software Foundation, Inc. - + This file is part of GAS, the GNU Assembler. - + GAS is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2, or (at your option) any later version. - + GAS is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. - + oYou should have received a copy of the GNU General Public License along with GAS; see the file COPYING. If not, write to the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */ +#ifndef __struc_symbol_h__ +#define __struc_symbol_h__ + struct symbol /* our version of an nlist node */ { - obj_symbol_type sy_symbol; /* what we write in .o file (if permitted) */ - unsigned long sy_name_offset; /* 4-origin position of sy_name in symbols */ - /* part of object file. */ - /* 0 for (nameless) .stabd symbols. */ - /* Not used until write_object_file() time. */ - long sy_number; /* 24 bit symbol number. */ - /* Symbol numbers start at 0 and are */ - /* unsigned. */ - struct symbol *sy_next; /* forward chain, or NULL */ + obj_symbol_type sy_symbol; /* what we write in .o file (if permitted) */ + unsigned long sy_name_offset; /* 4-origin position of sy_name in symbols */ + /* part of object file. */ + /* 0 for (nameless) .stabd symbols. */ + /* Not used until write_object_file() time. */ + long sy_number; /* 24 bit symbol number. */ + /* Symbol numbers start at 0 and are */ + /* unsigned. */ + struct symbol *sy_next; /* forward chain, or NULL */ #ifdef SYMBOLS_NEED_BACKPOINTERS - struct symbol *sy_previous; /* backward chain, or NULL */ + struct symbol *sy_previous; /* backward chain, or NULL */ #endif /* SYMBOLS_NEED_BACKPOINTERS */ - struct frag *sy_frag; /* NULL or -> frag this symbol attaches to. */ - struct symbol *sy_forward; /* value is really that of this other symbol */ - /* We will probably want to add a sy_segment here soon. */ + struct frag *sy_frag; /* NULL or -> frag this symbol attaches to. */ + struct symbol *sy_forward; /* value is really that of this other symbol */ + /* We will probably want to add a sy_segment here soon. */ }; typedef struct symbol symbolS; @@ -41,20 +44,21 @@ typedef struct symbol symbolS; typedef unsigned valueT; /* The type of n_value. Helps casting. */ #ifndef WORKING_DOT_WORD -struct broken_word { - struct broken_word *next_broken_word;/* One of these strucs per .word x-y */ - fragS *frag; /* Which frag its in */ - char *word_goes_here;/* Where in the frag it is */ - fragS *dispfrag; /* where to add the break */ - symbolS *add; /* symbol_x */ - symbolS *sub; /* - symbol_y */ - long addnum; /* + addnum */ - int added; /* nasty thing happend yet? */ - /* 1: added and has a long-jump */ - /* 2: added but uses someone elses long-jump */ - struct broken_word *use_jump; /* points to broken_word with a similar +struct broken_word + { + struct broken_word *next_broken_word; /* One of these strucs per .word x-y */ + fragS *frag; /* Which frag its in */ + char *word_goes_here; /* Where in the frag it is */ + fragS *dispfrag; /* where to add the break */ + symbolS *add; /* symbol_x */ + symbolS *sub; /* - symbol_y */ + long addnum; /* + addnum */ + int added; /* nasty thing happend yet? */ + /* 1: added and has a long-jump */ + /* 2: added but uses someone elses long-jump */ + struct broken_word *use_jump; /* points to broken_word with a similar long-jump */ -}; + }; extern struct broken_word *broken_words; #endif /* ndef WORKING_DOT_WORD */ @@ -63,27 +67,27 @@ extern struct broken_word *broken_words; * This will change for infinite-segments support (e.g. COFF). */ /* #define SYMBOL_TYPE_TO_SEGMENT(symP) ( N_TYPE_seg [(int) (symP)->sy_type & N_TYPE] ) */ -extern segT N_TYPE_seg[]; /* subseg.c */ +extern segT N_TYPE_seg[]; /* subseg.c */ #define SEGMENT_TO_SYMBOL_TYPE(seg) ( seg_N_TYPE [(int) (seg)] ) -extern const short seg_N_TYPE[]; /* subseg.c */ +extern const short seg_N_TYPE[];/* subseg.c */ #define N_REGISTER 30 /* Fake N_TYPE value for SEG_REGISTER */ #ifdef SYMBOLS_NEED_BACKPOINTERS #if __STDC__ == 1 -void symbol_clear_list_pointers(symbolS *symbolP); -void symbol_insert(symbolS *addme, symbolS *target, symbolS **rootP, symbolS **lastP); -void symbol_remove(symbolS *symbolP, symbolS **rootP, symbolS **lastP); -void verify_symbol_chain(symbolS *rootP, symbolS *lastP); +void symbol_clear_list_pointers (symbolS * symbolP); +void symbol_insert (symbolS * addme, symbolS * target, symbolS ** rootP, symbolS ** lastP); +void symbol_remove (symbolS * symbolP, symbolS ** rootP, symbolS ** lastP); +void verify_symbol_chain (symbolS * rootP, symbolS * lastP); #else /* not __STDC__ */ -void symbol_clear_list_pointers(); -void symbol_insert(); -void symbol_remove(); -void verify_symbol_chain(); +void symbol_clear_list_pointers (); +void symbol_insert (); +void symbol_remove (); +void verify_symbol_chain (); #endif /* not __STDC__ */ @@ -96,13 +100,15 @@ void verify_symbol_chain(); #endif /* SYMBOLS_NEED_BACKPOINTERS */ #if __STDC__ == 1 -void symbol_append(symbolS *addme, symbolS *target, symbolS **rootP, symbolS **lastP); +void symbol_append (symbolS * addme, symbolS * target, symbolS ** rootP, symbolS ** lastP); #else /* not __STDC__ */ -void symbol_append(); +void symbol_append (); #endif /* not __STDC__ */ #define symbol_next(s) ((s)->sy_next) +#endif /* __struc_symbol_h__ */ + /* * Local Variables: * comment-column: 0 |