From c15ea23aaf63dc3dd25253423a428a7138354e27 Mon Sep 17 00:00:00 2001 From: Ian Lance Taylor Date: Wed, 7 Feb 1996 20:20:56 +0000 Subject: [PATCH] * ecoff.c (ecoff_build_lineno): Don't try to store the address difference if the next address is before the current one. --- gas/ChangeLog | 3 +++ gas/ecoff.c | 28 ++++++++++++++++++++-------- 2 files changed, 23 insertions(+), 8 deletions(-) diff --git a/gas/ChangeLog b/gas/ChangeLog index b7165a73942..8dd9dbec8bb 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,5 +1,8 @@ Wed Feb 7 14:12:03 1996 Ian Lance Taylor + * ecoff.c (ecoff_build_lineno): Don't try to store the address + difference if the next address is before the current one. + * config/tc-m68k.c (struct m68k_cpu): Add alias field. (archs): Initialize new field. (m68k_ip): Don't list alias names when listing CPUs which support diff --git a/gas/ecoff.c b/gas/ecoff.c index 0d70ba3b930..1bec31352d9 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) -- 2.30.2