From: Pedro Alves Date: Sat, 20 Jun 2009 00:16:02 +0000 (+0000) Subject: * solib-svr4.c (IGNORE_FIRST_LINK_MAP_ENTRY): Avoid dereferencing X-Git-Tag: dje-cgen-play1-branchpoint~100 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=0763ab812686d5587c7db200cb84ccafd655e243;p=thirdparty%2Fbinutils-gdb.git * solib-svr4.c (IGNORE_FIRST_LINK_MAP_ENTRY): Avoid dereferencing NULL pointer. (scan_dyntag): Skip if input bfd isn't elf flavoured. (locate_base): Call elf_locate_base even without an exec_bfd. --- diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 517f6e0f3e8..9e255c7a0b2 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,11 @@ +2009-06-20 Aleksandar Ristovski + Pedro Alves + + * solib-svr4.c (IGNORE_FIRST_LINK_MAP_ENTRY): Avoid dereferencing + NULL pointer. + (scan_dyntag): Skip if input bfd isn't elf flavoured. + (locate_base): Call elf_locate_base even without an exec_bfd. + 2009-06-19 Samuel Bronson PR cli/9903: diff --git a/gdb/solib-svr4.c b/gdb/solib-svr4.c index 9c2fdda7335..29ccbb6f0df 100644 --- a/gdb/solib-svr4.c +++ b/gdb/solib-svr4.c @@ -266,7 +266,7 @@ IGNORE_FIRST_LINK_MAP_ENTRY (struct so_list *so) /* Assume that everything is a library if the dynamic loader was loaded late by a static executable. */ - if (bfd_get_section_by_name (exec_bfd, ".dynamic") == NULL) + if (exec_bfd && bfd_get_section_by_name (exec_bfd, ".dynamic") == NULL) return 0; return extract_typed_address (so->lm_info->lm + lmo->l_prev_offset, @@ -600,9 +600,13 @@ scan_dyntag (int dyntag, bfd *abfd, CORE_ADDR *ptr) if (abfd == NULL) return 0; + + if (bfd_get_flavour (abfd) != bfd_target_elf_flavour) + return 0; + arch_size = bfd_get_arch_size (abfd); if (arch_size == -1) - return 0; + return 0; /* Find the start address of the .dynamic section. */ sect = bfd_get_section_by_name (abfd, ".dynamic"); @@ -825,11 +829,7 @@ locate_base (struct svr4_info *info) though if we don't have some link map offsets to work with. */ if (info->debug_base == 0 && svr4_have_link_map_offsets ()) - { - if (exec_bfd != NULL - && bfd_get_flavour (exec_bfd) == bfd_target_elf_flavour) - info->debug_base = elf_locate_base (); - } + info->debug_base = elf_locate_base (); return info->debug_base; }