From 0192b099bde982f3d5ef9a74cb8a5b0dae816f2a Mon Sep 17 00:00:00 2001 From: Ian Lance Taylor Date: Mon, 27 Jan 1997 22:41:43 +0000 Subject: [PATCH] * ecoff.c (ecoff_build_symbols): Don't generate a local ECOFF symbol for a common symbol. --- gas/ChangeLog | 5 +++++ gas/ecoff.c | 14 ++++++++++++-- 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/gas/ChangeLog b/gas/ChangeLog index e2aece6..c29e5e2 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,8 @@ +Mon Jan 27 17:41:20 1997 Ian Lance Taylor + + * ecoff.c (ecoff_build_symbols): Don't generate a local ECOFF + symbol for a common symbol. + Wed Jan 22 10:39:39 1997 Doug Evans Patch presumed to have been checked in awhile ago but wasn't. diff --git a/gas/ecoff.c b/gas/ecoff.c index 960032e..e8d66c3 100644 --- a/gas/ecoff.c +++ b/gas/ecoff.c @@ -3612,8 +3612,7 @@ ecoff_stab (sec, what, string, type, other, desc) } else { - as_bad (".stabs expression too complex"); - sym = NULL; + sym = make_expr_symbol (&exp); value = 0; addend = 0; } @@ -4165,6 +4164,11 @@ ecoff_build_symbols (backend, buf, bufend, offset) && ! ECOFF_IS_STAB (&sym_ptr->ecoff_sym.asym)) local = 0; + /* This is just an external symbol if it is a + common symbol. */ + if (S_IS_COMMON (as_sym)) + local = 0; + /* If an st_end symbol has an associated gas symbol, then it is a local label created for a .bend or .end directive. Stabs line @@ -4231,6 +4235,12 @@ ecoff_build_symbols (backend, buf, bufend, offset) sym_ptr->ecoff_sym.asym.value = (S_GET_VALUE (as_sym) - S_GET_VALUE (begin_ptr->as_sym)); + + /* If the size is odd, this is probably a + mips16 function; force it to be even. */ + if ((sym_ptr->ecoff_sym.asym.value & 1) != 0) + ++sym_ptr->ecoff_sym.asym.value; + #ifdef S_SET_SIZE S_SET_SIZE (begin_ptr->as_sym, sym_ptr->ecoff_sym.asym.value); -- 2.7.4