* ecoff.c (ecoff_build_lineno): Don't try to store the address

difference if the next address is before the current one.
This commit is contained in:
Ian Lance Taylor 1996-02-07 20:20:56 +00:00
parent 011d16ac04
commit c15ea23aaf
2 changed files with 23 additions and 8 deletions

View File

@ -1,5 +1,8 @@
Wed Feb 7 14:12:03 1996 Ian Lance Taylor <ian@cygnus.com> Wed Feb 7 14:12:03 1996 Ian Lance Taylor <ian@cygnus.com>
* 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. * config/tc-m68k.c (struct m68k_cpu): Add alias field.
(archs): Initialize new field. (archs): Initialize new field.
(m68k_ip): Don't list alias names when listing CPUs which support (m68k_ip): Don't list alias names when listing CPUs which support

View File

@ -2134,6 +2134,7 @@ add_procedure (func)
{ {
register varray_t *vp; register varray_t *vp;
register proc_t *new_proc_ptr; register proc_t *new_proc_ptr;
symbolS *sym;
#ifdef ECOFF_DEBUG #ifdef ECOFF_DEBUG
if (debug) if (debug)
@ -2160,10 +2161,13 @@ add_procedure (func)
new_proc_ptr->pdr.lnLow = -1; new_proc_ptr->pdr.lnLow = -1;
new_proc_ptr->pdr.lnHigh = -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. */ /* Push the start of the function. */
new_proc_ptr->sym = add_ecoff_symbol ((const char *) NULL, st_Proc, sc_Text, new_proc_ptr->sym = add_ecoff_symbol ((const char *) NULL, st_Proc, sc_Text,
symbol_find_or_make (func), sym, (bfd_vma) 0, (symint_t) 0,
(bfd_vma) 0, (symint_t) 0,
(symint_t) 0); (symint_t) 0);
++proc_cnt; ++proc_cnt;
@ -3746,16 +3750,17 @@ ecoff_build_lineno (backend, buf, bufend, offset, linecntptr)
before it is used. */ before it is used. */
count = 1; 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 count = ((l->next->frag->fr_address + l->next->paddr
- (l->frag->fr_address + l->paddr)) - (l->frag->fr_address + l->paddr))
>> 2); >> 2);
if (count <= 0) }
{ else
/* Don't change last, so we still get the right delta. */ {
continue; /* Don't change last, so we still get the right delta. */
} continue;
} }
if (l->file != file || l->proc != proc) if (l->file != file || l->proc != proc)
@ -4058,6 +4063,9 @@ ecoff_build_symbols (backend, buf, bufend, offset)
sym_ptr->ecoff_sym.asym.value = sym_ptr->ecoff_sym.asym.value =
as_sym->ecoff_extern_size; 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)) else if (S_IS_COMMON (as_sym))
{ {
@ -4175,6 +4183,10 @@ ecoff_build_symbols (backend, buf, bufend, offset)
sym_ptr->ecoff_sym.asym.value = sym_ptr->ecoff_sym.asym.value =
(S_GET_VALUE (as_sym) (S_GET_VALUE (as_sym)
- S_GET_VALUE (begin_ptr->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 else if (begin_type == st_Block
&& sym_ptr->ecoff_sym.asym.sc != (int) sc_Info) && sym_ptr->ecoff_sym.asym.sc != (int) sc_Info)