diff options
author | Ian Lance Taylor <ian@airs.com> | 1996-02-07 20:20:56 +0000 |
---|---|---|
committer | Ian Lance Taylor <ian@airs.com> | 1996-02-07 20:20:56 +0000 |
commit | c15ea23aaf63dc3dd25253423a428a7138354e27 (patch) | |
tree | 7f114b1c01d082ca34a89858066d64a62e23dd29 /gas/ecoff.c | |
parent | 011d16ac0400ec702fd18f4c0a50075a365d0fcb (diff) | |
download | gdb-c15ea23aaf63dc3dd25253423a428a7138354e27.zip gdb-c15ea23aaf63dc3dd25253423a428a7138354e27.tar.gz gdb-c15ea23aaf63dc3dd25253423a428a7138354e27.tar.bz2 |
* ecoff.c (ecoff_build_lineno): Don't try to store the address
difference if the next address is before the current one.
Diffstat (limited to 'gas/ecoff.c')
-rw-r--r-- | gas/ecoff.c | 28 |
1 files changed, 20 insertions, 8 deletions
diff --git a/gas/ecoff.c b/gas/ecoff.c index 0d70ba3..1bec313 100644 --- a/gas/ecoff.c +++ b/gas/ecoff.c @@ -2134,6 +2134,7 @@ add_procedure (func) { register varray_t *vp; register proc_t *new_proc_ptr; + symbolS *sym; #ifdef ECOFF_DEBUG if (debug) @@ -2160,10 +2161,13 @@ add_procedure (func) new_proc_ptr->pdr.lnLow = -1; new_proc_ptr->pdr.lnHigh = -1; + /* Set the BSF_FUNCTION flag for the symbol. */ + sym = symbol_find_or_make (func); + sym->bsym->flags |= BSF_FUNCTION; + /* Push the start of the function. */ new_proc_ptr->sym = add_ecoff_symbol ((const char *) NULL, st_Proc, sc_Text, - symbol_find_or_make (func), - (bfd_vma) 0, (symint_t) 0, + sym, (bfd_vma) 0, (symint_t) 0, (symint_t) 0); ++proc_cnt; @@ -3746,16 +3750,17 @@ ecoff_build_lineno (backend, buf, bufend, offset, linecntptr) before it is used. */ count = 1; } - else + else if (l->next->frag->fr_address + l->next->paddr + > l->frag->fr_address + l->paddr) { count = ((l->next->frag->fr_address + l->next->paddr - (l->frag->fr_address + l->paddr)) >> 2); - if (count <= 0) - { - /* Don't change last, so we still get the right delta. */ - continue; - } + } + else + { + /* Don't change last, so we still get the right delta. */ + continue; } if (l->file != file || l->proc != proc) @@ -4058,6 +4063,9 @@ ecoff_build_symbols (backend, buf, bufend, offset) sym_ptr->ecoff_sym.asym.value = as_sym->ecoff_extern_size; } +#ifdef S_SET_SIZE + S_SET_SIZE (as_sym, as_sym->ecoff_extern_size); +#endif } else if (S_IS_COMMON (as_sym)) { @@ -4175,6 +4183,10 @@ 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)); +#ifdef S_SET_SIZE + S_SET_SIZE (begin_ptr->as_sym, + sym_ptr->ecoff_sym.asym.value); +#endif } else if (begin_type == st_Block && sym_ptr->ecoff_sym.asym.sc != (int) sc_Info) |