From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: multipart/mixed; boundary="===============5372079879004914843==" MIME-Version: 1.0 From: Mark Wielaard To: elfutils-devel@lists.fedorahosted.org Subject: [PATCH] readelf: Don't print 'for section' when rela section sh_info is zero. Date: Mon, 26 May 2014 23:00:12 +0200 Message-ID: <1401138012-16735-1-git-send-email-mjw@redhat.com> --===============5372079879004914843== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable This matches how handle_relocs_rel already printed the header. Signed-off-by: Mark Wielaard --- src/ChangeLog | 5 +++++ src/readelf.c | 16 +++++++++++++++- 2 files changed, 20 insertions(+), 1 deletions(-) diff --git a/src/ChangeLog b/src/ChangeLog index 4062fc7..5535cff 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,5 +1,10 @@ 2014-05-26 Mark Wielaard = + * readelf.c (handle_relocs_rela): Print header like handle_relocs_rel + does, when sh_info =3D=3D 0. + +2014-05-26 Mark Wielaard + * unstrip.c (find_alloc_sections_prelink): Allow non-split .bss section when sh_size of the original and undo .bss section are equal. = diff --git a/src/readelf.c b/src/readelf.c index 45b1910..ea14a09 100644 --- a/src/readelf.c +++ b/src/readelf.c @@ -1971,7 +1971,8 @@ handle_relocs_rela (Ebl *ebl, GElf_Ehdr *ehdr, Elf_Sc= n *scn, GElf_Shdr *shdr) error (EXIT_FAILURE, 0, gettext ("cannot get section header string table index")); = - printf (ngettext ("\ + if (shdr->sh_info !=3D 0) + printf (ngettext ("\ \nRelocation section [%2zu] '%s' for section [%2u] '%s' at offset %#0" PRI= x64 " contains %d entry:\n", "\ \nRelocation section [%2zu] '%s' for section [%2u] '%s' at offset %#0" PRI= x64 " contains %d entries:\n", @@ -1982,6 +1983,19 @@ handle_relocs_rela (Ebl *ebl, GElf_Ehdr *ehdr, Elf_S= cn *scn, GElf_Shdr *shdr) elf_strptr (ebl->elf, shstrndx, destshdr->sh_name), shdr->sh_offset, nentries); + else + /* The .rela.dyn section does not refer to a specific section but + instead of section index zero. Do not try to print a section + name. */ + printf (ngettext ("\ +\nRelocation section [%2u] '%s' at offset %#0" PRIx64 " contains %d entry:= \n", + "\ +\nRelocation section [%2u] '%s' at offset %#0" PRIx64 " contains %d entrie= s:\n", + nentries), + (unsigned int) elf_ndxscn (scn), + elf_strptr (ebl->elf, shstrndx, shdr->sh_name), + shdr->sh_offset, + nentries); fputs_unlocked (class =3D=3D ELFCLASS32 ? gettext ("\ Offset Type Value Addend Name\n") -- = 1.7.1 --===============5372079879004914843==--