From bbeae047395eba4cd967ac6043d9ed5aa72cecb0 Mon Sep 17 00:00:00 2001 From: Kevin Buettner Date: Mon, 4 Dec 2000 15:55:09 +0000 Subject: [PATCH] Fix dwarf2read.c related crash in which section index was not being initialized properly. --- gdb/ChangeLog | 7 +++++++ gdb/elfread.c | 27 ++++----------------------- 2 files changed, 11 insertions(+), 23 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index fee320724d2..17221bb3939 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,10 @@ +2000-12-04 Kevin Buettner + + * elfread.c (record_minimal_symbol_and_info): Don't guess + at the section index; instead just always use the bfd index. + (elf_symtab_read): Handle weak symbols appearing in data + sections. + Mon Dec 4 14:36:39 2000 Andrew Cagney * gdbarch.sh (STAB_REG_TO_REGNUM, ECOFF_REG_TO_REGNUM, diff --git a/gdb/elfread.c b/gdb/elfread.c index b964552ea00..a7d50093121 100644 --- a/gdb/elfread.c +++ b/gdb/elfread.c @@ -171,32 +171,13 @@ record_minimal_symbol_and_info (char *name, CORE_ADDR address, enum minimal_symbol_type ms_type, char *info, /* FIXME, is this really char *? */ asection *bfd_section, struct objfile *objfile) { - int section; - - /* Guess the section from the type. This is likely to be wrong in - some cases. */ - switch (ms_type) - { - case mst_text: - case mst_file_text: - section = bfd_section->index; #ifdef SMASH_TEXT_ADDRESS - SMASH_TEXT_ADDRESS (address); + if (ms_type == mst_text || ms_type == mst_file_text) + SMASH_TEXT_ADDRESS (address); #endif - break; - case mst_data: - case mst_file_data: - case mst_bss: - case mst_file_bss: - section = bfd_section->index; - break; - default: - section = -1; - break; - } return prim_record_minimal_symbol_and_info - (name, address, ms_type, info, section, bfd_section, objfile); + (name, address, ms_type, info, bfd_section->index, bfd_section, objfile); } /* @@ -423,7 +404,7 @@ elf_symtab_read (struct objfile *objfile, int dynamic) } else if (sym->section->flags & SEC_ALLOC) { - if (sym->flags & BSF_GLOBAL) + if (sym->flags & (BSF_GLOBAL | BSF_WEAK)) { if (sym->section->flags & SEC_LOAD) { -- 2.30.2