Mon Mar 21 11:02:51 1994 Stu Grossman (grossman at cygnus.com)
* alpha-tdep.c: Gobs of changes (many imported from mips-tdep) to improve remote debugging efficiency. Also fixed problems with doing function calls for programs with no entry points. * infcmd.c (run_stack_dummy): Use CALL_DUMMY_ADDRESS instead of entry_point_address. * inferior.h (PC_IN_CALL_DUMMY): ditto. * mdebugread.c (parse_symbol, parse_procedure, parse_external, parse_lines): Pass section_offsets info to these routines so that we can relocate symbol table entries upon readin. * (psymtab_to_symtab_1): Set symtab->primary to tell objfile_relocate to do relocations for our symbols. * (ecoff_relocate_efi): New routine to relocate adr field of PDRs (which hang off of the symbol table). * Use prim_record_minimal_symbols_and_info instead of prim_record_minimal_symbols to supply section info to make minimal symbol relocations work. * minsyms.c (prim_record_minimal_symbols_and_info): If section is -1, try to deduce it from ms_type. * objfiles.c (objfile_relocate): Use ALL_OBJFILE_SYMTABS where appropriate. Handle relocation of MIPS_EFI symbols special. Also, add code to relocate objfile->sections data structure. * remote.c (get_offsets): Use new protocol message to acquire section offsets from the target. * (remote_wait): Get rid of relocation stuff. That's all handled by objfile_relocate now. * config/alpha/alpha-nw.mt (TM_FILE): Use tm-alphanw.h. * config/alpha/tm-alpha.h: Define CALL_DUMMY_ADDRESS, and VM_MIN_ADDRESS. * config/alpha/tm-alphanw.h: DECR_PC_AFTER_BREAK=0, VM_MIN_ADDRESS=0.
This commit is contained in:
parent
4fd5eed484
commit
72bba93b85
6 changed files with 450 additions and 236 deletions
|
@ -450,7 +450,7 @@ objfile_relocate (objfile, new_offsets)
|
|||
{
|
||||
struct symtab *s;
|
||||
|
||||
for (s = objfile->symtabs; s; s = s->next)
|
||||
ALL_OBJFILE_SYMTABS (objfile, s)
|
||||
{
|
||||
struct linetable *l;
|
||||
struct blockvector *bv;
|
||||
|
@ -492,6 +492,15 @@ objfile_relocate (objfile, new_offsets)
|
|||
SYMBOL_VALUE_ADDRESS (sym) +=
|
||||
ANOFFSET (delta, SYMBOL_SECTION (sym));
|
||||
}
|
||||
#ifdef MIPS_EFI_SYMBOL_NAME
|
||||
/* Relocate Extra Function Info for ecoff. */
|
||||
|
||||
else
|
||||
if (SYMBOL_CLASS (sym) == LOC_CONST
|
||||
&& SYMBOL_NAMESPACE (sym) == LABEL_NAMESPACE
|
||||
&& STRCMP (SYMBOL_NAME (sym), MIPS_EFI_SYMBOL_NAME) == 0)
|
||||
ecoff_relocate_efi (sym, ANOFFSET (delta, s->block_line_section));
|
||||
#endif
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -538,6 +547,37 @@ objfile_relocate (objfile, new_offsets)
|
|||
for (i = 0; i < objfile->num_sections; ++i)
|
||||
ANOFFSET (objfile->section_offsets, i) = ANOFFSET (new_offsets, i);
|
||||
}
|
||||
|
||||
{
|
||||
struct obj_section *s;
|
||||
bfd *abfd;
|
||||
|
||||
abfd = symfile_objfile->obfd;
|
||||
|
||||
for (s = symfile_objfile->sections;
|
||||
s < symfile_objfile->sections_end; ++s)
|
||||
{
|
||||
flagword flags;
|
||||
|
||||
flags = bfd_get_section_flags (abfd, s->the_bfd_section);
|
||||
|
||||
if (flags & SEC_CODE)
|
||||
{
|
||||
s->addr += ANOFFSET (delta, SECT_OFF_TEXT);
|
||||
s->endaddr += ANOFFSET (delta, SECT_OFF_TEXT);
|
||||
}
|
||||
else if (flags & (SEC_DATA | SEC_LOAD))
|
||||
{
|
||||
s->addr += ANOFFSET (delta, SECT_OFF_DATA);
|
||||
s->endaddr += ANOFFSET (delta, SECT_OFF_DATA);
|
||||
}
|
||||
else if (flags & SEC_ALLOC)
|
||||
{
|
||||
s->addr += ANOFFSET (delta, SECT_OFF_BSS);
|
||||
s->endaddr += ANOFFSET (delta, SECT_OFF_BSS);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* Many places in gdb want to test just to see if we have any partial
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue