* dwarf2read.c: New file, DWARF 2 reader originally contributed by

Brent Benson, with additions by Gary Funck and Jerry Kreuscher.
	* Makefile.in (COMMON_OBS): Add dwarf2read.o.
	(SFILES): Add dwarf2read.c.
	(dwarf2read.o): Add build rule.
	* symfile.h (dwarf2_has_info, dwarf2_build_psymtabs): Declare
	exported functions.
	* elfread.c (elf_symfile_read): Call them.
	(elf_symtab_read) [HARRIS_TARGET]: Skip some special symbols.
This commit is contained in:
Stan Shebs 1996-07-19 21:16:13 +00:00
parent 540cd16faf
commit fcf0554956
5 changed files with 4448 additions and 5 deletions

View File

@ -1,3 +1,15 @@
Fri Jul 19 14:05:57 1996 Stan Shebs <shebs@andros.cygnus.com>
* dwarf2read.c: New file, DWARF 2 reader originally contributed by
Brent Benson, with additions by Gary Funck and Jerry Kreuscher.
* Makefile.in (COMMON_OBS): Add dwarf2read.o.
(SFILES): Add dwarf2read.c.
(dwarf2read.o): Add build rule.
* symfile.h (dwarf2_has_info, dwarf2_build_psymtabs): Declare
exported functions.
* elfread.c (elf_symfile_read): Call them.
(elf_symtab_read) [HARRIS_TARGET]: Skip some special symbols.
Thu Jul 18 01:22:01 1996 Geoffrey Noer <noer@cygnus.com>
* symfile.c (symfile_bfd_open):

View File

@ -352,7 +352,8 @@ TARGET_FLAGS_TO_PASS = \
SFILES = bcache.c blockframe.c breakpoint.c buildsym.c callback.c c-exp.y \
c-lang.c c-typeprint.c c-valprint.c ch-exp.c ch-lang.c \
ch-typeprint.c ch-valprint.c coffread.c command.c complaints.c \
corefile.c cp-valprint.c dbxread.c demangle.c dwarfread.c \
corefile.c cp-valprint.c \
dbxread.c demangle.c dwarfread.c dwarf2read.c \
elfread.c environ.c eval.c expprint.c \
f-exp.y f-lang.c f-typeprint.c f-valprint.c findvar.c \
gdbtypes.c infcmd.c inflow.c infrun.c language.c \
@ -361,8 +362,9 @@ SFILES = bcache.c blockframe.c breakpoint.c buildsym.c callback.c c-exp.y \
printcmd.c remote.c remote-nrom.c scm-exp.c scm-lang.c scm-valprint.c \
source.c stabsread.c stack.c symfile.c symmisc.c \
symtab.c target.c thread.c top.c \
typeprint.c utils.c valarith.c valops.c \
valprint.c values.c serial.c ser-unix.c mdebugread.c os9kread.c
typeprint.c utils.c \
valarith.c valops.c valprint.c values.c \
serial.c ser-unix.c mdebugread.c os9kread.c
LINTFILES = $(SFILES) $(YYFILES) init.c
@ -467,7 +469,7 @@ COMMON_OBS = version.o blockframe.o breakpoint.o findvar.o stack.o thread.o \
mem-break.o target.o parse.o language.o $(YYOBJ) buildsym.o \
exec.o bcache.o objfiles.o minsyms.o maint.o demangle.o \
dbxread.o coffread.o elfread.o \
dwarfread.o mipsread.o stabsread.o corefile.o \
dwarfread.o dwarf2read.o mipsread.o stabsread.o corefile.o \
c-lang.o ch-exp.o ch-lang.o f-lang.o m2-lang.o \
scm-exp.o scm-lang.o scm-valprint.o complaints.o typeprint.o \
c-typeprint.o ch-typeprint.o f-typeprint.o m2-typeprint.o \
@ -1109,6 +1111,10 @@ dwarfread.o: dwarfread.c $(bfd_h) buildsym.h complaints.h $(defs_h) \
$(expression_h) $(gdbtypes_h) language.h objfiles.h symfile.h \
$(symtab_h) gdb_string.h
dwarf2read.o: dwarf2read.c $(bfd_h) buildsym.h $(defs_h) \
$(expression_h) $(gdbtypes_h) language.h objfiles.h symfile.h \
$(symtab_h) gdb_string.h
elfread.o: elfread.c $(bfd_h) buildsym.h complaints.h $(defs_h) \
gdb-stabs.h objfiles.h symfile.h $(symtab_h) gdb_string.h

4402
gdb/dwarf2read.c Normal file

File diff suppressed because it is too large Load Diff

View File

@ -407,6 +407,17 @@ elf_symtab_read (abfd, addr, objfile, dynamic)
should be harmless (but I encourage people to fix this
in the assembler instead of adding checks here). */
continue;
#ifdef HARRIS_TARGET
else if (sym->name[0] == '.' && sym->name[1] == '.')
{
/* Looks like a Harris compiler generated label for the
purpose of marking instructions that are relevant to
DWARF dies. The assembler can't get rid of these
because they are relocatable addresses that the
linker needs to resolve. */
continue;
}
#endif
else
{
ms_type = mst_file_text;
@ -592,7 +603,12 @@ elf_symfile_read (objfile, section_offsets, mainline)
special ELF sections. We first have to find them... */
bfd_map_over_sections (abfd, elf_locate_sections, (PTR) &ei);
if (ei.dboffset && ei.lnoffset)
if (dwarf2_has_info (abfd) && !offset)
{
/* DWARF 2 sections */
dwarf2_build_psymtabs (objfile, section_offsets, mainline);
}
else if (ei.dboffset && ei.lnoffset)
{
/* DWARF sections */
dwarf_build_psymtabs (objfile,

View File

@ -205,6 +205,13 @@ extern void
dwarf_build_psymtabs PARAMS ((struct objfile *, struct section_offsets *, int,
file_ptr, unsigned int, file_ptr, unsigned int));
/* From dwarf2read.c */
extern int dwarf2_has_info PARAMS ((bfd *abfd));
extern void dwarf2_build_psymtabs PARAMS ((struct objfile *,
struct section_offsets *,
int));
/* From mdebugread.c */
/* Hack to force structures to exist before use in parameter list. */