diff options
author | Alan Modra <amodra@gmail.com> | 2019-12-23 18:01:34 +1030 |
---|---|---|
committer | Alan Modra <amodra@gmail.com> | 2019-12-23 18:01:34 +1030 |
commit | cd30bcef4a685ae4a67f8b4a793af0cf7230b9fc (patch) | |
tree | ae8ab56c2f996c81fb1d395fdad4e35f94c1e296 /binutils/ChangeLog | |
parent | 27c1c4271a14cc2ebc27227212c19d4227ef212d (diff) | |
download | gdb-cd30bcef4a685ae4a67f8b4a793af0cf7230b9fc.zip gdb-cd30bcef4a685ae4a67f8b4a793af0cf7230b9fc.tar.gz gdb-cd30bcef4a685ae4a67f8b4a793af0cf7230b9fc.tar.bz2 |
Revise sleb128 and uleb128 reader
This patch catches and reports errors when reading leb128 values,
addressing a FIXME in read_leb128.
* dwarf.h (read_leb128): Update prototype.
(report_leb_status): New inline function.
(SKIP_ULEB, SKIP_SLEB, READ_ULEB, READ_SLEB): Define.
* dwarf.c: Use above macros throughout file. Formatting.
(read_leb128): Reorder params. Add status return param.
Don't stop reading until finding terminator or end of data.
Detect loss of significant bits. Sign extend only on
terminating byte.
(read_sleb128, read_uleb128): Delete functions.
(SKIP_ULEB, SKIP_SLEB, READ_ULEB, READ_SLEB): Delete macros.
(read_and_print_leb128): Rewrite.
(process_extended_line_op): Return a size_t. Use size_t vars.
Adjust to suit new macros. Add proper name size to "data" when
processing DW_LNE_define_file.
(process_abbrev_section): Adjust to suit new macros.
(decode_location_expression, skip_attr_bytes): Likewise.
(get_type_signedness): Likewise.
(read_and_display_attr_value): Likewise. Consolidate block code.
(process_debug_info): Adjust to suit new macros.
(display_formatted_table, display_debug_lines_raw): Likewise.
(display_debug_lines_decoded): Likewise. Properly check for end
of DW_LNS_extended_op.
(display_debug_macinfo): Adjust to suit new macros.
(get_line_filename_and_dirname, display_debug_macro): Likewise.
(display_view_pair_list): Likewise. Don't back off when hitting
end of data.
(display_loc_list): Adjust to suit new macros.
(display_loclists_list, display_loc_list_dwo): Likewise.
(display_debug_rnglists_list, read_cie): Likewise.
(display_debug_frames): Likewise.
* readelf.c: Use new ULEB macros throughout file.
(read_uleb128): Delete.
(decode_arm_unwind_bytecode): Use read_leb128.
(decode_tic6x_unwind_bytecode): Likewise.
(display_tag_value): Adjust to suit new macros.
(display_arc_attribute, display_arm_attribute): Likewise.
(display_gnu_attribute, display_power_gnu_attribute): Likewise.
(display_s390_gnu_attribute, display_sparc_gnu_attribute): Likewise.
(display_mips_gnu_attribute, display_tic6x_attribute): Likewise.
(display_msp430x_attribute, display_msp430_gnu_attribute): Likewise.
(display_riscv_attribute, process_attributes): Likewise.
Diffstat (limited to 'binutils/ChangeLog')
-rw-r--r-- | binutils/ChangeLog | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/binutils/ChangeLog b/binutils/ChangeLog index d6dbbf3..de6cf42 100644 --- a/binutils/ChangeLog +++ b/binutils/ChangeLog @@ -1,3 +1,47 @@ +2019-12-23 Alan Modra <amodra@gmail.com> + + * dwarf.h (read_leb128): Update prototype. + (report_leb_status): New inline function. + (SKIP_ULEB, SKIP_SLEB, READ_ULEB, READ_SLEB): Define. + * dwarf.c: Use above macros throughout file. Formatting. + (read_leb128): Reorder params. Add status return param. + Don't stop reading until finding terminator or end of data. + Detect loss of significant bits. Sign extend only on + terminating byte. + (read_sleb128, read_uleb128): Delete functions. + (SKIP_ULEB, SKIP_SLEB, READ_ULEB, READ_SLEB): Delete macros. + (read_and_print_leb128): Rewrite. + (process_extended_line_op): Return a size_t. Use size_t vars. + Adjust to suit new macros. Add proper name size to "data" when + processing DW_LNE_define_file. + (process_abbrev_section): Adjust to suit new macros. + (decode_location_expression, skip_attr_bytes): Likewise. + (get_type_signedness): Likewise. + (read_and_display_attr_value): Likewise. Consolidate block code. + (process_debug_info): Adjust to suit new macros. + (display_formatted_table, display_debug_lines_raw): Likewise. + (display_debug_lines_decoded): Likewise. Properly check for end + of DW_LNS_extended_op. + (display_debug_macinfo): Adjust to suit new macros. + (get_line_filename_and_dirname, display_debug_macro): Likewise. + (display_view_pair_list): Likewise. Don't back off when hitting + end of data. + (display_loc_list): Adjust to suit new macros. + (display_loclists_list, display_loc_list_dwo): Likewise. + (display_debug_rnglists_list, read_cie): Likewise. + (display_debug_frames): Likewise. + * readelf.c: Use new ULEB macros throughout file. + (read_uleb128): Delete. + (decode_arm_unwind_bytecode): Use read_leb128. + (decode_tic6x_unwind_bytecode): Likewise. + (display_tag_value): Adjust to suit new macros. + (display_arc_attribute, display_arm_attribute): Likewise. + (display_gnu_attribute, display_power_gnu_attribute): Likewise. + (display_s390_gnu_attribute, display_sparc_gnu_attribute): Likewise. + (display_mips_gnu_attribute, display_tic6x_attribute): Likewise. + (display_msp430x_attribute, display_msp430_gnu_attribute): Likewise. + (display_riscv_attribute, process_attributes): Likewise. + 2019-12-17 Alan Modra <amodra@gmail.com> * objdump.c (compare_section): New static var. |