aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCary Coutant <ccoutant@google.com>2012-09-07 20:14:10 +0000
committerCary Coutant <ccoutant@google.com>2012-09-07 20:14:10 +0000
commitd2d60eefc4034426d1ec42476e518422299658cf (patch)
treea0b26a09fc31273c235d0d694235adf599b07399
parentaae628c13199b40d2e5f18a597e5b8cb38d91849 (diff)
downloadgdb-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/ChangeLog10
-rw-r--r--gold/dwarf_reader.cc4
-rw-r--r--gold/object.cc3
-rw-r--r--gold/testsuite/gdb_index_test.cc11
-rwxr-xr-xgold/testsuite/gdb_index_test_comm.sh1
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