diff options
author | Ian Lance Taylor <ian@airs.com> | 1993-12-06 17:31:05 +0000 |
---|---|---|
committer | Ian Lance Taylor <ian@airs.com> | 1993-12-06 17:31:05 +0000 |
commit | e03c0cc67016bb6c50add63e0176a4c3cd0f011e (patch) | |
tree | 3bae27291c07e86bf4459bc93f88dd61d25f4f95 /gdb/elfread.c | |
parent | a17535c780bc66cecbfaa51a8bdcc9bbfb27bcaf (diff) | |
download | gdb-e03c0cc67016bb6c50add63e0176a4c3cd0f011e.zip gdb-e03c0cc67016bb6c50add63e0176a4c3cd0f011e.tar.gz gdb-e03c0cc67016bb6c50add63e0176a4c3cd0f011e.tar.bz2 |
Added Irix 5 support.
* configure.in (mips-sgi-irix5*): New host and target. Use irix5
for both.
* config/mips/irix5.mh, config/mips/irix5.mt,
config/mips/xm-irix5.h, config/mips/nm-irix5.h,
config/mips/tm-irix5.h, irix5-nat.c: New files for Irix 5 support.
* mdebugread.c: New file, split out of mipsread.c. Added
elfmdebug_build_psymtabs routine. Added some checks on external
symbols. Changed code to keep ecoff_debug_info and
ecoff_debug_swap structs in the psymtab and in global pointers
rather than retrieving them from the bfd. Also changed to keep
the pending list with the psymtab rather than the objfile (each
psymtab for a single objfile points to the same pending list).
* mipsread.c: Bulk of file moved into mdebugread.c, leaving just
the sym_fns.
* Makefile.in (SFILES): Added mdebugread.c.
(OBS): Added mdebugread.o.
(mdebugread.o): New target.
* symfile.h: Declare mdebug_build_psymtabs and
elfmdebug_build_psymtabs.
* elfread.c (struct elfinfo): Added mdebugsect field.
(elf_locate_sections): Remember location of .mdebug section.
(elf_symfile_read): Call elfmdebug_build_psymtabs on .mdebug
section.
* infrun.c (AT_FUNCTION_START): Set to 0 if not already defined.
(wait_for_inferior): Use AT_FUNCTION_START if it is defined to see
if PC is at the start of a function.
* mips-tdep.c (read_next_frame_reg): Use SIGFRAME_REG_SIZE, and
give it a default definition.
(mips_skip_prologue): Skip instructions which initialize $gp
register.
(in_sigtramp): New procedure, moved in from mipsread.c.
* config/mips/tm-mips.h: Declare in_sigtramp.
Diffstat (limited to 'gdb/elfread.c')
-rw-r--r-- | gdb/elfread.c | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/gdb/elfread.c b/gdb/elfread.c index 1a0eee5..11a8c0e 100644 --- a/gdb/elfread.c +++ b/gdb/elfread.c @@ -45,6 +45,7 @@ struct elfinfo { unsigned int lnsize; /* Size of dwarf line number section */ asection *stabsect; /* Section pointer for .stab section */ asection *stabindexsect; /* Section pointer for .stab.index section */ + asection *mdebugsect; /* Section pointer for .mdebug section */ }; /* Various things we might complain about... */ @@ -136,6 +137,10 @@ elf_locate_sections (ignore_abfd, sectp, eip) { ei -> stabindexsect = sectp; } + else if (STREQ (sectp -> name, ".mdebug")) + { + ei -> mdebugsect = sectp; + } } #if 0 /* Currently unused */ @@ -447,7 +452,8 @@ elf_symtab_read (abfd, addr, objfile) format to look for: FIXME!!! dwarf_build_psymtabs() builds psymtabs for DWARF symbols; - elfstab_build_psymtabs() handles STABS symbols. + elfstab_build_psymtabs() handles STABS symbols; + mdebug_build_psymtabs() handles ECOFF debugging information. Note that ELF files have a "minimal" symbol table, which looks a lot like a COFF symbol table, but has only the minimal information necessary @@ -519,6 +525,17 @@ elf_symfile_read (objfile, section_offsets, mainline) (file_ptr) elf_sect->sh_offset, /* .stabstr offset */ elf_sect->sh_size); /* .stabstr size */ } + if (ei.mdebugsect) + { + const struct ecoff_debug_swap *swap; + + /* .mdebug section, presumably holding ECOFF debugging + information. */ + swap = get_elf_backend_data (abfd)->elf_backend_ecoff_debug_swap; + if (swap) + elfmdebug_build_psymtabs (objfile, swap, ei.mdebugsect, + section_offsets); + } if (!have_partial_symbols ()) { |