aboutsummaryrefslogtreecommitdiff
path: root/gdb/elfread.c
diff options
context:
space:
mode:
Diffstat (limited to 'gdb/elfread.c')
-rw-r--r--gdb/elfread.c37
1 files changed, 15 insertions, 22 deletions
diff --git a/gdb/elfread.c b/gdb/elfread.c
index 7b87cb2..214197c 100644
--- a/gdb/elfread.c
+++ b/gdb/elfread.c
@@ -20,9 +20,7 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
#include "defs.h"
#include "bfd.h"
-#include <time.h> /* For time_t in libbfd.h. */
-#include <sys/types.h> /* For time_t, if not in time.h. */
-#include "libbfd.h" /* For bfd_elf_find_section */
+#include <string.h>
#include "libelf.h"
#include "elf/mips.h"
#include "symtab.h"
@@ -32,7 +30,6 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
#include "stabsread.h"
#include "gdb-stabs.h"
#include "complaints.h"
-#include <string.h>
#include "demangle.h"
/* The struct elfinfo is available only during ELF symbol table and
@@ -579,25 +576,21 @@ elf_symfile_read (objfile, section_offsets, mainline)
}
if (ei.stabsect)
{
- /* STABS sections */
-
- /* FIXME: Sun didn't really know how to implement this well.
- They made .stab sections that don't point to the .stabstr
- section with the sh_link field. BFD doesn't make string table
- sections visible to the caller. So we have to search the
- ELF section table, not the BFD section table, for the string
- table. */
- struct elf32_internal_shdr *elf_sect;
-
- elf_sect = bfd_elf_find_section (abfd, ".stabstr");
- if (elf_sect)
+ asection *str_sect;
+
+ /* Stab sections have an associated string table that looks like
+ a separate section. */
+ str_sect = bfd_get_section_by_name (abfd, ".stabstr");
+
+ /* FIXME should probably warn about a stab section without a stabstr. */
+ if (str_sect)
elfstab_build_psymtabs (objfile,
- section_offsets,
- mainline,
- ei.stabsect->filepos, /* .stab offset */
- bfd_get_section_size_before_reloc (ei.stabsect),/* .stab size */
- (file_ptr) elf_sect->sh_offset, /* .stabstr offset */
- elf_sect->sh_size); /* .stabstr size */
+ section_offsets,
+ mainline,
+ ei.stabsect->filepos,
+ bfd_section_size (abfd, ei.stabsect),
+ str_sect->filepos,
+ bfd_section_size (abfd, str_sect));
}
if (ei.mdebugsect)
{