diff options
author | Doug Evans <dje@google.com> | 2015-04-13 12:50:17 -0700 |
---|---|---|
committer | Doug Evans <dje@google.com> | 2015-04-13 12:50:17 -0700 |
commit | 0d2a7a932244fab27d6c4ce211ea8f7708a1a9cc (patch) | |
tree | 234fd3f8a7dcb81a20eab1016b9744d653a6a21e /binutils | |
parent | 0ff6fcb2f0f2e3c0de3708ec41fb849d1461c9d7 (diff) | |
download | fsf-binutils-gdb-0d2a7a932244fab27d6c4ce211ea8f7708a1a9cc.zip fsf-binutils-gdb-0d2a7a932244fab27d6c4ce211ea8f7708a1a9cc.tar.gz fsf-binutils-gdb-0d2a7a932244fab27d6c4ce211ea8f7708a1a9cc.tar.bz2 |
Fix reading of .debug_str_offsets{,.dwo} twice.
PR binutils/18218
* readelf.c (printable_section_name): Constify sec argument.
(apply_relocations): Ditto. New arg "size". All callers updated.
(load_specific_debug_section): Constify sec argument.
Remove side-effect of modifying sec->sh_size.
Diffstat (limited to 'binutils')
-rw-r--r-- | binutils/ChangeLog | 8 | ||||
-rw-r--r-- | binutils/readelf.c | 15 |
2 files changed, 15 insertions, 8 deletions
diff --git a/binutils/ChangeLog b/binutils/ChangeLog index bd2c715..31eb7a3 100644 --- a/binutils/ChangeLog +++ b/binutils/ChangeLog @@ -1,3 +1,11 @@ +2015-04-13 Doug Evans <dje@google.com> + + PR binutils/18218 + * readelf.c (printable_section_name): Constify sec argument. + (apply_relocations): Ditto. New arg "size". All callers updated. + (load_specific_debug_section): Constify sec argument. + Remove side-effect of modifying sec->sh_size. + 2015-04-09 H.J. Lu <hongjiu.lu@intel.com> * objcopy.c (do_debug_sections): Use bit patterns. diff --git a/binutils/readelf.c b/binutils/readelf.c index db69b5d..ca25136 100644 --- a/binutils/readelf.c +++ b/binutils/readelf.c @@ -550,7 +550,7 @@ print_symbol (int width, const char *symbol) to print multibyte characters, it just interprets them as hex values. */ static const char * -printable_section_name (Elf_Internal_Shdr * sec) +printable_section_name (const Elf_Internal_Shdr * sec) { #define MAX_PRINT_SEC_NAME_LEN 128 static char sec_name_buf [MAX_PRINT_SEC_NAME_LEN + 1]; @@ -11633,11 +11633,11 @@ is_none_reloc (unsigned int reloc_type) static void apply_relocations (void * file, - Elf_Internal_Shdr * section, - unsigned char * start) + const Elf_Internal_Shdr * section, + unsigned char * start, bfd_size_type size) { Elf_Internal_Shdr * relsec; - unsigned char * end = start + section->sh_size; + unsigned char * end = start + size; if (elf_header.e_type != ET_REL) return; @@ -11929,7 +11929,7 @@ dump_section_as_bytes (Elf_Internal_Shdr * section, if (relocate) { - apply_relocations (file, section, start); + apply_relocations (file, section, start, section->sh_size); } else { @@ -12069,7 +12069,7 @@ uncompress_section_contents (unsigned char **buffer, static int load_specific_debug_section (enum dwarf_section_display_enum debug, - Elf_Internal_Shdr * sec, void * file) + const Elf_Internal_Shdr * sec, void * file) { struct dwarf_section * section = &debug_displays [debug].section; char buf [64]; @@ -12109,7 +12109,6 @@ load_specific_debug_section (enum dwarf_section_display_enum debug, and the section size if uncompress is successful. */ free (section->start); section->start = start; - sec->sh_size = size; } section->size = size; } @@ -12118,7 +12117,7 @@ load_specific_debug_section (enum dwarf_section_display_enum debug, return 0; if (debug_displays [debug].relocate) - apply_relocations ((FILE *) file, sec, section->start); + apply_relocations ((FILE *) file, sec, section->start, section->size); return 1; } |