aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--bfd/ChangeLog6
-rw-r--r--bfd/dwarf2.c2
-rw-r--r--ld/ChangeLog8
-rw-r--r--ld/testsuite/ld-x86-64/pr27587.err3
-rw-r--r--ld/testsuite/ld-x86-64/pr27587a.obj.bz2bin0 -> 1265 bytes
-rw-r--r--ld/testsuite/ld-x86-64/pr27587b.obj.bz2bin0 -> 913 bytes
-rw-r--r--ld/testsuite/ld-x86-64/x86-64.exp5
7 files changed, 23 insertions, 1 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index 2bea062..94155de 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,3 +1,9 @@
+2021-03-18 H.J. Lu <hongjiu.lu@intel.com>
+
+ PR ld/27587
+ * dwarf2.c (read_attribute_value): Check version >= 3 for
+ DW_FORM_ref_addr.
+
2021-03-16 Nick Clifton <nickc@redhat.com>
* peXXigen.c (_bfd_XXi_swap_aux_out): Avoid potential buffer
diff --git a/bfd/dwarf2.c b/bfd/dwarf2.c
index b42e641..1d5ddef 100644
--- a/bfd/dwarf2.c
+++ b/bfd/dwarf2.c
@@ -1213,7 +1213,7 @@ read_attribute_value (struct attribute * attr,
case DW_FORM_ref_addr:
/* DW_FORM_ref_addr is an address in DWARF2, and an offset in
DWARF3. */
- if (unit->version == 3 || unit->version == 4)
+ if (unit->version >= 3)
{
if (unit->offset_size == 4)
attr->u.val = read_4_bytes (unit->abfd, info_ptr, info_ptr_end);
diff --git a/ld/ChangeLog b/ld/ChangeLog
index 265f0fb..d9b049f 100644
--- a/ld/ChangeLog
+++ b/ld/ChangeLog
@@ -1,3 +1,11 @@
+2021-03-18 H.J. Lu <hongjiu.lu@intel.com>
+
+ PR ld/27587
+ * testsuite/ld-x86-64/pr27587.err: New file.
+ * testsuite/ld-x86-64/pr27587a.obj.bz2: Likewise.
+ * testsuite/ld-x86-64/pr27587b.obj.bz2: Likewise.
+ * testsuite/ld-x86-64/x86-64.exp: Run PR ld/27587 test.
+
2021-03-18 Nick Alcock <nick.alcock@oracle.com>
* testsuite/ld-ctf/slice.c: Check slices of enums too.
diff --git a/ld/testsuite/ld-x86-64/pr27587.err b/ld/testsuite/ld-x86-64/pr27587.err
new file mode 100644
index 0000000..fa87079
--- /dev/null
+++ b/ld/testsuite/ld-x86-64/pr27587.err
@@ -0,0 +1,3 @@
+#...
+.*pr27587.i:4: undefined reference to `stack_size'
+#...
diff --git a/ld/testsuite/ld-x86-64/pr27587a.obj.bz2 b/ld/testsuite/ld-x86-64/pr27587a.obj.bz2
new file mode 100644
index 0000000..eebcf54
--- /dev/null
+++ b/ld/testsuite/ld-x86-64/pr27587a.obj.bz2
Binary files differ
diff --git a/ld/testsuite/ld-x86-64/pr27587b.obj.bz2 b/ld/testsuite/ld-x86-64/pr27587b.obj.bz2
new file mode 100644
index 0000000..8506e4e
--- /dev/null
+++ b/ld/testsuite/ld-x86-64/pr27587b.obj.bz2
Binary files differ
diff --git a/ld/testsuite/ld-x86-64/x86-64.exp b/ld/testsuite/ld-x86-64/x86-64.exp
index 232c9df..db3bd14 100644
--- a/ld/testsuite/ld-x86-64/x86-64.exp
+++ b/ld/testsuite/ld-x86-64/x86-64.exp
@@ -221,6 +221,11 @@ set x86_64tests {
"-melf_x86_64 -pie -z notext tmpdir/pr20550a.o tmpdir/pr20550b.so"
""
"--64" { dummy.s } {} "pr20550"}
+ {"Build pr27587"
+ "-melf_x86_64 -e main"
+ "" ""
+ { pr27587a.obj.bz2 pr27587b.obj.bz2 }
+ {{ld "pr27587.err"}} "pr27587"}
}
run_ld_link_tests $x86_64tests