mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2025-01-18 12:24:38 +08:00
c9f02c3e29
Fix a commit 74e1a04b97
("More fixes for reading corrupt ELF files.")
`readelf --version-info' regression that caused "Version definition past
end of section" to be always printed at the end, even with good section
data.
For example with the `mips-linux' target we get:
$ cat ver_def.s
.data
.globl new_foo
.type new_foo, %object
new_foo:
.symver new_foo, foo@@ver_foo
$ cat ver_def.ver
{ global: *foo*; local: *; };
$ as -o ver_def.o ver_def.s
$ ld -e 0 --export-dynamic --version-script=ver_def.ver -o ver_def ver_def.o
$ readelf -V ver_def
Version symbols section '.gnu.version' contains 4 entries:
Addr: 000000000000007e Offset: 0x01007e Link: 2 (.dynsym)
000: 0 (*local*) 2 (ver_foo) 1 (*global*) 2 (ver_foo)
Version definition section '.gnu.version_d' contains 2 entries:
Addr: 0x0000000000000088 Offset: 0x010088 Link: 3 (.dynstr)
000000: Rev: 1 Flags: BASE Index: 1 Cnt: 1 Name: ver_def
0x001c: Rev: 1 Flags: none Index: 2 Cnt: 1 Name: ver_foo
Version definition past end of section
$
The cause is the `if (idx + ent.vd_next <= idx)' condition introduced to
ensure forward progress, which however always triggers for good version
definition section data as the last entry will have its `vd_next' value
set to 0.
Adjust the condition then, to say `if (idx + ent.vd_next < idx)' instead
and to ensure forward progress limit the number of entries processed to
the size of the version definition section, removing the problematic
message from output quoted above, while ensuring the original PR 17531
test case is still handled gracefully.
Add a suitable test case so that we have `readelf --version-info'
coverage; due to the lack of infrastructure needed to run the linker in
the `binutils' test suite and limited justification to implement it add
a new `readelf.exp' script to the `ld' test suite instead, intended to
gather any `readelf' test cases that require the linker to be run. If
ever we decide to have linker infrastructure added to the `binutils'
test suite, then the script can be moved between the test suites.
binutils/
* readelf.c (process_version_sections) <SHT_GNU_verdef>: Limit
the number of entries processed by the section size. Don't
break out of the loop if `ent.vd_next' is 0.
ld/
* testsuite/ld-elf/ver_def.d: New test.
* testsuite/ld-elf/ver_def.ld: New test linker script.
* testsuite/ld-elf/ver_def.ver: New test version script.
* testsuite/ld-elf/ver_def.s: New test source.
* testsuite/ld-elf/readelf.exp: New test script.
322 lines
11 KiB
Plaintext
322 lines
11 KiB
Plaintext
2017-02-24 Maciej W. Rozycki <macro@imgtec.com>
|
||
|
||
* readelf.c (process_version_sections) <SHT_GNU_verdef>: Limit
|
||
the number of entries processed by the section size. Don't
|
||
break out of the loop if `ent.vd_next' is 0.
|
||
|
||
2017-02-23 Jan Kratochvil <jan.kratochvil@redhat.com>
|
||
|
||
* testsuite/binutils-all/dw5.S: New file.
|
||
* testsuite/binutils-all/dw5.W: New file.
|
||
* testsuite/binutils-all/readelf.exp (readelf -wiaoRlL): New test.
|
||
|
||
2017-02-23 Jan Kratochvil <jan.kratochvil@redhat.com>
|
||
|
||
* dwarf.c (read_and_display_attr_value): Support DW_FORM_data16.
|
||
|
||
2017-02-23 Jan Kratochvil <jan.kratochvil@redhat.com>
|
||
|
||
* dwarf.c (display_debug_macro): Support DWARF-5. Rename
|
||
DW_MACRO_GNU_*.
|
||
|
||
2017-02-23 Jan Kratochvil <jan.kratochvil@redhat.com>
|
||
|
||
* dwarf.c (decode_location_expression): Support DW_OP_implicit_pointer,
|
||
DW_OP_const_type, DW_OP_regval_type, DW_OP_deref_type, DW_OP_convert
|
||
and DW_OP_reinterpret.
|
||
(read_and_display_attr_value): Support DW_AT_call_value,
|
||
DW_AT_call_data_value, DW_AT_call_target and
|
||
DW_AT_call_target_clobbered.
|
||
|
||
2017-02-23 Jan Kratochvil <jan.kratochvil@redhat.com>
|
||
|
||
* dwarf.c (fetch_indirect_line_string): New function.
|
||
(abbrev_attr): New field implicit_const.
|
||
(add_abbrev_attr): New parameter implicit_const.
|
||
(process_abbrev_section): Support DW_FORM_implicit_const.
|
||
(decode_location_expression): Support DW_OP_entry_value.
|
||
(read_and_display_attr_value): Add parameter implicit_const. Support
|
||
DW_FORM_line_strp and DW_FORM_implicit_const.
|
||
(read_and_display_attr): Add parameter implicit_const.
|
||
(process_debug_info): Support line_str and DWARF-5.
|
||
(read_debug_line_header): Support DWARF-5.
|
||
(display_formatted_table): New function.
|
||
(display_debug_lines_raw): New parameter file. Support DWARF-5.
|
||
(display_debug_lines_decoded): New parameter fileptr. Support DWARF-5.
|
||
(display_debug_lines): Pass file parameter.
|
||
(display_debug_macro): Update read_and_display_attr_value caller.
|
||
(display_debug_abbrev): Support DW_FORM_implicit_const.
|
||
(display_loclists_list): New function.
|
||
(display_loc_list): Support .debug_loclists.
|
||
(display_debug_ranges_list): New function from display_debug_ranges.
|
||
(display_debug_rnglists_list): New function.
|
||
(display_debug_ranges): Support .debug_rnglists.
|
||
(debug_displays): Add .debug_line_str, .debug_loclists and
|
||
.debug_rnglists.
|
||
* dwarf.h: Include dwarf2.h
|
||
(DWARF2_Internal_LineInfo): Add li_offset_size.
|
||
(DWARF2_Internal_CompUnit): Add cu_unit_type.
|
||
(enum dwarf_section_display_enum): Add line_str.
|
||
* readelf.c (process_section_headers): Add rnglists and loclists.
|
||
|
||
2017-02-23 Jan Kratochvil <jan.kratochvil@redhat.com>
|
||
|
||
* dwarf.c (display_block): Add parameter delimiter.
|
||
(decode_location_expression): Update display_block callers.
|
||
(read_and_display_attr_value): Add parameter delimiter.
|
||
(read_and_display_attr, display_debug_macro): Update
|
||
read_and_display_attr_value caller.
|
||
|
||
2017-02-23 Jan Kratochvil <jan.kratochvil@redhat.com>
|
||
|
||
* dwarf.c (display_loc_list): Use dwarf_vma for offset, base_address
|
||
and off.
|
||
(display_loc_list_dwo): Use dwarf_vma for offset.
|
||
(display_debug_loc): Use dwarf_vma for offset, base_address.
|
||
(struct range_entry, range_entry_compar): Use dwarf_vma for
|
||
ranges_offset.
|
||
(display_debug_ranges): Use dwarf_vma for ranges_offset, offset and
|
||
base_address.
|
||
|
||
2017-02-23 Nick Clifton <nickc@redhat.com>
|
||
|
||
* readelf.c (display_tag_value): Use an explicit signed type for
|
||
the tag parameter.
|
||
(display_gnu_attributes): Use an unsigned integer type for
|
||
attribute tags.
|
||
(display_power_gnu_attribute): Likewise.
|
||
(display_s390_gnu_attribute): Likewise.
|
||
(display_sparc_hwcaps): Likewise.
|
||
(display_sparc_hwcaps2): Likewise.
|
||
(display_sparc_gnu_attribute): Likewise.
|
||
(display_mips_gnu_attribute): Likewise.
|
||
(display_tic6x_attribute): Likewise.
|
||
(display_raw_attribute): Likewise.
|
||
(process_attributes): Likewise.
|
||
(process_arm_specific): Delete redundant function.
|
||
(process_power_specific): Likewise.
|
||
(process_s390_specific): Likewise.
|
||
(process_sparc_specific): Likewise.
|
||
(process_tic6x_specific): Likewise.
|
||
(process_msp430x_specific): Likewise.
|
||
(display_public_gnu_attributes): New function. Displays known
|
||
information about an unknown gnu attribute.
|
||
(display_generic_attribute): New function. Calls
|
||
display_tag_value for non-nul tags.
|
||
(process_arch_specific): Call process_attributes even for
|
||
architectures not known to specifically support gnu attributes.
|
||
|
||
2017-02-22 Jan Kratochvil <jan.kratochvil@redhat.com>
|
||
|
||
* dwarf.c (decode_location_expression): Display also OP.
|
||
|
||
2017-02-22 Maciej W. Rozycki <macro@imgtec.com>
|
||
|
||
* readelf.c (process_version_sections) <SHT_GNU_verdef>: Print a
|
||
new line between the heading and the first version definition
|
||
entry.
|
||
|
||
2017-02-20 Nick Clifton <nickc@redhat.com>
|
||
|
||
PR binutils/21156
|
||
* dwarf.c (cu_tu_indexes_read): Move into...
|
||
(load_cu_tu_indexes): ... here. Change the variable into
|
||
tri-state. Change the function into boolean, returning
|
||
false if the indicies could not be loaded.
|
||
(find_cu_tu_set): Return NULL if the indicies could not be
|
||
loaded.
|
||
|
||
2017-02-17 Nick Clifton <nickc@redhat.com>
|
||
|
||
PR binutils/21156
|
||
* readelf.c (find_section_in_set): Test for invalid section
|
||
indicies.
|
||
|
||
2017-02-17 Nick Clifton <nickc@redhat.com>
|
||
|
||
* readelf.c (get_section_type_name): Add decoding of GNU section
|
||
types.
|
||
|
||
2017-02-15 Nick Clifton <nickc@redhat.com>
|
||
|
||
* MAINTAINERS: (MIPS, MN10300): Move Eric Christopher to Past
|
||
Maintainers section.
|
||
|
||
2017-02-14 Nick Clifton <nickc@redhat.com>
|
||
|
||
PR binutils/21159
|
||
* readelf.c (dump_section_as_strings): Reset the start address if
|
||
no decompression is perfromed.
|
||
(dump_section_as_bytes): Likewise.
|
||
|
||
2017-02-14 Nick Clifton <nickc@redhat.com>
|
||
|
||
PR binutils/21158
|
||
* rddbg.c (read_symbol_stabs_debugging_info): Check for a null or
|
||
empty symbol name.
|
||
|
||
2017-02-14 Nick Clifton <nickc@redhat.com>
|
||
|
||
PR binutils/21157
|
||
* stabs.c (parse_stab_enum_type): Check for corrupt NAME:VALUE
|
||
pairs.
|
||
(parse_number): Exit early if passed an empty string.
|
||
|
||
2017-02-14 Nick Clifton <nickc@redhat.com>
|
||
|
||
PR binutils/21155
|
||
* readelf.c (IN_RANGE): New macro. Tests for an address + offset
|
||
being within a given range.
|
||
(target_specific_reloc_handling): Use macro to test for underflow
|
||
as well as overflow of reloc offset.
|
||
|
||
2017-02-13 Nick Clifton <nickc@redhat.com>
|
||
|
||
PR binutils/21150
|
||
* nm.c (file_symbol): Add test of string length before testing
|
||
string characters.
|
||
|
||
2017-02-13 Nick Clifton <nickc@redhat.com>
|
||
|
||
PR binutils/21135
|
||
* readelf.c (dump_section_as_bytes): Handle the case where
|
||
uncompress_section_contents returns false.
|
||
(dump_section_as_bytes, load_specific_debug_section): Likewise.
|
||
|
||
2017-02-13 Nick Clifton <nickc@redhat.com>
|
||
|
||
PR binutils/21149
|
||
* readelf.c (get_compression_header): Add size parameter. Check
|
||
size against sizeof compression header before attempting to
|
||
extract the header.
|
||
(process_section_headers): Pass size to get_compression_header.
|
||
(dump_section_as_strings): Likewise.
|
||
(dump_section_as_bytes): Likewise.
|
||
(load_specific_debug_section): Likewise.
|
||
|
||
2017-02-13 Nick Clifton <nickc@redhat.com>
|
||
|
||
PR binutils/21148
|
||
* readelf.c (process_version_sections): Include size of auxillary
|
||
version information when checking for buffer overflow.
|
||
|
||
2017-02-13 Nick Clifton <nickc@redhat.com>
|
||
|
||
PR binutils/21147
|
||
* readelf.c (process_section_contents): Fix off by one error
|
||
reporting un-dumped sections.
|
||
|
||
2017-02-13 Nick Clifton <nickc@redhat.com>
|
||
|
||
PR binutils/21139
|
||
* readelf.c (target_specific_reloc_handling): Add num_syms
|
||
parameter. Check for symbol table overflow before accessing
|
||
symbol value. If reloc pointer is NULL, discard all saved state.
|
||
(apply_relocations): Pass num_syms to target_specific_reloc_handling.
|
||
Call target_specific_reloc_handling with a NULL reloc pointer
|
||
after processing all of the relocs.
|
||
|
||
2017-02-13 Nick Clifton <nickc@redhat.com>
|
||
|
||
PR binutils/21137
|
||
* readelf.c (target_specific_reloc_handling): Add end parameter.
|
||
Check for buffer overflow before writing relocated values.
|
||
(apply_relocations): Pass end to target_specific_reloc_handling.
|
||
|
||
2017-01-27 Dilyan Palauzov <dilyan.palauzov@aegee.org>
|
||
Nick Clifton <nickc@redhat.com>
|
||
|
||
PR 20343
|
||
* doc/binutils.texi (ar): Extend documentation of the --plugin
|
||
option. Include a description of where the plugins should be
|
||
located.
|
||
(nm): Likewise.
|
||
|
||
2017-01-23 Nick Clifton <nickc@redhat.com>
|
||
|
||
* MAINTAINERS: Add Bernd to Past Maintainers section.
|
||
(SCORE): Remove Mei Ligang as maintainer. Add to Past Maintainers
|
||
section.
|
||
|
||
2017-01-23 Bernd Schmidt <bschmidt@redhat.com>
|
||
|
||
* MAINTAINERS (BFIN): Remove myself as Blackfin maintainer.
|
||
|
||
2017-01-20 Andrew Burgess <andrew.burgess@embecosm.com>
|
||
|
||
* objdump.c (dump_section_header): Extract max section name length
|
||
from data parameter, use this when formatting output.
|
||
(find_longest_section_name): New function.
|
||
(dump_headers): Calculate longest section name when in wide mode,
|
||
reformat to unify printing of header line.
|
||
|
||
2017-01-18 Bernhard Rosenkranzer <bero@lindev.ch>
|
||
|
||
PR 21059
|
||
* arlex.l: Support processing with flex 2.6.3.
|
||
* deflex.l: Likewise.
|
||
|
||
2017-01-17 Dmitry Timoshkov <dmitry@baikal.ru>
|
||
|
||
* resbin.c: Optional dialog control data immediately follows
|
||
the control description without alignment.
|
||
* testsuite/binutils-all/windres/controldata.rc: New test.
|
||
source.
|
||
* testsuite/binutils-all/windres/controldata.rsd: New test.
|
||
|
||
2017-01-12 Nick Clifton <nickc@redhat.com>
|
||
|
||
PR binutils/20876
|
||
* NEWS: Mention the new feature.
|
||
* testsuite/binutils-all/objdump.exp (test_build_id_debuglink):
|
||
New proc to test the location of separate debug info files using
|
||
the build-id method.
|
||
|
||
2017-01-10 Nick Clifton <nickc@redhat.com>
|
||
|
||
PR 21034
|
||
* stabs.c (parse_stab_members): Fix thinko checking for g++
|
||
version 1 stabs information.
|
||
|
||
2017-01-09 Nick Clifton <nickc@redhat.com>
|
||
|
||
* objdump.c (display_file): Add new parameter 'last_file'. If
|
||
last_file is true, do not call bfd_close at the end of the
|
||
function.
|
||
(main): Set the value of the last_file parameter when calling
|
||
display_file.
|
||
|
||
2017-01-09 Alan Modra <amodra@gmail.com>
|
||
|
||
* readelf.c (process_section_headers): Correct .rel.dyn/.rela.dyn
|
||
comment.
|
||
|
||
2017-01-06 Nick Clifton <nickc@redhat.com>
|
||
|
||
* MAINTAINERS: Move Paul Brook to the Past Maintainers section.
|
||
|
||
2017-01-04 Dilan Palauzov <dilyan.palauzov@aegee.org>
|
||
|
||
PR 20958
|
||
* syslex.l (option): Add noyywrap
|
||
(yywrap): Delete.
|
||
|
||
2017-01-02 Alan Modra <amodra@gmail.com>
|
||
|
||
Update year range in copyright notice of all files.
|
||
|
||
For older changes see ChangeLog-2016
|
||
|
||
Copyright (C) 2017 Free Software Foundation, Inc.
|
||
|
||
Copying and distribution of this file, with or without modification,
|
||
are permitted in any medium without royalty provided the copyright
|
||
notice and this notice are preserved.
|
||
|
||
Local Variables:
|
||
mode: change-log
|
||
left-margin: 8
|
||
fill-column: 74
|
||
version-control: never
|
||
End:
|