From a04b544b5604f8dfb1def6e4c3b52935c01f4988 Mon Sep 17 00:00:00 2001 From: Ian Lance Taylor Date: Tue, 3 Aug 1999 15:29:04 +0000 Subject: [PATCH] * config/obj-coff.c (coff_frob_symbol): Always update set_end with next_set_end even if the end symbol is being discarded. * gasp.c: Add ATTRIBUTE_UNUSED as needed for non-BFD_ASSEMBLER. * output-file.c, symbols.c, config/tc-i386.c: Likewise. * config/obj-coff.c: Likewise. (seg_info_type): Remove. (seg_info_off_by_4): Change to array of segT. (s_get_segment): Adjust accordingly. (obj_pseudo_table): Fully initialize sentinel entry. --- gas/ChangeLog | 11 +++++ gas/config/obj-coff.c | 128 ++++++++++++++++++++++++-------------------------- gas/config/tc-i386.c | 6 +-- gas/gasp.c | 4 +- gas/output-file.c | 6 +-- gas/symbols.c | 2 +- 6 files changed, 82 insertions(+), 75 deletions(-) diff --git a/gas/ChangeLog b/gas/ChangeLog index 77c0665..81b29b7 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,5 +1,16 @@ 1999-08-03 Ian Lance Taylor + * config/obj-coff.c (coff_frob_symbol): Always update set_end with + next_set_end even if the end symbol is being discarded. + + * gasp.c: Add ATTRIBUTE_UNUSED as needed for non-BFD_ASSEMBLER. + * output-file.c, symbols.c, config/tc-i386.c: Likewise. + * config/obj-coff.c: Likewise. + (seg_info_type): Remove. + (seg_info_off_by_4): Change to array of segT. + (s_get_segment): Adjust accordingly. + (obj_pseudo_table): Fully initialize sentinel entry. + * config/tc-mips.c (append_insn): Correct INSN_SYNC test. From Ralf Baechle . diff --git a/gas/config/obj-coff.c b/gas/config/obj-coff.c index 781d23d..b50716c 100644 --- a/gas/config/obj-coff.c +++ b/gas/config/obj-coff.c @@ -171,7 +171,7 @@ tag_find_or_make (name) static void obj_coff_bss (ignore) - int ignore; + int ignore ATTRIBUTE_UNUSED; { if (*input_line_pointer == '\n') subseg_new (".bss", get_absolute_expression ()); @@ -183,7 +183,7 @@ obj_coff_bss (ignore) static void obj_coff_weak (ignore) - int ignore; + int ignore ATTRIBUTE_UNUSED; { char *name; int c; @@ -1091,9 +1091,13 @@ coff_frob_symbol (symp, punt) set_end = NULL; } - if (next_set_end != NULL - && ! *punt) - set_end = next_set_end; + if (next_set_end != NULL) + { + if (set_end != NULL) + as_warn ("Warning: internal error: forgetting to set endndx of %s", + S_GET_NAME (set_end)); + set_end = next_set_end; + } if (! *punt && S_GET_STORAGE_CLASS (symp) == C_FCN @@ -1434,9 +1438,10 @@ symbol_dump () #define S_SET_ZEROES(s,v) ((s)->sy_symbol.ost_entry.n_zeroes = (v)) #define MIN(a,b) ((a) < (b)? (a) : (b)) -/* This vector is used to turn an internal segment into a section # - suitable for insertion into a coff symbol table - */ + +/* This vector is used to turn a gas internal segment number into a + section number suitable for insertion into a coff symbol table. + This must correspond to seg_info_off_by_4. */ const short seg_N_TYPE[] = { /* in: segT out: N_TYPE bits */ @@ -1512,50 +1517,41 @@ static void obj_coff_data PARAMS ((int)); static void obj_coff_ident PARAMS ((int)); void obj_coff_section PARAMS ((int)); -/* Section stuff - - We allow more than just the standard 3 sections, infact, we allow - 40 sections, (though the usual three have to be there). - - This structure performs the mappings for us: -*/ - +/* When not using BFD_ASSEMBLER, we permit up to 40 sections. -typedef struct -{ - segT seg_t; - int i; -} seg_info_type; + This array maps a COFF section number into a gas section number. + Because COFF uses negative section numbers, you must add 4 to the + COFF section number when indexing into this array; this is done via + the SEG_INFO_FROM_SECTION_NUMBER macro. This must correspond to + seg_N_TYPE. */ -static const seg_info_type seg_info_off_by_4[] = +static const segT seg_info_off_by_4[] = { - {SEG_PTV, }, - {SEG_NTV, }, - {SEG_DEBUG, }, - {SEG_ABSOLUTE, }, - {SEG_UNKNOWN, }, - {SEG_E0}, {SEG_E1}, {SEG_E2}, {SEG_E3}, {SEG_E4}, - {SEG_E5}, {SEG_E6}, {SEG_E7}, {SEG_E8}, {SEG_E9}, - {SEG_E10},{SEG_E11},{SEG_E12},{SEG_E13},{SEG_E14}, - {SEG_E15},{SEG_E16},{SEG_E17},{SEG_E18},{SEG_E19}, - {SEG_E20},{SEG_E21},{SEG_E22},{SEG_E23},{SEG_E24}, - {SEG_E25},{SEG_E26},{SEG_E27},{SEG_E28},{SEG_E29}, - {SEG_E30},{SEG_E31},{SEG_E32},{SEG_E33},{SEG_E34}, - {SEG_E35},{SEG_E36},{SEG_E37},{SEG_E38},{SEG_E39}, - {(segT)40}, - {(segT)41}, - {(segT)42}, - {(segT)43}, - {(segT)44}, - {(segT)45}, - {(segT)0}, - {(segT)0}, - {(segT)0}, - {SEG_REGISTER} + SEG_PTV, + SEG_NTV, + SEG_DEBUG, + SEG_ABSOLUTE, + SEG_UNKNOWN, + SEG_E0, SEG_E1, SEG_E2, SEG_E3, SEG_E4, + SEG_E5, SEG_E6, SEG_E7, SEG_E8, SEG_E9, + SEG_E10, SEG_E11, SEG_E12, SEG_E13, SEG_E14, + SEG_E15, SEG_E16, SEG_E17, SEG_E18, SEG_E19, + SEG_E20, SEG_E21, SEG_E22, SEG_E23, SEG_E24, + SEG_E25, SEG_E26, SEG_E27, SEG_E28, SEG_E29, + SEG_E30, SEG_E31, SEG_E32, SEG_E33, SEG_E34, + SEG_E35, SEG_E36, SEG_E37, SEG_E38, SEG_E39, + (segT) 40, + (segT) 41, + (segT) 42, + (segT) 43, + (segT) 44, + (segT) 45, + (segT) 0, + (segT) 0, + (segT) 0, + SEG_REGISTER }; - - #define SEG_INFO_FROM_SECTION_NUMBER(x) (seg_info_off_by_4[(x)+4]) static relax_addressT @@ -1576,14 +1572,14 @@ segT s_get_segment (x) symbolS * x; { - return SEG_INFO_FROM_SECTION_NUMBER (x->sy_symbol.ost_entry.n_scnum).seg_t; + return SEG_INFO_FROM_SECTION_NUMBER (x->sy_symbol.ost_entry.n_scnum); } /* calculate the size of the frag chain and fill in the section header to contain all of it, also fill in the addr of the sections */ static unsigned int size_section (abfd, idx) - bfd * abfd; + bfd *abfd ATTRIBUTE_UNUSED; unsigned int idx; { @@ -1847,7 +1843,7 @@ do_relocs_for (abfd, h, file_cursor) static void fill_section (abfd, h, file_cursor) bfd * abfd; - object_headers *h; + object_headers *h ATTRIBUTE_UNUSED; unsigned long *file_cursor; { @@ -2162,7 +2158,7 @@ obj_coff_ln (appline) static void obj_coff_def (what) - int what; + int what ATTRIBUTE_UNUSED; { char name_end; /* Char after the end of name */ char *symbol_name; /* Name of the debug symbol */ @@ -2217,7 +2213,7 @@ unsigned int dim_index; static void obj_coff_endef (ignore) - int ignore; + int ignore ATTRIBUTE_UNUSED; { symbolS *symbolP = 0; /* DIM BUG FIX sac@cygnus.com */ @@ -2400,7 +2396,7 @@ obj_coff_endef (ignore) static void obj_coff_dim (ignore) - int ignore; + int ignore ATTRIBUTE_UNUSED; { int dim_index; @@ -2440,7 +2436,7 @@ obj_coff_dim (ignore) static void obj_coff_line (ignore) - int ignore; + int ignore ATTRIBUTE_UNUSED; { int this_base; const char *name; @@ -2485,7 +2481,7 @@ obj_coff_line (ignore) static void obj_coff_size (ignore) - int ignore; + int ignore ATTRIBUTE_UNUSED; { if (def_symbol_in_progress == NULL) { @@ -2501,7 +2497,7 @@ obj_coff_size (ignore) static void obj_coff_scl (ignore) - int ignore; + int ignore ATTRIBUTE_UNUSED; { if (def_symbol_in_progress == NULL) { @@ -2516,7 +2512,7 @@ obj_coff_scl (ignore) static void obj_coff_tag (ignore) - int ignore; + int ignore ATTRIBUTE_UNUSED; { char *symbol_name; char name_end; @@ -2552,7 +2548,7 @@ obj_coff_tag (ignore) static void obj_coff_type (ignore) - int ignore; + int ignore ATTRIBUTE_UNUSED; { if (def_symbol_in_progress == NULL) { @@ -2574,7 +2570,7 @@ obj_coff_type (ignore) static void obj_coff_val (ignore) - int ignore; + int ignore ATTRIBUTE_UNUSED; { if (def_symbol_in_progress == NULL) { @@ -3001,7 +2997,7 @@ tie_tags () static void crawl_symbols (h, abfd) object_headers *h; - bfd * abfd; + bfd *abfd ATTRIBUTE_UNUSED; { unsigned int i; @@ -3460,7 +3456,7 @@ obj_coff_add_segment (name) void obj_coff_section (ignore) - int ignore; + int ignore ATTRIBUTE_UNUSED; { /* Strip out the section name */ char *section_name, *name; @@ -3541,7 +3537,7 @@ obj_coff_section (ignore) static void obj_coff_text (ignore) - int ignore; + int ignore ATTRIBUTE_UNUSED; { subseg_new (".text", get_absolute_expression ()); } @@ -3549,7 +3545,7 @@ obj_coff_text (ignore) static void obj_coff_data (ignore) - int ignore; + int ignore ATTRIBUTE_UNUSED; { if (flag_readonly_data_in_text) subseg_new (".text", get_absolute_expression () + 1000); @@ -3559,7 +3555,7 @@ obj_coff_data (ignore) static void obj_coff_ident (ignore) - int ignore; + int ignore ATTRIBUTE_UNUSED; { segT current_seg = now_seg; /* save current seg */ subsegT current_subseg = now_subseg; @@ -3818,7 +3814,7 @@ w_symbols (abfd, where, symbol_rootP) static void obj_coff_lcomm (ignore) - int ignore; + int ignore ATTRIBUTE_UNUSED; { s_lcomm(0); return; @@ -4427,7 +4423,7 @@ const pseudo_typeS obj_pseudo_table[] = /* The m88k uses sdef instead of def. */ {"sdef", obj_coff_def, 0}, #endif - {NULL} /* end sentinel */ + {NULL, NULL, 0} /* end sentinel */ }; /* obj_pseudo_table */ #ifdef BFD_ASSEMBLER diff --git a/gas/config/tc-i386.c b/gas/config/tc-i386.c index ac93cf6..8fb0aa7 100644 --- a/gas/config/tc-i386.c +++ b/gas/config/tc-i386.c @@ -3742,8 +3742,8 @@ md_estimate_size_before_relax (fragP, segment) #ifndef BFD_ASSEMBLER void md_convert_frag (headers, sec, fragP) - object_headers *headers; - segT sec; + object_headers *headers ATTRIBUTE_UNUSED; + segT sec ATTRIBUTE_UNUSED; register fragS *fragP; #else void @@ -3877,7 +3877,7 @@ int md_apply_fix3 (fixP, valp, seg) fixS *fixP; /* The fix we're to put in. */ valueT *valp; /* Pointer to the value of the bits. */ - segT seg; /* Segment fix is from. */ + segT seg ATTRIBUTE_UNUSED; /* Segment fix is from. */ { register char *p = fixP->fx_where + fixP->fx_frag->fr_literal; valueT value = *valp; diff --git a/gas/gasp.c b/gas/gasp.c index d8b98b3..42b3076 100644 --- a/gas/gasp.c +++ b/gas/gasp.c @@ -2659,8 +2659,8 @@ do_irp (idx, in, irpc) static void do_local (idx, line) - int idx; - sb *line; + int idx ATTRIBUTE_UNUSED; + sb *line ATTRIBUTE_UNUSED; { ERROR ((stderr, _("LOCAL outside of MACRO"))); } diff --git a/gas/output-file.c b/gas/output-file.c index b05af48..a7df72f 100644 --- a/gas/output-file.c +++ b/gas/output-file.c @@ -86,9 +86,9 @@ output_file_close (filename) #ifndef BFD_ASSEMBLER void output_file_append (where, length, filename) - char *where; - long length; - char *filename; + char *where ATTRIBUTE_UNUSED; + long length ATTRIBUTE_UNUSED; + char *filename ATTRIBUTE_UNUSED; { abort (); } diff --git a/gas/symbols.c b/gas/symbols.c index 07b80ea..60decd8 100644 --- a/gas/symbols.c +++ b/gas/symbols.c @@ -2112,7 +2112,7 @@ symbol_resolved_p (s) int symbol_section_p (s) - symbolS *s; + symbolS *s ATTRIBUTE_UNUSED; { if (LOCAL_SYMBOL_CHECK (s)) return 0; -- 2.7.4