From d8457a04b71cbd642a00352dce0539fe1fe22dd4 Mon Sep 17 00:00:00 2001 From: "H.J. Lu" Date: Tue, 6 Sep 2016 13:34:30 -0700 Subject: Resolve size relocation with copy relocation We can resolve size relocation against symbol which needs copy relocation when building executable. bfd/ PR ld/20550 * elf64-x86-64.c (elf_x86_64_relocate_section): Resolve size relocation with copy relocation when building executable. ld/ PR ld/20550 * testsuite/ld-x86-64/pr20550a.s: New file. * testsuite/ld-x86-64/pr20550b.s: Likewise. * testsuite/ld-x86-64/x86-64.exp (x86_64tests): Add tests for PR ld/20550. --- bfd/ChangeLog | 6 ++++++ bfd/elf64-x86-64.c | 4 +++- 2 files changed, 9 insertions(+), 1 deletion(-) (limited to 'bfd') diff --git a/bfd/ChangeLog b/bfd/ChangeLog index 56012b4..6863e3a 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,9 @@ +2016-09-06 H.J. Lu + + PR ld/20550 + * elf64-x86-64.c (elf_x86_64_relocate_section): Resolve size + relocation with copy relocation when building executable. + 2016-09-02 Senthil Kumar Selvaraj PR ld/20545 diff --git a/bfd/elf64-x86-64.c b/bfd/elf64-x86-64.c index c8bbed8..9a6a5c7 100644 --- a/bfd/elf64-x86-64.c +++ b/bfd/elf64-x86-64.c @@ -4818,7 +4818,9 @@ direct: && (h->needs_copy || eh->needs_copy || h->root.type == bfd_link_hash_undefined) - && IS_X86_64_PCREL_TYPE (r_type)) + && (IS_X86_64_PCREL_TYPE (r_type) + || r_type == R_X86_64_SIZE32 + || r_type == R_X86_64_SIZE64)) && (h == NULL || ((ELF_ST_VISIBILITY (h->other) == STV_DEFAULT && !resolved_to_zero) -- cgit v1.1