diff options
Diffstat (limited to 'binutils-2.22/gold/reduced_debug_output.cc')
-rw-r--r-- | binutils-2.22/gold/reduced_debug_output.cc | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/binutils-2.22/gold/reduced_debug_output.cc b/binutils-2.22/gold/reduced_debug_output.cc index 93757bf..a6158fc 100644 --- a/binutils-2.22/gold/reduced_debug_output.cc +++ b/binutils-2.22/gold/reduced_debug_output.cc @@ -1,6 +1,6 @@ // reduced_debug_output.cc -- output reduced debugging information to save space -// Copyright 2008, 2010 Free Software Foundation, Inc. +// Copyright 2008, 2010, 2012 Free Software Foundation, Inc. // Written by Caleb Howe <cshowe@google.com>. // This file is part of gold. @@ -60,9 +60,10 @@ Output_reduced_debug_info_section::get_die_end( return false; switch(form) { - case elfcpp::DW_FORM_null: + case elfcpp::DW_FORM_flag_present: break; case elfcpp::DW_FORM_strp: + case elfcpp::DW_FORM_sec_offset: die += is64 ? 8 : 4; break; case elfcpp::DW_FORM_addr: @@ -88,6 +89,7 @@ Output_reduced_debug_info_section::get_die_end( break; } case elfcpp::DW_FORM_block: + case elfcpp::DW_FORM_exprloc: LEB_decoded = read_unsigned_LEB_128(die, &LEB_size); die += (LEB_decoded + LEB_size); break; @@ -106,6 +108,7 @@ Output_reduced_debug_info_section::get_die_end( break; case elfcpp::DW_FORM_data8: case elfcpp::DW_FORM_ref8: + case elfcpp::DW_FORM_ref_sig8: die += 8; break; case elfcpp::DW_FORM_ref_udata: @@ -113,14 +116,20 @@ Output_reduced_debug_info_section::get_die_end( read_unsigned_LEB_128(die, &LEB_size); die += LEB_size; break; + case elfcpp::DW_FORM_sdata: + read_signed_LEB_128(die, &LEB_size); + die += LEB_size; + break; case elfcpp::DW_FORM_string: { size_t length = strlen(reinterpret_cast<char*>(die)); die += length + 1; break; } - case elfcpp::DW_FORM_sdata: case elfcpp::DW_FORM_indirect: + case elfcpp::DW_FORM_GNU_addr_index: + case elfcpp::DW_FORM_GNU_str_index: + default: return false; } } |