From d2d60eefc4034426d1ec42476e518422299658cf Mon Sep 17 00:00:00 2001 From: Cary Coutant Date: Fri, 7 Sep 2012 20:14:10 +0000 Subject: [PATCH] 2012-09-06 Cary Coutant gold/ * dwarf_reader.cc (Dwarf_die::read_attributes): Add DW_FORM_GNU_addr_index and DW_FORM_GNU_str_index. (Dwarf_die::skip_attributes): Likewise. * object.cc (Read_symbols_data::~Read_symbols_data): Update comment. * testsuite/gdb_index_test.cc (inline_func_1): New function. (main): Call it. * testsuite/gdb_index_test_comm.sh: Check index for inline function. --- gold/ChangeLog | 10 ++++++++++ gold/dwarf_reader.cc | 4 ++++ gold/object.cc | 3 ++- gold/testsuite/gdb_index_test.cc | 11 +++++++++++ gold/testsuite/gdb_index_test_comm.sh | 1 + 5 files changed, 28 insertions(+), 1 deletion(-) diff --git a/gold/ChangeLog b/gold/ChangeLog index 320f8326cca..ce00f17eca4 100644 --- a/gold/ChangeLog +++ b/gold/ChangeLog @@ -1,3 +1,13 @@ +2012-09-06 Cary Coutant + + * dwarf_reader.cc (Dwarf_die::read_attributes): Add + DW_FORM_GNU_addr_index and DW_FORM_GNU_str_index. + (Dwarf_die::skip_attributes): Likewise. + * object.cc (Read_symbols_data::~Read_symbols_data): Update comment. + * testsuite/gdb_index_test.cc (inline_func_1): New function. + (main): Call it. + * testsuite/gdb_index_test_comm.sh: Check index for inline function. + 2012-09-05 H.J. Lu * testsuite/script_test_3.t: Add .got.plt output section diff --git a/gold/dwarf_reader.cc b/gold/dwarf_reader.cc index ac87f4b843d..00347032a0c 100644 --- a/gold/dwarf_reader.cc +++ b/gold/dwarf_reader.cc @@ -745,6 +745,8 @@ Dwarf_die::read_attributes() pattr += len; break; case elfcpp::DW_FORM_udata: + case elfcpp::DW_FORM_GNU_addr_index: + case elfcpp::DW_FORM_GNU_str_index: attr_value.val.uintval = read_unsigned_LEB_128(pattr, &len); pattr += len; break; @@ -895,6 +897,8 @@ Dwarf_die::skip_attributes() break; case elfcpp::DW_FORM_ref_udata: case elfcpp::DW_FORM_udata: + case elfcpp::DW_FORM_GNU_addr_index: + case elfcpp::DW_FORM_GNU_str_index: read_unsigned_LEB_128(pattr, &len); pattr += len; break; diff --git a/gold/object.cc b/gold/object.cc index 6c0c1877260..6ee10f522d7 100644 --- a/gold/object.cc +++ b/gold/object.cc @@ -48,7 +48,8 @@ namespace gold // Struct Read_symbols_data. -// Destroy any remaining File_view objects. +// Destroy any remaining File_view objects and buffers of decompressed +// sections. Read_symbols_data::~Read_symbols_data() { diff --git a/gold/testsuite/gdb_index_test.cc b/gold/testsuite/gdb_index_test.cc index 342d47c5049..d5ac2f19de0 100644 --- a/gold/testsuite/gdb_index_test.cc +++ b/gold/testsuite/gdb_index_test.cc @@ -123,6 +123,16 @@ struct anonymous_union_container { anonymous_union_container anonymous_union_var; +#ifdef __GNUC__ +#define ALWAYS_INLINE __attribute__((always_inline)) +#else +#define ALWAYS_INLINE +#endif + +static inline ALWAYS_INLINE int +inline_func_1(int i) +{ return i * 17; } + int main() { @@ -134,5 +144,6 @@ main() check(&two::c2v1); check(&two::c2v2); check(&two::c2v3); + anonymous_union_var.u.b = inline_func_1(3) - 51; return anonymous_union_var.u.b; } diff --git a/gold/testsuite/gdb_index_test_comm.sh b/gold/testsuite/gdb_index_test_comm.sh index 71003293b2d..4ab07b3c3a2 100755 --- a/gold/testsuite/gdb_index_test_comm.sh +++ b/gold/testsuite/gdb_index_test_comm.sh @@ -80,5 +80,6 @@ check $STDOUT "^\[ *[0-9]*\] two::c2:" check $STDOUT "^\[ *[0-9]*\] two::c2v1:" check $STDOUT "^\[ *[0-9]*\] two::c2v2:" check $STDOUT "^\[ *[0-9]*\] anonymous_union_var:" +check $STDOUT "^\[ *[0-9]*\] inline_func_1:" exit 0 -- 2.30.2