aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gas/ChangeLog11
-rw-r--r--gas/config/obj-coff.c128
-rw-r--r--gas/config/tc-i386.c6
-rw-r--r--gas/gasp.c4
-rw-r--r--gas/output-file.c6
-rw-r--r--gas/symbols.c2
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 <ian@zembu.com>
+ * 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 <ralf@uni-koblenz.de>.
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;