diff options
author | Ian Lance Taylor <ian@airs.com> | 1997-01-27 22:41:43 +0000 |
---|---|---|
committer | Ian Lance Taylor <ian@airs.com> | 1997-01-27 22:41:43 +0000 |
commit | 0192b099bde982f3d5ef9a74cb8a5b0dae816f2a (patch) | |
tree | 1172f93664fb75af68cd0ff0714ea8ca8f6ec864 /gas/ecoff.c | |
parent | 5c04f4f7fced8f90816be87e9efde53441447d7a (diff) | |
download | gdb-0192b099bde982f3d5ef9a74cb8a5b0dae816f2a.zip gdb-0192b099bde982f3d5ef9a74cb8a5b0dae816f2a.tar.gz gdb-0192b099bde982f3d5ef9a74cb8a5b0dae816f2a.tar.bz2 |
* ecoff.c (ecoff_build_symbols): Don't generate a local ECOFF
symbol for a common symbol.
Diffstat (limited to 'gas/ecoff.c')
-rw-r--r-- | gas/ecoff.c | 14 |
1 files changed, 12 insertions, 2 deletions
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); |