* symfile.c (addr_info_make_relative): New variable sect_name, use it.
	Do not warn on ".gnu.liblist" and ".gnu.conflict".
This commit is contained in:
Jan Kratochvil 2010-03-08 08:32:49 +00:00
parent 08597104eb
commit b0fcb67f7d
2 changed files with 23 additions and 3 deletions

View File

@ -1,3 +1,8 @@
2010-03-08 Jan Kratochvil <jan.kratochvil@redhat.com>
* symfile.c (addr_info_make_relative): New variable sect_name, use it.
Do not warn on ".gnu.liblist" and ".gnu.conflict".
2010-03-08 Joel Brobecker <brobecker@adacore.com>
Memory error when reading wrong core file.

View File

@ -592,7 +592,8 @@ addr_info_make_relative (struct section_addr_info *addrs, bfd *abfd)
for (i = 0; i < addrs->num_sections && addrs->other[i].name; i++)
{
asection *sect = bfd_get_section_by_name (abfd, addrs->other[i].name);
const char *sect_name = addrs->other[i].name;
asection *sect = bfd_get_section_by_name (abfd, sect_name);
if (sect)
{
@ -609,8 +610,22 @@ addr_info_make_relative (struct section_addr_info *addrs, bfd *abfd)
}
else
{
warning (_("section %s not found in %s"), addrs->other[i].name,
bfd_get_filename (abfd));
/* This section does not exist in ABFD, which is normally
unexpected and we want to issue a warning.
However, the ELF prelinker does create a couple of sections
(".gnu.liblist" and ".gnu.conflict") which are marked in the main
executable as loadable (they are loaded in memory from the
DYNAMIC segment) and yet are not present in separate debug info
files. This is fine, and should not cause a warning. Shared
libraries contain just the section ".gnu.liblist" but it is not
marked as loadable there. */
if (!(strcmp (sect_name, ".gnu.liblist") == 0
|| strcmp (sect_name, ".gnu.conflict") == 0))
warning (_("section %s not found in %s"), sect_name,
bfd_get_filename (abfd));
addrs->other[i].addr = 0;
/* SECTINDEX is invalid if ADDR is zero. */