Make linker assigned symbol dynamic only for shared object
authorH.J. Lu <hjl.tools@gmail.com>
Tue, 23 Feb 2016 13:18:43 +0000 (05:18 -0800)
committerH.J. Lu <hjl.tools@gmail.com>
Tue, 23 Feb 2016 13:19:03 +0000 (05:19 -0800)
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
bfd/elflink.c
ld/ChangeLog
ld/testsuite/ld-frv/fdpic-pie-6.d
ld/testsuite/ld-mips-elf/pie-n32.d
ld/testsuite/ld-mips-elf/pie-n64.d
ld/testsuite/ld-mips-elf/pie-o32.d

index d7bc5fa..0ed70b4 100644 (file)
@@ -1,3 +1,9 @@
+2016-02-23  H.J. Lu  <hongjiu.lu@intel.com>
+
+       * 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  <faraz.shahbazker@imgtec.com>
 
        * bfd/elfxx-mips.c (_bfd_mips_post_process_headers): Increment
index 89a6dea..7d565f5 100644 (file)
@@ -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))
index e5bd6b8..665f4f4 100644 (file)
@@ -1,3 +1,10 @@
+2016-02-23  H.J. Lu  <hongjiu.lu@intel.com>
+
+       * 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  <hongjiu.lu@intel.com>
 
        * testsuite/ld-elf/pr19539.d: Skip cris*-*-* targets.
index 7bdda5d..c59b304 100644 (file)
@@ -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     .*
 
index dec984d..4b64102 100644 (file)
@@ -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
index 75a78e3..b7f57a8 100644 (file)
@@ -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
index 4db3d2c..aa4693d 100644 (file)
@@ -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