diff options
author | Jan Kratochvil <jan.kratochvil@redhat.com> | 2010-03-08 08:32:49 +0000 |
---|---|---|
committer | Jan Kratochvil <jan.kratochvil@redhat.com> | 2010-03-08 08:32:49 +0000 |
commit | 16558457783d71e2856ff2b9ceaa83199d2d9811 (patch) | |
tree | 799c4e7f4f552427ccb6f054ec457e8cba780681 /gdb | |
parent | c961a8da422283662e09ee498c0598d48fc9d70f (diff) | |
download | gdb-16558457783d71e2856ff2b9ceaa83199d2d9811.tar.gz |
gdb/
* symfile.c (addr_info_make_relative): New variable sect_name, use it.
Do not warn on ".gnu.liblist" and ".gnu.conflict".
Diffstat (limited to 'gdb')
-rw-r--r-- | gdb/ChangeLog | 5 | ||||
-rw-r--r-- | gdb/symfile.c | 21 |
2 files changed, 23 insertions, 3 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 39c0c789c37..71a46794e03 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -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. diff --git a/gdb/symfile.c b/gdb/symfile.c index dbb396caff5..aabb94580b8 100644 --- a/gdb/symfile.c +++ b/gdb/symfile.c @@ -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. */ |