aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gas/ChangeLog4
-rw-r--r--gas/config/obj-coff.c42
-rw-r--r--gas/config/tc-i386.h3
-rw-r--r--gas/expr.c5
4 files changed, 39 insertions, 15 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog
index 5903fd0..a042380 100644
--- a/gas/ChangeLog
+++ b/gas/ChangeLog
@@ -10,6 +10,10 @@
int.
(md_atof): Return NULL rather than 0.
* config/tc-i386.c (md_atof): Change type to int.
+ * expr.c (expr): Change first parameter to int.
+ * config/obj-coff.c: Add declarations for static functions.
+ (coff_frob_symbol): Use SYM_AUXENT.
+ * config/tc-i386.h (flag_16bit_code): Don't declare.
* config/obj-coff.c (obj_coff_section): Default to setting
SEC_LOAD. Don't set SEC_DATA for 'w' modifier.
diff --git a/gas/config/obj-coff.c b/gas/config/obj-coff.c
index a2a3bbd..f52732d 100644
--- a/gas/config/obj-coff.c
+++ b/gas/config/obj-coff.c
@@ -32,8 +32,20 @@
static void obj_coff_bss PARAMS ((int));
const char *s_get_name PARAMS ((symbolS * s));
+static void obj_coff_ln PARAMS ((int));
+static void obj_coff_def PARAMS ((int));
+static void obj_coff_endef PARAMS ((int));
+static void obj_coff_dim PARAMS ((int));
+static void obj_coff_line PARAMS ((int));
+static void obj_coff_size PARAMS ((int));
+static void obj_coff_scl PARAMS ((int));
+static void obj_coff_tag PARAMS ((int));
+static void obj_coff_val PARAMS ((int));
+static void obj_coff_type PARAMS ((int));
+
+/* This is used to hold the symbol built by a sequence of pseudo-ops
+ from .def and .endef. */
static symbolS *def_symbol_in_progress;
-
/* stack stuff */
typedef struct
@@ -334,6 +346,8 @@ c_dot_file_symbol (filename)
{
symbolS *symbolP;
+ /* BFD converts filename to a .file symbol with an aux entry. It
+ also handles chaining. */
symbolP = symbol_new (filename, bfd_abs_section_ptr, 0, &zero_address_frag);
S_SET_STORAGE_CLASS (symbolP, C_FILE);
@@ -928,8 +942,15 @@ obj_coff_val (ignore)
resolved, then copy the segment id from the forward
symbol. */
SF_SET_GET_SEGMENT (def_symbol_in_progress);
+
+ /* FIXME: gcc can generate address expressions here in
+ unusual cases (search for "obscure" in sdbout.c). We
+ just ignore the offset here, thus generating incorrect
+ debugging information. We ignore the rest of the line
+ just below. */
}
- /* Otherwise, it is the name of a non debug symbol and its value will be calculated later. */
+ /* Otherwise, it is the name of a non debug symbol and its value
+ will be calculated later. */
*input_line_pointer = name_end;
}
else
@@ -1037,8 +1058,7 @@ coff_frob_symbol (symp, punt)
coff_last_function = symp;
if (S_GET_NUMBER_AUXILIARY (symp) < 1)
S_SET_NUMBER_AUXILIARY (symp, 1);
- auxp =
- &coffsymbol (symbol_get_bfdsym (symp))->native[1].u.auxent;
+ auxp = SYM_AUXENT (symp);
memset (auxp->x_sym.x_fcnary.x_ary.x_dimen, 0,
sizeof (auxp->x_sym.x_fcnary.x_ary.x_dimen));
}
@@ -2609,12 +2629,11 @@ obj_coff_val (ignore)
symbol. */
SF_SET_GET_SEGMENT (def_symbol_in_progress);
- /* FIXME: gcc can generate address expressions
- here in unusual cases (search for "obscure"
- in sdbout.c). We just ignore the offset
- here, thus generating incorrect debugging
- information. We ignore the rest of the
- line just below. */
+ /* FIXME: gcc can generate address expressions here in
+ unusual cases (search for "obscure" in sdbout.c). We
+ just ignore the offset here, thus generating incorrect
+ debugging information. We ignore the rest of the line
+ just below. */
}
/* Otherwise, it is the name of a non debug symbol and
its value will be calculated later. */
@@ -4430,6 +4449,9 @@ const pseudo_typeS obj_pseudo_table[] =
#ifdef BFD_ASSEMBLER
+static void coff_pop_insert PARAMS ((void));
+static int coff_sec_sym_ok_for_reloc PARAMS ((asection *));
+
/* Support for a COFF emulation. */
static void
diff --git a/gas/config/tc-i386.h b/gas/config/tc-i386.h
index b263b28..641ace9 100644
--- a/gas/config/tc-i386.h
+++ b/gas/config/tc-i386.h
@@ -445,9 +445,6 @@ void i386_validate_fix PARAMS ((struct fix *));
extern const struct relax_type md_relax_table[];
#define TC_GENERIC_RELAX_TABLE md_relax_table
-
-extern int flag_16bit_code;
-
#define md_do_align(n, fill, len, max, around) \
if ((n) && !need_pass_2 \
&& (!(fill) || ((char)*(fill) == (char)0x90 && (len) == 1)) \
diff --git a/gas/expr.c b/gas/expr.c
index fcc633f..acf2804 100644
--- a/gas/expr.c
+++ b/gas/expr.c
@@ -1616,10 +1616,11 @@ operator ()
/* Parse an expression. */
segT
-expr (rank, resultP)
- operator_rankT rank; /* Larger # is higher rank. */
+expr (rankarg, resultP)
+ int rankarg; /* Larger # is higher rank. */
expressionS *resultP; /* Deliver result here. */
{
+ operator_rankT rank = (operator_rankT) rankarg;
segT retval;
expressionS right;
operatorT op_left;