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 | |
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')
-rw-r--r-- | gas/ChangeLog | 5 | ||||
-rw-r--r-- | 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 <ian@cygnus.com> + + * 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 <dje@canuck.cygnus.com> 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); |