aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNick Clifton <nickc@redhat.com>2017-07-25 09:35:36 +0100
committerNick Clifton <nickc@redhat.com>2017-07-25 09:37:34 +0100
commitc6b78c965a96fb152fbd58926edccb5dee2707a5 (patch)
treeda79ee157fd070c1a2484338aae81e7a8d85390c
parentd4aaa2a0744a28143f0b923802b6d1fa8db15887 (diff)
downloadgdb-c6b78c965a96fb152fbd58926edccb5dee2707a5.zip
gdb-c6b78c965a96fb152fbd58926edccb5dee2707a5.tar.gz
gdb-c6b78c965a96fb152fbd58926edccb5dee2707a5.tar.bz2
Stop readelf from returning an error status if asked to dump an emoty section.
PR 21820 * readelf.c (dump_section_as_strings): Do not fail if the section was empty. (dump_section_as_bytes): Likewise.
-rw-r--r--binutils/readelf.c12
1 files changed, 7 insertions, 5 deletions
diff --git a/binutils/readelf.c b/binutils/readelf.c
index 50055a9..67c44f5 100644
--- a/binutils/readelf.c
+++ b/binutils/readelf.c
@@ -12760,7 +12760,7 @@ get_section_contents (Elf_Internal_Shdr * section, FILE * file)
if (num_bytes == 0 || section->sh_type == SHT_NOBITS)
{
- printf (_("\nSection '%s' has no data to dump.\n"),
+ printf (_("Section '%s' has no data to dump.\n"),
printable_section_name (section));
return NULL;
}
@@ -12834,10 +12834,11 @@ dump_section_as_strings (Elf_Internal_Shdr * section, FILE * file)
unsigned char * start;
bfd_boolean some_strings_shown;
- real_start = start = (unsigned char *) get_section_contents (section,
- file);
+ real_start = start = (unsigned char *) get_section_contents (section, file);
if (start == NULL)
- return FALSE;
+ /* PR 21820: Do not fail if the section was empty. */
+ return (section->sh_size == 0 || section->sh_type == SHT_NOBITS) ? TRUE : FALSE;
+
num_bytes = section->sh_size;
printf (_("\nString dump of section '%s':\n"), printable_section_name (section));
@@ -12983,7 +12984,8 @@ dump_section_as_bytes (Elf_Internal_Shdr * section,
real_start = start = (unsigned char *) get_section_contents (section, file);
if (start == NULL)
- return FALSE;
+ /* PR 21820: Do not fail if the section was empty. */
+ return (section->sh_size == 0 || section->sh_type == SHT_NOBITS) ? TRUE : FALSE;
section_size = section->sh_size;