diff options
author | Cary Coutant <ccoutant@google.com> | 2012-09-07 20:14:10 +0000 |
---|---|---|
committer | Cary Coutant <ccoutant@google.com> | 2012-09-07 20:14:10 +0000 |
commit | d2d60eefc4034426d1ec42476e518422299658cf (patch) | |
tree | a0b26a09fc31273c235d0d694235adf599b07399 | |
parent | aae628c13199b40d2e5f18a597e5b8cb38d91849 (diff) | |
download | gdb-d2d60eefc4034426d1ec42476e518422299658cf.zip gdb-d2d60eefc4034426d1ec42476e518422299658cf.tar.gz gdb-d2d60eefc4034426d1ec42476e518422299658cf.tar.bz2 |
2012-09-06 Cary Coutant <ccoutant@google.com>
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.
-rw-r--r-- | gold/ChangeLog | 10 | ||||
-rw-r--r-- | gold/dwarf_reader.cc | 4 | ||||
-rw-r--r-- | gold/object.cc | 3 | ||||
-rw-r--r-- | gold/testsuite/gdb_index_test.cc | 11 | ||||
-rwxr-xr-x | gold/testsuite/gdb_index_test_comm.sh | 1 |
5 files changed, 28 insertions, 1 deletions
diff --git a/gold/ChangeLog b/gold/ChangeLog index 320f832..ce00f17 100644 --- a/gold/ChangeLog +++ b/gold/ChangeLog @@ -1,3 +1,13 @@ +2012-09-06 Cary Coutant <ccoutant@google.com> + + * 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 <hongjiu.lu@intel.com> * testsuite/script_test_3.t: Add .got.plt output section diff --git a/gold/dwarf_reader.cc b/gold/dwarf_reader.cc index ac87f4b..0034703 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 6c0c187..6ee10f5 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 342d47c..d5ac2f1 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 7100329..4ab07b3 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<int>:" 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 |