* 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.
This commit is contained in:
Pedro Alves 2009-06-20 00:16:02 +00:00
parent 9f74293adb
commit 0763ab8126
2 changed files with 15 additions and 7 deletions

View file

@ -1,3 +1,11 @@
2009-06-20 Aleksandar Ristovski <aristovski@qnx.com>
Pedro Alves <pedro@codesourcery.com>
* 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 <naesten@gmail.com> 2009-06-19 Samuel Bronson <naesten@gmail.com>
PR cli/9903: PR cli/9903:

View file

@ -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 /* Assume that everything is a library if the dynamic loader was loaded
late by a static executable. */ 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 0;
return extract_typed_address (so->lm_info->lm + lmo->l_prev_offset, 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) if (abfd == NULL)
return 0; return 0;
if (bfd_get_flavour (abfd) != bfd_target_elf_flavour)
return 0;
arch_size = bfd_get_arch_size (abfd); arch_size = bfd_get_arch_size (abfd);
if (arch_size == -1) if (arch_size == -1)
return 0; return 0;
/* Find the start address of the .dynamic section. */ /* Find the start address of the .dynamic section. */
sect = bfd_get_section_by_name (abfd, ".dynamic"); 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. */ though if we don't have some link map offsets to work with. */
if (info->debug_base == 0 && svr4_have_link_map_offsets ()) if (info->debug_base == 0 && svr4_have_link_map_offsets ())
{ info->debug_base = elf_locate_base ();
if (exec_bfd != NULL
&& bfd_get_flavour (exec_bfd) == bfd_target_elf_flavour)
info->debug_base = elf_locate_base ();
}
return info->debug_base; return info->debug_base;
} }