From 6b3b0ab89663306d17927d630304dbbd36e84570 Mon Sep 17 00:00:00 2001 From: "H.J. Lu" Date: Tue, 23 Feb 2016 05:18:43 -0800 Subject: [PATCH] Make linker assigned symbol dynamic only for shared object Linker assigned symbols should be made dynamic by default only when creating shared object or relocatable executable. bfd/ * elflink.c (bfd_elf_record_link_assignment): Check for shared library, instead of PIC, and don't check PDE when making linker assigned symbol dynamic. ld/ * testsuite/ld-frv/fdpic-pie-6.d: Updated. * testsuite/ld-mips-elf/pie-n32.d: Likewise. * testsuite/ld-mips-elf/pie-n64.d: Likewise. * testsuite/ld-mips-elf/pie-o32.d: Likewise. --- bfd/ChangeLog | 6 ++++++ bfd/elflink.c | 5 ++--- ld/ChangeLog | 7 +++++++ ld/testsuite/ld-frv/fdpic-pie-6.d | 8 ++++---- ld/testsuite/ld-mips-elf/pie-n32.d | 14 +++++++------- ld/testsuite/ld-mips-elf/pie-n64.d | 14 +++++++------- ld/testsuite/ld-mips-elf/pie-o32.d | 14 +++++++------- 7 files changed, 40 insertions(+), 28 deletions(-) diff --git a/bfd/ChangeLog b/bfd/ChangeLog index d7bc5fab9c..0ed70b4151 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,9 @@ +2016-02-23 H.J. Lu + + * elflink.c (bfd_elf_record_link_assignment): Check for shared + library, instead of PIC, and don't check PDE when making linker + assigned symbol dynamic. + 2016-02-23 Faraz Shahbazker * bfd/elfxx-mips.c (_bfd_mips_post_process_headers): Increment diff --git a/bfd/elflink.c b/bfd/elflink.c index 89a6dea761..7d565f5d15 100644 --- a/bfd/elflink.c +++ b/bfd/elflink.c @@ -632,9 +632,8 @@ bfd_elf_record_link_assignment (bfd *output_bfd, if ((h->def_dynamic || h->ref_dynamic - || bfd_link_pic (info) - || (bfd_link_pde (info) - && elf_hash_table (info)->is_relocatable_executable)) + || bfd_link_dll (info) + || elf_hash_table (info)->is_relocatable_executable) && h->dynindx == -1) { if (! bfd_elf_link_record_dynamic_symbol (info, h)) diff --git a/ld/ChangeLog b/ld/ChangeLog index e5bd6b8358..665f4f4408 100644 --- a/ld/ChangeLog +++ b/ld/ChangeLog @@ -1,3 +1,10 @@ +2016-02-23 H.J. Lu + + * testsuite/ld-frv/fdpic-pie-6.d: Updated. + * testsuite/ld-mips-elf/pie-n32.d: Likewise. + * testsuite/ld-mips-elf/pie-n64.d: Likewise. + * testsuite/ld-mips-elf/pie-o32.d: Likewise. + 2016-02-20 H.J. Lu * testsuite/ld-elf/pr19539.d: Skip cris*-*-* targets. diff --git a/ld/testsuite/ld-frv/fdpic-pie-6.d b/ld/testsuite/ld-frv/fdpic-pie-6.d index 7bdda5dfa5..c59b30484a 100644 --- a/ld/testsuite/ld-frv/fdpic-pie-6.d +++ b/ld/testsuite/ld-frv/fdpic-pie-6.d @@ -49,16 +49,16 @@ Disassembly of section \.dat[0-9a-f ]+: Disassembly of section \.got: [0-9a-f ]+<_GLOBAL_OFFSET_TABLE_-0x20>: -[0-9a-f ]+: 00 00 04 b8 .* +[0-9a-f ]+: 00 00 03 b0 .* [0-9a-f ]+: R_FRV_FUNCDESC_VALUE WF9 [0-9a-f ]+: 00 00 00 02 .* -[0-9a-f ]+: 00 00 04 b0 .* +[0-9a-f ]+: 00 00 03 a8 .* [0-9a-f ]+: R_FRV_FUNCDESC_VALUE WF8 [0-9a-f ]+: 00 00 00 02 .* -[0-9a-f ]+: 00 00 04 a8 .* +[0-9a-f ]+: 00 00 03 a0 .* [0-9a-f ]+: R_FRV_FUNCDESC_VALUE WF0 [0-9a-f ]+: 00 00 00 02 .* -[0-9a-f ]+: 00 00 04 a0 .* +[0-9a-f ]+: 00 00 03 98 .* [0-9a-f ]+: R_FRV_FUNCDESC_VALUE WF7 [0-9a-f ]+: 00 00 00 02 .* diff --git a/ld/testsuite/ld-mips-elf/pie-n32.d b/ld/testsuite/ld-mips-elf/pie-n32.d index dec984d72f..4b641029f2 100644 --- a/ld/testsuite/ld-mips-elf/pie-n32.d +++ b/ld/testsuite/ld-mips-elf/pie-n32.d @@ -6,19 +6,19 @@ Dynamic section at offset 0x180 contains 17 entries: Tag * Type * Name/Value 0x00000004 \(HASH\) * 0x230 - 0x00000005 \(STRTAB\) * 0x30c - 0x00000006 \(SYMTAB\) * 0x26c - 0x0000000a \(STRSZ\) * 72 \(bytes\) + 0x00000005 \(STRTAB\) * 0x28c + 0x00000006 \(SYMTAB\) * 0x24c + 0x0000000a \(STRSZ\) * 28 \(bytes\) 0x0000000b \(SYMENT\) * 16 \(bytes\) - 0x70000035 \(MIPS_RLD_MAP_REL\) * 0x101c8 + 0x70000035 \(MIPS_RLD_MAP_REL\) * 0x10118 0x00000015 \(DEBUG\) * 0x0 - 0x00000003 \(PLTGOT\) * 0x10380 + 0x00000003 \(PLTGOT\) * 0x102d0 0x70000001 \(MIPS_RLD_VERSION\) * 1 0x70000005 \(MIPS_FLAGS\) * NOTPOT 0x70000006 \(MIPS_BASE_ADDRESS\) * 0x0 0x7000000a \(MIPS_LOCAL_GOTNO\) * 2 - 0x70000011 \(MIPS_SYMTABNO\) * 10 + 0x70000011 \(MIPS_SYMTABNO\) * 4 0x70000012 \(MIPS_UNREFEXTNO\) * 13 - 0x70000013 \(MIPS_GOTSYM\) * 0xa + 0x70000013 \(MIPS_GOTSYM\) * 0x4 0x6ffffffb \(FLAGS_1\) * Flags: PIE 0x00000000 \(NULL\) * 0x0 diff --git a/ld/testsuite/ld-mips-elf/pie-n64.d b/ld/testsuite/ld-mips-elf/pie-n64.d index 75a78e3e0d..b7f57a8077 100644 --- a/ld/testsuite/ld-mips-elf/pie-n64.d +++ b/ld/testsuite/ld-mips-elf/pie-n64.d @@ -6,19 +6,19 @@ Dynamic section at offset 0x208 contains 17 entries: Tag * Type * Name/Value 0x0+00000004 \(HASH\) * 0x368 - 0x0+00000005 \(STRTAB\) * 0x498 - 0x0+00000006 \(SYMTAB\) * 0x3a8 - 0x0+0000000a \(STRSZ\) * 72 \(bytes\) + 0x0+00000005 \(STRTAB\) * 0x3e8 + 0x0+00000006 \(SYMTAB\) * 0x388 + 0x0+0000000a \(STRSZ\) * 28 \(bytes\) 0x0+0000000b \(SYMENT\) * 24 \(bytes\) - 0x0+70000035 \(MIPS_RLD_MAP_REL\) * 0x102b8 + 0x0+70000035 \(MIPS_RLD_MAP_REL\) * 0x101e8 0x0+00000015 \(DEBUG\) * 0x0 - 0x0+00000003 \(PLTGOT\) * 0x10520 + 0x0+00000003 \(PLTGOT\) * 0x10450 0x0+70000001 \(MIPS_RLD_VERSION\) * 1 0x0+70000005 \(MIPS_FLAGS\) * NOTPOT 0x0+70000006 \(MIPS_BASE_ADDRESS\) * 0x0 0x0+7000000a \(MIPS_LOCAL_GOTNO\) * 2 - 0x0+70000011 \(MIPS_SYMTABNO\) * 10 + 0x0+70000011 \(MIPS_SYMTABNO\) * 4 0x0+70000012 \(MIPS_UNREFEXTNO\) * 13 - 0x0+70000013 \(MIPS_GOTSYM\) * 0xa + 0x0+70000013 \(MIPS_GOTSYM\) * 0x4 0x0+6ffffffb \(FLAGS_1\) * Flags: PIE 0x0+00000000 \(NULL\) * 0x0 diff --git a/ld/testsuite/ld-mips-elf/pie-o32.d b/ld/testsuite/ld-mips-elf/pie-o32.d index 4db3d2c6af..aa4693d2d7 100644 --- a/ld/testsuite/ld-mips-elf/pie-o32.d +++ b/ld/testsuite/ld-mips-elf/pie-o32.d @@ -6,19 +6,19 @@ Dynamic section at offset 0x178 contains 17 entries: Tag * Type * Name/Value 0x00000004 \(HASH\) * 0x228 - 0x00000005 \(STRTAB\) * 0x304 - 0x00000006 \(SYMTAB\) * 0x264 - 0x0000000a \(STRSZ\) * 72 \(bytes\) + 0x00000005 \(STRTAB\) * 0x284 + 0x00000006 \(SYMTAB\) * 0x244 + 0x0000000a \(STRSZ\) * 28 \(bytes\) 0x0000000b \(SYMENT\) * 16 \(bytes\) - 0x70000035 \(MIPS_RLD_MAP_REL\) * 0x101c0 + 0x70000035 \(MIPS_RLD_MAP_REL\) * 0x10110 0x00000015 \(DEBUG\) * 0x0 - 0x00000003 \(PLTGOT\) * 0x10370 + 0x00000003 \(PLTGOT\) * 0x102c0 0x70000001 \(MIPS_RLD_VERSION\) * 1 0x70000005 \(MIPS_FLAGS\) * NOTPOT 0x70000006 \(MIPS_BASE_ADDRESS\) * 0x0 0x7000000a \(MIPS_LOCAL_GOTNO\) * 2 - 0x70000011 \(MIPS_SYMTABNO\) * 10 + 0x70000011 \(MIPS_SYMTABNO\) * 4 0x70000012 \(MIPS_UNREFEXTNO\) * 13 - 0x70000013 \(MIPS_GOTSYM\) * 0xa + 0x70000013 \(MIPS_GOTSYM\) * 0x4 0x6ffffffb \(FLAGS_1\) * Flags: PIE 0x00000000 \(NULL\) * 0x0