From: H.J. Lu Date: Fri, 19 Mar 2021 01:34:38 +0000 (-0700) Subject: DWARF: Check version >= 3 for DW_FORM_ref_addr X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=51f6e7a9f4210aed0f8156c1d2e348de6f96f37d;p=binutils-gdb.git DWARF: Check version >= 3 for DW_FORM_ref_addr Check version >= 3, instead of version == 3 || version == 4, for DW_FORM_ref_addr. bfd/ PR ld/27587 * dwarf2.c (read_attribute_value): Check version >= 3 for DW_FORM_ref_addr. ld/ 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. --- diff --git a/bfd/ChangeLog b/bfd/ChangeLog index 2bea06278b8..94155de66eb 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,9 @@ +2021-03-18 H.J. Lu + + PR ld/27587 + * dwarf2.c (read_attribute_value): Check version >= 3 for + DW_FORM_ref_addr. + 2021-03-16 Nick Clifton * peXXigen.c (_bfd_XXi_swap_aux_out): Avoid potential buffer diff --git a/bfd/dwarf2.c b/bfd/dwarf2.c index b42e641aa3b..1d5ddef3329 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 265f0fb6e79..d9b049f003c 100644 --- a/ld/ChangeLog +++ b/ld/ChangeLog @@ -1,3 +1,11 @@ +2021-03-18 H.J. Lu + + 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 * 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 00000000000..fa870790813 --- /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 00000000000..eebcf54d44d Binary files /dev/null and b/ld/testsuite/ld-x86-64/pr27587a.obj.bz2 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 00000000000..8506e4eccdb Binary files /dev/null and b/ld/testsuite/ld-x86-64/pr27587b.obj.bz2 differ diff --git a/ld/testsuite/ld-x86-64/x86-64.exp b/ld/testsuite/ld-x86-64/x86-64.exp index 232c9dfa3a2..db3bd140193 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