gold: Support 386 TLS code sequences without PLT
authorH.J. Lu <hjl.tools@gmail.com>
Wed, 29 Jun 2016 15:38:43 +0000 (08:38 -0700)
committerH.J. Lu <hjl.tools@gmail.com>
Wed, 29 Jun 2016 15:38:58 +0000 (08:38 -0700)
There are extensions to 386 psABI:

https://groups.google.com/forum/#!topic/ia32-abi/awsRSvJOJfs

to call tls_get_addr via GOT:

call *___tls_get_addr@GOT(%reg)

where EBX register isn't required as GOT base.

Since direct call is 4-byte long and indirect call, is 5-byte long, the
extra one byte must be handled properly.

For general dynamic model, 7-byte lea instruction before call
instruction is replaced by 6-byte one to make room for indirect call.
For local dynamic model, we simply use 5-byte indirect call.

TLS linker optimization is updated to recognize new instruction
patterns.  For local dynamic model to local exec model transition,
we generate a 6-byte lea instruction as nop, instead of a 1-byte nop
plus a 4-byte lea instruction.

PR gold/20308
* i386.cc (Target_i386::Relocate::relocate): Allow
R_386_GOT32X relocation against ___tls_get_addr.
(Target_i386::Relocate::tls_gd_to_ie): Support indirect
call to __tls_get_addr.
(Target_i386::Relocate::tls_gd_to_le): Likewise.
(Target_i386::Relocate::tls_ld_to_le): Likewise.
* testsuite/Makefile.am (check_PROGRAMS): Add pr20308a_test,
pr20308b_test, pr20308c_test, pr20308d_test, pr20308e_test.
(pr20308a_test_SOURCES): New.
(pr20308a_test_DEPENDENCIES): Likewise.
(pr20308a_test_CFLAGS): Likewise.
(pr20308a_test_LDFLAGS): Likewise.
(pr20308a_test_LDADD): Likewise.
(pr20308b_test_SOURCES): Likewise.
(pr20308b_test_DEPENDENCIES): Likewise.
(pr20308b_test_CFLAGS): Likewise.
(pr20308b_test_LDFLAGS): Likewise.
(pr20308b_test_LDADD): Likewise.
(pr20308c_test_SOURCES): Likewise.
(pr20308c_test_DEPENDENCIES): Likewise.
(pr20308c_test_CFLAGS): Likewise.
(pr20308c_test_LDFLAGS): Likewise.
(pr20308c_test_LDADD): Likewise.
(pr20308d_test_SOURCES): Likewise.
(pr20308d_test_DEPENDENCIES): Likewise.
(pr20308d_test_CFLAGS): Likewise.
(pr20308d_test_LDFLAGS): Likewise.
(pr20308d_test_LDADD): Likewise.
(pr20308e_test_SOURCES): Likewise.
(pr20308e_test_DEPENDENCIES): Likewise.
(pr20308e_test_CFLAGS): Likewise.
(pr20308e_test_LDFLAGS): Likewise.
(pr20308e_test_LDADD): Likewise.
(pr20308a.so): Likewise.
(pr20308b.so): Likewise.
(pr20308_gd.o): Likewise.
(pr20308_ld.o): Likewise.
(MOSTLYCLEANFILES): Add pr20308a.so pr20308b.so.
* testsuite/Makefile.in: Regenerated.
* testsuite/pr20308_def.c: New file.
* testsuite/pr20308_gd.S: Likewise.
* testsuite/pr20308_ld.S: Likewise.
* testsuite/pr20308_main.c: Likewise.

gold/ChangeLog
gold/i386.cc
gold/testsuite/Makefile.am
gold/testsuite/Makefile.in
gold/testsuite/pr20308_def.c [new file with mode: 0644]
gold/testsuite/pr20308_gd.S [new file with mode: 0644]
gold/testsuite/pr20308_ld.S [new file with mode: 0644]
gold/testsuite/pr20308_main.c [new file with mode: 0644]

index eb24d255c10a80afc2226116202a3c1c70c8ee27..f21121c400e1860550e7377168b07dc1d467d514 100644 (file)
@@ -1,3 +1,50 @@
+2016-06-29  H.J. Lu  <hongjiu.lu@intel.com>
+
+       PR gold/20308
+       * i386.cc (Target_i386::Relocate::relocate): Allow
+       R_386_GOT32X relocation against ___tls_get_addr.
+       (Target_i386::Relocate::tls_gd_to_ie): Support indirect
+       call to __tls_get_addr.
+       (Target_i386::Relocate::tls_gd_to_le): Likewise.
+       (Target_i386::Relocate::tls_ld_to_le): Likewise.
+       * testsuite/Makefile.am (check_PROGRAMS): Add pr20308a_test,
+       pr20308b_test, pr20308c_test, pr20308d_test, pr20308e_test.
+       (pr20308a_test_SOURCES): New.
+       (pr20308a_test_DEPENDENCIES): Likewise.
+       (pr20308a_test_CFLAGS): Likewise.
+       (pr20308a_test_LDFLAGS): Likewise.
+       (pr20308a_test_LDADD): Likewise.
+       (pr20308b_test_SOURCES): Likewise.
+       (pr20308b_test_DEPENDENCIES): Likewise.
+       (pr20308b_test_CFLAGS): Likewise.
+       (pr20308b_test_LDFLAGS): Likewise.
+       (pr20308b_test_LDADD): Likewise.
+       (pr20308c_test_SOURCES): Likewise.
+       (pr20308c_test_DEPENDENCIES): Likewise.
+       (pr20308c_test_CFLAGS): Likewise.
+       (pr20308c_test_LDFLAGS): Likewise.
+       (pr20308c_test_LDADD): Likewise.
+       (pr20308d_test_SOURCES): Likewise.
+       (pr20308d_test_DEPENDENCIES): Likewise.
+       (pr20308d_test_CFLAGS): Likewise.
+       (pr20308d_test_LDFLAGS): Likewise.
+       (pr20308d_test_LDADD): Likewise.
+       (pr20308e_test_SOURCES): Likewise.
+       (pr20308e_test_DEPENDENCIES): Likewise.
+       (pr20308e_test_CFLAGS): Likewise.
+       (pr20308e_test_LDFLAGS): Likewise.
+       (pr20308e_test_LDADD): Likewise.
+       (pr20308a.so): Likewise.
+       (pr20308b.so): Likewise.
+       (pr20308_gd.o): Likewise.
+       (pr20308_ld.o): Likewise.
+       (MOSTLYCLEANFILES): Add pr20308a.so pr20308b.so.
+       * testsuite/Makefile.in: Regenerated.
+       * testsuite/pr20308_def.c: New file.
+       * testsuite/pr20308_gd.S: Likewise.
+       * testsuite/pr20308_ld.S: Likewise.
+       * testsuite/pr20308_main.c: Likewise.
+
 2016-06-29  H.J. Lu  <hongjiu.lu@intel.com>
 
        PR gold/20216
index 87e6a6dde8bbcd8229797d2da6c294791a511565..28864cd534aa2f2ada10f83c0b77f3a6fa3d0dcc 100644 (file)
@@ -2790,6 +2790,7 @@ Target_i386::Relocate::relocate(const Relocate_info<32, false>* relinfo,
   if (this->skip_call_tls_get_addr_)
     {
       if ((r_type != elfcpp::R_386_PLT32
+          && r_type != elfcpp::R_386_GOT32X
           && r_type != elfcpp::R_386_PC32)
          || gsym == NULL
          || strcmp(gsym->name(), "___tls_get_addr") != 0)
@@ -3318,9 +3319,11 @@ Target_i386::Relocate::tls_gd_to_le(const Relocate_info<32, false>* relinfo,
                                    unsigned char* view,
                                    section_size_type view_size)
 {
-  // leal foo(,%reg,1),%eax; call ___tls_get_addr
+  // leal foo(,%ebx,1),%eax; call ___tls_get_addr@PLT
   //  ==> movl %gs:0,%eax; subl $foo@tpoff,%eax
-  // leal foo(%reg),%eax; call ___tls_get_addr
+  // leal foo(%ebx),%eax; call ___tls_get_addr@PLT
+  //  ==> movl %gs:0,%eax; subl $foo@tpoff,%eax
+  // leal foo(%reg),%eax; call *___tls_get_addr@GOT(%reg)
   //  ==> movl %gs:0,%eax; subl $foo@tpoff,%eax
 
   tls::check_range(relinfo, relnum, rel.get_r_offset(), view_size, -2);
@@ -3328,10 +3331,12 @@ Target_i386::Relocate::tls_gd_to_le(const Relocate_info<32, false>* relinfo,
 
   unsigned char op1 = view[-1];
   unsigned char op2 = view[-2];
+  unsigned char op3 = view[4];
 
   tls::check_tls(relinfo, relnum, rel.get_r_offset(),
                 op2 == 0x8d || op2 == 0x04);
-  tls::check_tls(relinfo, relnum, rel.get_r_offset(), view[4] == 0xe8);
+  tls::check_tls(relinfo, relnum, rel.get_r_offset(),
+                op3 == 0xe8 || op3 == 0xff);
 
   int roff = 5;
 
@@ -3345,12 +3350,18 @@ Target_i386::Relocate::tls_gd_to_le(const Relocate_info<32, false>* relinfo,
     }
   else
     {
+      unsigned char reg = op1 & 7;
       tls::check_tls(relinfo, relnum, rel.get_r_offset(),
-                    (op1 & 0xf8) == 0x80 && (op1 & 7) != 4);
-      if (rel.get_r_offset() + 9 < view_size
-         && view[9] == 0x90)
+                    ((op1 & 0xf8) == 0x80
+                     && reg != 4
+                     && reg != 0
+                     && (op3 == 0xe8 || (view[5] & 0x7) == reg)));
+      if (op3 == 0xff
+         || (rel.get_r_offset() + 9 < view_size
+             && view[9] == 0x90))
        {
-         // There is a trailing nop.  Use the size byte subl.
+         // There is an indirect call or a trailing nop.  Use the size
+         // byte subl.
          memcpy(view - 2, "\x65\xa1\0\0\0\0\x81\xe8\0\0\0", 12);
          roff = 6;
        }
@@ -3381,20 +3392,24 @@ Target_i386::Relocate::tls_gd_to_ie(const Relocate_info<32, false>* relinfo,
                                    unsigned char* view,
                                    section_size_type view_size)
 {
-  // leal foo(,%ebx,1),%eax; call ___tls_get_addr
+  // leal foo(,%ebx,1),%eax; call ___tls_get_addr@PLT
   //  ==> movl %gs:0,%eax; addl foo@gotntpoff(%ebx),%eax
-  // leal foo(%ebx),%eax; call ___tls_get_addr; nop
+  // leal foo(%ebx),%eax; call ___tls_get_addr@PLT; nop
   //  ==> movl %gs:0,%eax; addl foo@gotntpoff(%ebx),%eax
+  // leal foo(%reg),%eax; call *___tls_get_addr@GOT(%reg)
+  //  ==> movl %gs:0,%eax; addl foo@gotntpoff(%reg),%eax
 
   tls::check_range(relinfo, relnum, rel.get_r_offset(), view_size, -2);
   tls::check_range(relinfo, relnum, rel.get_r_offset(), view_size, 9);
 
   unsigned char op1 = view[-1];
   unsigned char op2 = view[-2];
+  unsigned char op3 = view[4];
 
   tls::check_tls(relinfo, relnum, rel.get_r_offset(),
                 op2 == 0x8d || op2 == 0x04);
-  tls::check_tls(relinfo, relnum, rel.get_r_offset(), view[4] == 0xe8);
+  tls::check_tls(relinfo, relnum, rel.get_r_offset(),
+                op3 == 0xe8 || op3 == 0xff);
 
   int roff;
 
@@ -3408,10 +3423,14 @@ Target_i386::Relocate::tls_gd_to_ie(const Relocate_info<32, false>* relinfo,
     }
   else
     {
+      unsigned char reg = op1 & 7;
       tls::check_range(relinfo, relnum, rel.get_r_offset(), view_size, 10);
       tls::check_tls(relinfo, relnum, rel.get_r_offset(),
-                    (op1 & 0xf8) == 0x80 && (op1 & 7) != 4);
-      tls::check_tls(relinfo, relnum, rel.get_r_offset(), view[9] == 0x90);
+                    ((op1 & 0xf8) == 0x80
+                     && reg != 4
+                     && reg != 0
+                     && ((op3 == 0xe8 && view[9] == 0x90)
+                          || (view[5] & 0x7) == reg)));
       roff = 6;
     }
 
@@ -3512,19 +3531,36 @@ Target_i386::Relocate::tls_ld_to_le(const Relocate_info<32, false>* relinfo,
                                    unsigned char* view,
                                    section_size_type view_size)
 {
-  // leal foo(%reg), %eax; call ___tls_get_addr
+  // leal foo(%ebx), %eax; call ___tls_get_addr@PLT
   // ==> movl %gs:0,%eax; nop; leal 0(%esi,1),%esi
+  // leal foo(%reg), %eax; call call *___tls_get_addr@GOT(%reg)
+  // ==> movl %gs:0,%eax; leal (%esi),%esi
 
   tls::check_range(relinfo, relnum, rel.get_r_offset(), view_size, -2);
-  tls::check_range(relinfo, relnum, rel.get_r_offset(), view_size, 9);
 
-  // FIXME: Does this test really always pass?
+  unsigned char op1 = view[-1];
+  unsigned char op2 = view[-2];
+  unsigned char op3 = view[4];
+
   tls::check_tls(relinfo, relnum, rel.get_r_offset(),
-                view[-2] == 0x8d && view[-1] == 0x83);
+                op3 == 0xe8 || op3 == 0xff);
+  tls::check_range(relinfo, relnum, rel.get_r_offset(), view_size,
+                  op3 == 0xe8 ? 9 : 10);
+
+  // FIXME: Does this test really always pass?
+  tls::check_tls(relinfo, relnum, rel.get_r_offset(), op2 == 0x8d);
 
-  tls::check_tls(relinfo, relnum, rel.get_r_offset(), view[4] == 0xe8);
+  unsigned char reg = op1 & 7;
+  tls::check_tls(relinfo, relnum, rel.get_r_offset(),
+                ((op1 & 0xf8) == 0x80
+                 && reg != 4
+                 && reg != 0
+                 && (op3 == 0xe8 || (view[5] & 0x7) == reg)));
 
-  memcpy(view - 2, "\x65\xa1\0\0\0\0\x90\x8d\x74\x26\0", 11);
+  if (op3 == 0xe8)
+    memcpy(view - 2, "\x65\xa1\0\0\0\0\x90\x8d\x74\x26\0", 11);
+  else
+    memcpy(view - 2, "\x65\xa1\0\0\0\0\x8d\xb6\0\0\0\0", 12);
 
   // The next reloc should be a PLT32 reloc against __tls_get_addr.
   // We can skip it.
index 3512ae70af3185fbd8291978ef5d712965c9dff0..d297085141fb13129545725b7b84ca5725d6783e 100644 (file)
@@ -1254,6 +1254,55 @@ i386_mov_to_lea7.stdout: i386_mov_to_lea7
 i386_mov_to_lea8.stdout: i386_mov_to_lea8
        $(TEST_OBJDUMP) -dw $< > $@
 
+check_PROGRAMS += pr20308a_test
+pr20308a_test_SOURCES = pr20308_main.c pr20308_def.c
+pr20308a_test_DEPENDENCIES = pr20308_gd.o pr20308_ld.o gcctestdir/ld gcctestdir/as
+pr20308a_test_CFLAGS = -Bgcctestdir/ -fPIE
+pr20308a_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,.
+pr20308a_test_LDADD = pr20308_gd.o pr20308_ld.o
+
+check_PROGRAMS += pr20308b_test
+pr20308b_test_SOURCES = pr20308_main.c pr20308_def.c
+pr20308b_test_DEPENDENCIES = pr20308_gd.o pr20308_ld.o gcctestdir/ld gcctestdir/as
+pr20308b_test_CFLAGS = -Bgcctestdir/ -fPIE
+pr20308b_test_LDFLAGS = -pie -Bgcctestdir/ -Wl,-R,.
+pr20308b_test_LDADD = pr20308_gd.o pr20308_ld.o
+
+check_PROGRAMS += pr20308c_test
+pr20308c_test_SOURCES = pr20308_main.c pr20308_def.c
+pr20308c_test_DEPENDENCIES = pr20308_gd.o pr20308_ld.o gcctestdir/ld gcctestdir/as
+pr20308c_test_CFLAGS = -Bgcctestdir/ -fPIE
+pr20308c_test_LDFLAGS = -static -Bgcctestdir/ -Wl,-R,.
+pr20308c_test_LDADD = pr20308_gd.o pr20308_ld.o
+
+check_PROGRAMS += pr20308d_test
+pr20308d_test_SOURCES = pr20308_main.c pr20308_def.c
+pr20308d_test_DEPENDENCIES = pr20308a.so gcctestdir/ld gcctestdir/as
+pr20308d_test_CFLAGS = -Bgcctestdir/ -fPIE
+pr20308d_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,.
+pr20308d_test_LDADD = pr20308a.so
+
+check_PROGRAMS += pr20308e_test
+pr20308e_test_SOURCES = pr20308_main.c
+pr20308e_test_DEPENDENCIES = pr20308_gd.o pr20308_ld.o pr20308b.so gcctestdir/ld gcctestdir/as
+pr20308e_test_CFLAGS = -Bgcctestdir/ -fPIE
+pr20308e_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,.
+pr20308e_test_LDADD = pr20308_gd.o pr20308_ld.o pr20308b.so
+
+MOSTLYCLEANFILES += pr20308a.so pr20308b.so
+
+pr20308a.so: pr20308_gd.o pr20308_ld.o gcctestdir/ld
+       $(LINK) -Bgcctestdir/ -shared pr20308_gd.o pr20308_ld.o
+
+pr20308b.so: pr20308_def.o gcctestdir/ld
+       $(LINK) -Bgcctestdir/ -shared pr20308_def.o
+
+pr20308_gd.o: pr20308_gd.S
+       $(COMPILE) -c -o $@ $<
+
+pr20308_ld.o: pr20308_ld.S
+       $(COMPILE) -c -o $@ $<
+
 endif DEFAULT_TARGET_I386
 
 check_PROGRAMS += many_sections_test
index 6046fe939f7830cc1f623547c146bbe5c9f412b2..d291014c0123e99f00f16398782a21e456ca1ac2 100644 (file)
@@ -69,7 +69,7 @@ check_PROGRAMS = $(am__EXEEXT_1) $(am__EXEEXT_2) $(am__EXEEXT_3) \
        $(am__EXEEXT_28) $(am__EXEEXT_29) $(am__EXEEXT_30) \
        $(am__EXEEXT_31) $(am__EXEEXT_32) $(am__EXEEXT_33) \
        $(am__EXEEXT_34) $(am__EXEEXT_35) $(am__EXEEXT_36) \
-       $(am__EXEEXT_37) $(am__EXEEXT_38)
+       $(am__EXEEXT_37) $(am__EXEEXT_38) $(am__EXEEXT_39)
 @NATIVE_OR_CROSS_LINKER_TRUE@am__append_1 = object_unittest \
 @NATIVE_OR_CROSS_LINKER_TRUE@  binary_unittest leb128_unittest \
 @NATIVE_OR_CROSS_LINKER_TRUE@  overflow_unittest
@@ -274,10 +274,21 @@ check_PROGRAMS = $(am__EXEEXT_1) $(am__EXEEXT_2) $(am__EXEEXT_3) \
 @DEFAULT_TARGET_I386_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@       i386_mov_to_lea5.stdout i386_mov_to_lea6.stdout \
 @DEFAULT_TARGET_I386_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@       i386_mov_to_lea7.stdout i386_mov_to_lea8.stdout
 
-@DEFAULT_TARGET_I386_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@am__append_36 = i386_mov_to_lea1 i386_mov_to_lea2 i386_mov_to_lea3 \
-@DEFAULT_TARGET_I386_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@       i386_mov_to_lea4 i386_mov_to_lea5 i386_mov_to_lea6 \
-@DEFAULT_TARGET_I386_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@       i386_mov_to_lea7 i386_mov_to_lea8
-
+@DEFAULT_TARGET_I386_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@am__append_36 = i386_mov_to_lea1 \
+@DEFAULT_TARGET_I386_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@       i386_mov_to_lea2 \
+@DEFAULT_TARGET_I386_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@       i386_mov_to_lea3 \
+@DEFAULT_TARGET_I386_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@       i386_mov_to_lea4 \
+@DEFAULT_TARGET_I386_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@       i386_mov_to_lea5 \
+@DEFAULT_TARGET_I386_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@       i386_mov_to_lea6 \
+@DEFAULT_TARGET_I386_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@       i386_mov_to_lea7 \
+@DEFAULT_TARGET_I386_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@       i386_mov_to_lea8 \
+@DEFAULT_TARGET_I386_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@       pr20308a.so \
+@DEFAULT_TARGET_I386_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@       pr20308b.so
+@DEFAULT_TARGET_I386_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@am__append_37 = pr20308a_test \
+@DEFAULT_TARGET_I386_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@       pr20308b_test \
+@DEFAULT_TARGET_I386_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@       pr20308c_test \
+@DEFAULT_TARGET_I386_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@       pr20308d_test \
+@DEFAULT_TARGET_I386_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@       pr20308e_test
 
 # Test -o when emitting to a special file (such as something in /dev).
 
@@ -297,7 +308,7 @@ check_PROGRAMS = $(am__EXEEXT_1) $(am__EXEEXT_2) $(am__EXEEXT_3) \
 # declared in a script file is assigned a non-zero starting address.
 
 # Test difference between "*(a b)" and "*(a) *(b)" in input section spec.
-@GCC_TRUE@@NATIVE_LINKER_TRUE@am__append_37 = many_sections_test \
+@GCC_TRUE@@NATIVE_LINKER_TRUE@am__append_38 = many_sections_test \
 @GCC_TRUE@@NATIVE_LINKER_TRUE@ many_sections_r_test initpri1 \
 @GCC_TRUE@@NATIVE_LINKER_TRUE@ initpri2 initpri3a \
 @GCC_TRUE@@NATIVE_LINKER_TRUE@ flagstest_o_specialfile \
@@ -325,9 +336,9 @@ check_PROGRAMS = $(am__EXEEXT_1) $(am__EXEEXT_2) $(am__EXEEXT_3) \
 @GCC_TRUE@@NATIVE_LINKER_TRUE@ thin_archive_test_2
 @GCC_FALSE@many_sections_test_DEPENDENCIES =
 @NATIVE_LINKER_FALSE@many_sections_test_DEPENDENCIES =
-@GCC_TRUE@@NATIVE_LINKER_TRUE@am__append_38 = many_sections_define.h \
-@GCC_TRUE@@NATIVE_LINKER_TRUE@ many_sections_check.h
 @GCC_TRUE@@NATIVE_LINKER_TRUE@am__append_39 = many_sections_define.h \
+@GCC_TRUE@@NATIVE_LINKER_TRUE@ many_sections_check.h
+@GCC_TRUE@@NATIVE_LINKER_TRUE@am__append_40 = many_sections_define.h \
 @GCC_TRUE@@NATIVE_LINKER_TRUE@ many_sections_check.h \
 @GCC_TRUE@@NATIVE_LINKER_TRUE@ debug_msg.err \
 @GCC_TRUE@@NATIVE_LINKER_TRUE@ missing_key_func.err \
@@ -385,7 +396,7 @@ check_PROGRAMS = $(am__EXEEXT_1) $(am__EXEEXT_2) $(am__EXEEXT_3) \
 
 # Test --dynamic-list, --dynamic-list-data, --dynamic-list-cpp-new,
 # and --dynamic-list-cpp-typeinfo
-@GCC_TRUE@@NATIVE_LINKER_TRUE@am__append_40 = debug_msg.sh \
+@GCC_TRUE@@NATIVE_LINKER_TRUE@am__append_41 = debug_msg.sh \
 @GCC_TRUE@@NATIVE_LINKER_TRUE@ missing_key_func.sh \
 @GCC_TRUE@@NATIVE_LINKER_TRUE@ undef_symbol.sh pr18689.sh \
 @GCC_TRUE@@NATIVE_LINKER_TRUE@ ver_test_1.sh ver_test_2.sh \
@@ -415,7 +426,7 @@ check_PROGRAMS = $(am__EXEEXT_1) $(am__EXEEXT_2) $(am__EXEEXT_3) \
 # This version won't be runnable, because there is no way to put the
 # PT_PHDR segment at file offset 0.  We just make sure that we can
 # build it without error.
-@GCC_TRUE@@NATIVE_LINKER_TRUE@am__append_41 = debug_msg.err \
+@GCC_TRUE@@NATIVE_LINKER_TRUE@am__append_42 = debug_msg.err \
 @GCC_TRUE@@NATIVE_LINKER_TRUE@ missing_key_func.err \
 @GCC_TRUE@@NATIVE_LINKER_TRUE@ debug_msg_cdebug.err \
 @GCC_TRUE@@NATIVE_LINKER_TRUE@ debug_msg_cdebug_gabi.err \
@@ -463,7 +474,7 @@ check_PROGRAMS = $(am__EXEEXT_1) $(am__EXEEXT_2) $(am__EXEEXT_3) \
 @NATIVE_LINKER_FALSE@thin_archive_test_2_DEPENDENCIES =
 
 # Test plugins with -r.
-@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@am__append_42 =  \
+@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@am__append_43 =  \
 @GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@   plugin_test_1 \
 @GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@   plugin_test_2 \
 @GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@   plugin_test_3 \
@@ -475,7 +486,7 @@ check_PROGRAMS = $(am__EXEEXT_1) $(am__EXEEXT_2) $(am__EXEEXT_3) \
 @GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@   plugin_test_10 \
 @GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@   plugin_test_11 \
 @GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@   plugin_test_start_lib
-@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@am__append_43 =  \
+@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@am__append_44 =  \
 @GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@   plugin_test_1.sh \
 @GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@   plugin_test_2.sh \
 @GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@   plugin_test_3.sh \
@@ -491,7 +502,7 @@ check_PROGRAMS = $(am__EXEEXT_1) $(am__EXEEXT_2) $(am__EXEEXT_3) \
 
 # As above, but check COMDAT case, where a non-IR file contains a duplicate
 # of a COMDAT group in an IR file.
-@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@am__append_44 =  \
+@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@am__append_45 =  \
 @GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@   plugin_test_1.err \
 @GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@   plugin_test_2.err \
 @GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@   plugin_test_3.err \
@@ -505,7 +516,7 @@ check_PROGRAMS = $(am__EXEEXT_1) $(am__EXEEXT_2) $(am__EXEEXT_3) \
 @GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@   plugin_test_11.err \
 @GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@   plugin_test_start_lib.err
 # Make a copy of two_file_test_1.o, which does not define the symbol _Z4t16av.
-@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@am__append_45 =  \
+@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@am__append_46 =  \
 @GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@   plugin_test_1.err \
 @GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@   plugin_test_2.err \
 @GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@   plugin_test_3.err \
@@ -520,19 +531,19 @@ check_PROGRAMS = $(am__EXEEXT_1) $(am__EXEEXT_2) $(am__EXEEXT_3) \
 @GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@   plugin_test_11.err \
 @GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@   plugin_test_thin.a \
 @GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@   plugin_test_start_lib.err
-@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@@TLS_TRUE@am__append_46 = plugin_test_tls
-@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@@TLS_TRUE@am__append_47 = plugin_test_tls.sh
-@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@@TLS_TRUE@am__append_48 = plugin_test_tls.err
+@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@@TLS_TRUE@am__append_47 = plugin_test_tls
+@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@@TLS_TRUE@am__append_48 = plugin_test_tls.sh
 @GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@@TLS_TRUE@am__append_49 = plugin_test_tls.err
-@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@am__append_50 = unused.c \
+@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@@TLS_TRUE@am__append_50 = plugin_test_tls.err
+@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@am__append_51 = unused.c \
 @GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@   plugin_final_layout \
 @GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@   plugin_layout_with_alignment
-@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@am__append_51 = plugin_final_layout.sh \
+@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@am__append_52 = plugin_final_layout.sh \
 @GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@   plugin_layout_with_alignment.sh
-@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@am__append_52 = plugin_final_layout.stdout \
+@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@am__append_53 = plugin_final_layout.stdout \
 @GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@   plugin_final_layout_readelf.stdout \
 @GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@   plugin_layout_with_alignment.stdout
-@GCC_TRUE@@NATIVE_LINKER_TRUE@am__append_53 = exclude_libs_test \
+@GCC_TRUE@@NATIVE_LINKER_TRUE@am__append_54 = exclude_libs_test \
 @GCC_TRUE@@NATIVE_LINKER_TRUE@ local_labels_test \
 @GCC_TRUE@@NATIVE_LINKER_TRUE@ discard_locals_test
 
@@ -550,7 +561,7 @@ check_PROGRAMS = $(am__EXEEXT_1) $(am__EXEEXT_2) $(am__EXEEXT_3) \
 # weak reference in a DSO.
 
 # Test that MEMORY region support works.
-@GCC_TRUE@@NATIVE_LINKER_TRUE@am__append_54 = exclude_libs_test.sh \
+@GCC_TRUE@@NATIVE_LINKER_TRUE@am__append_55 = exclude_libs_test.sh \
 @GCC_TRUE@@NATIVE_LINKER_TRUE@ discard_locals_test.sh \
 @GCC_TRUE@@NATIVE_LINKER_TRUE@ hidden_test.sh \
 @GCC_TRUE@@NATIVE_LINKER_TRUE@ retain_symbols_file_test.sh \
@@ -560,7 +571,7 @@ check_PROGRAMS = $(am__EXEEXT_1) $(am__EXEEXT_2) $(am__EXEEXT_3) \
 
 # Test INCLUDE directives in linker scripts.
 # The binary isn't runnable, so we just check that we can build it without errors.
-@GCC_TRUE@@NATIVE_LINKER_TRUE@am__append_55 = exclude_libs_test.syms \
+@GCC_TRUE@@NATIVE_LINKER_TRUE@am__append_56 = exclude_libs_test.syms \
 @GCC_TRUE@@NATIVE_LINKER_TRUE@ discard_locals_test.syms \
 @GCC_TRUE@@NATIVE_LINKER_TRUE@ discard_locals_relocatable_test1.syms \
 @GCC_TRUE@@NATIVE_LINKER_TRUE@ discard_locals_relocatable_test2.syms \
@@ -570,7 +581,7 @@ check_PROGRAMS = $(am__EXEEXT_1) $(am__EXEEXT_2) $(am__EXEEXT_3) \
 @GCC_TRUE@@NATIVE_LINKER_TRUE@ strong_ref_weak_def.stdout \
 @GCC_TRUE@@NATIVE_LINKER_TRUE@ dyn_weak_ref.stdout \
 @GCC_TRUE@@NATIVE_LINKER_TRUE@ memory_test.stdout memory_test_2
-@GCC_TRUE@@NATIVE_LINKER_TRUE@am__append_56 = exclude_libs_test.syms \
+@GCC_TRUE@@NATIVE_LINKER_TRUE@am__append_57 = exclude_libs_test.syms \
 @GCC_TRUE@@NATIVE_LINKER_TRUE@ libexclude_libs_test_1.a \
 @GCC_TRUE@@NATIVE_LINKER_TRUE@ libexclude_libs_test_2.a \
 @GCC_TRUE@@NATIVE_LINKER_TRUE@ alt/libexclude_libs_test_3.a \
@@ -602,7 +613,7 @@ check_PROGRAMS = $(am__EXEEXT_1) $(am__EXEEXT_2) $(am__EXEEXT_3) \
 @GCC_TRUE@@NATIVE_LINKER_TRUE@ memory_test_inc_2.t \
 @GCC_TRUE@@NATIVE_LINKER_TRUE@ memory_test_inc_3.t \
 @GCC_TRUE@@NATIVE_LINKER_TRUE@ memory_test_2
-@GCC_TRUE@@MCMODEL_MEDIUM_TRUE@@NATIVE_LINKER_TRUE@am__append_57 = large
+@GCC_TRUE@@MCMODEL_MEDIUM_TRUE@@NATIVE_LINKER_TRUE@am__append_58 = large
 @GCC_FALSE@large_DEPENDENCIES =
 @MCMODEL_MEDIUM_FALSE@large_DEPENDENCIES =
 @NATIVE_LINKER_FALSE@large_DEPENDENCIES =
@@ -611,13 +622,13 @@ check_PROGRAMS = $(am__EXEEXT_1) $(am__EXEEXT_2) $(am__EXEEXT_3) \
 # it will get execute permission.
 
 # Check -l:foo.a
-@GCC_TRUE@@NATIVE_LINKER_TRUE@am__append_58 = permission_test \
+@GCC_TRUE@@NATIVE_LINKER_TRUE@am__append_59 = permission_test \
 @GCC_TRUE@@NATIVE_LINKER_TRUE@ searched_file_test
 @GCC_FALSE@searched_file_test_DEPENDENCIES =
 @NATIVE_LINKER_FALSE@searched_file_test_DEPENDENCIES =
-@GCC_TRUE@@HAVE_STATIC_TRUE@@IFUNC_STATIC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@am__append_59 = ifuncmain1static \
+@GCC_TRUE@@HAVE_STATIC_TRUE@@IFUNC_STATIC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@am__append_60 = ifuncmain1static \
 @GCC_TRUE@@HAVE_STATIC_TRUE@@IFUNC_STATIC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@        ifuncmain1picstatic
-@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@am__append_60 = ifuncmain1 \
+@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@am__append_61 = ifuncmain1 \
 @GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@     ifuncmain1pic \
 @GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@     ifuncmain1vis \
 @GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@     ifuncmain1vispic \
@@ -625,14 +636,14 @@ check_PROGRAMS = $(am__EXEEXT_1) $(am__EXEEXT_2) $(am__EXEEXT_3) \
 @GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@     ifuncmain1pie \
 @GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@     ifuncmain1vispie \
 @GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@     ifuncmain1staticpie
-@GCC_TRUE@@HAVE_STATIC_TRUE@@IFUNC_STATIC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@am__append_61 = ifuncmain2static \
+@GCC_TRUE@@HAVE_STATIC_TRUE@@IFUNC_STATIC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@am__append_62 = ifuncmain2static \
 @GCC_TRUE@@HAVE_STATIC_TRUE@@IFUNC_STATIC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@        ifuncmain2picstatic
 @GCC_FALSE@ifuncmain2static_DEPENDENCIES =
 @HAVE_STATIC_FALSE@ifuncmain2static_DEPENDENCIES =
 @IFUNC_FALSE@ifuncmain2static_DEPENDENCIES =
 @IFUNC_STATIC_FALSE@ifuncmain2static_DEPENDENCIES =
 @NATIVE_LINKER_FALSE@ifuncmain2static_DEPENDENCIES =
-@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@am__append_62 = ifuncmain2 \
+@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@am__append_63 = ifuncmain2 \
 @GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@     ifuncmain2pic \
 @GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@     ifuncmain3
 @GCC_FALSE@ifuncmain2_DEPENDENCIES =
@@ -641,32 +652,32 @@ check_PROGRAMS = $(am__EXEEXT_1) $(am__EXEEXT_2) $(am__EXEEXT_3) \
 @GCC_FALSE@ifuncmain3_DEPENDENCIES =
 @IFUNC_FALSE@ifuncmain3_DEPENDENCIES =
 @NATIVE_LINKER_FALSE@ifuncmain3_DEPENDENCIES =
-@GCC_TRUE@@HAVE_STATIC_TRUE@@IFUNC_STATIC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@am__append_63 = ifuncmain4static \
+@GCC_TRUE@@HAVE_STATIC_TRUE@@IFUNC_STATIC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@am__append_64 = ifuncmain4static \
 @GCC_TRUE@@HAVE_STATIC_TRUE@@IFUNC_STATIC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@        ifuncmain4picstatic
 @GCC_FALSE@ifuncmain4static_DEPENDENCIES =
 @HAVE_STATIC_FALSE@ifuncmain4static_DEPENDENCIES =
 @IFUNC_FALSE@ifuncmain4static_DEPENDENCIES =
 @IFUNC_STATIC_FALSE@ifuncmain4static_DEPENDENCIES =
 @NATIVE_LINKER_FALSE@ifuncmain4static_DEPENDENCIES =
-@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@am__append_64 = ifuncmain4
+@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@am__append_65 = ifuncmain4
 @GCC_FALSE@ifuncmain4_DEPENDENCIES =
 @IFUNC_FALSE@ifuncmain4_DEPENDENCIES =
 @NATIVE_LINKER_FALSE@ifuncmain4_DEPENDENCIES =
-@GCC_TRUE@@HAVE_STATIC_TRUE@@IFUNC_STATIC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@am__append_65 = ifuncmain5static \
+@GCC_TRUE@@HAVE_STATIC_TRUE@@IFUNC_STATIC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@am__append_66 = ifuncmain5static \
 @GCC_TRUE@@HAVE_STATIC_TRUE@@IFUNC_STATIC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@        ifuncmain5picstatic
-@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@am__append_66 = ifuncmain5 \
+@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@am__append_67 = ifuncmain5 \
 @GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@     ifuncmain5pic \
 @GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@     ifuncmain5staticpic \
 @GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@     ifuncmain5pie \
 @GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@     ifuncmain6pie
-@GCC_TRUE@@HAVE_STATIC_TRUE@@IFUNC_STATIC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@am__append_67 = ifuncmain7static \
+@GCC_TRUE@@HAVE_STATIC_TRUE@@IFUNC_STATIC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@am__append_68 = ifuncmain7static \
 @GCC_TRUE@@HAVE_STATIC_TRUE@@IFUNC_STATIC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@        ifuncmain7picstatic
 @GCC_FALSE@ifuncmain7static_DEPENDENCIES =
 @HAVE_STATIC_FALSE@ifuncmain7static_DEPENDENCIES =
 @IFUNC_FALSE@ifuncmain7static_DEPENDENCIES =
 @IFUNC_STATIC_FALSE@ifuncmain7static_DEPENDENCIES =
 @NATIVE_LINKER_FALSE@ifuncmain7static_DEPENDENCIES =
-@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@am__append_68 = ifuncmain7 \
+@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@am__append_69 = ifuncmain7 \
 @GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@     ifuncmain7pic \
 @GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@     ifuncmain7pie \
 @GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@     ifuncvar
@@ -683,7 +694,7 @@ check_PROGRAMS = $(am__EXEEXT_1) $(am__EXEEXT_2) $(am__EXEEXT_3) \
 # Test that __ehdr_start is defined correctly when used with a linker script.
 
 # Test that __ehdr_start is not overridden when supplied by the user.
-@GCC_TRUE@@NATIVE_LINKER_TRUE@am__append_69 = start_lib_test \
+@GCC_TRUE@@NATIVE_LINKER_TRUE@am__append_70 = start_lib_test \
 @GCC_TRUE@@NATIVE_LINKER_TRUE@ ehdr_start_test_1 \
 @GCC_TRUE@@NATIVE_LINKER_TRUE@ ehdr_start_test_2 \
 @GCC_TRUE@@NATIVE_LINKER_TRUE@ ehdr_start_test_3 \
@@ -696,17 +707,17 @@ check_PROGRAMS = $(am__EXEEXT_1) $(am__EXEEXT_2) $(am__EXEEXT_3) \
 # Another simple C test (DW_AT_high_pc encoding) for --gdb-index.
 
 # Test that --gdb-index functions correctly with gcc-generated pubnames.
-@GCC_TRUE@@HAVE_PUBNAMES_TRUE@@NATIVE_LINKER_TRUE@am__append_70 = gdb_index_test_1.sh \
+@GCC_TRUE@@HAVE_PUBNAMES_TRUE@@NATIVE_LINKER_TRUE@am__append_71 = gdb_index_test_1.sh \
 @GCC_TRUE@@HAVE_PUBNAMES_TRUE@@NATIVE_LINKER_TRUE@     gdb_index_test_2.sh \
 @GCC_TRUE@@HAVE_PUBNAMES_TRUE@@NATIVE_LINKER_TRUE@     gdb_index_test_2_gabi.sh \
 @GCC_TRUE@@HAVE_PUBNAMES_TRUE@@NATIVE_LINKER_TRUE@     gdb_index_test_3.sh \
 @GCC_TRUE@@HAVE_PUBNAMES_TRUE@@NATIVE_LINKER_TRUE@     gdb_index_test_4.sh
-@GCC_TRUE@@HAVE_PUBNAMES_TRUE@@NATIVE_LINKER_TRUE@am__append_71 = gdb_index_test_1.stdout \
+@GCC_TRUE@@HAVE_PUBNAMES_TRUE@@NATIVE_LINKER_TRUE@am__append_72 = gdb_index_test_1.stdout \
 @GCC_TRUE@@HAVE_PUBNAMES_TRUE@@NATIVE_LINKER_TRUE@     gdb_index_test_2.stdout \
 @GCC_TRUE@@HAVE_PUBNAMES_TRUE@@NATIVE_LINKER_TRUE@     gdb_index_test_2_gabi.stdout \
 @GCC_TRUE@@HAVE_PUBNAMES_TRUE@@NATIVE_LINKER_TRUE@     gdb_index_test_3.stdout \
 @GCC_TRUE@@HAVE_PUBNAMES_TRUE@@NATIVE_LINKER_TRUE@     gdb_index_test_4.stdout
-@GCC_TRUE@@HAVE_PUBNAMES_TRUE@@NATIVE_LINKER_TRUE@am__append_72 = gdb_index_test_1.stdout \
+@GCC_TRUE@@HAVE_PUBNAMES_TRUE@@NATIVE_LINKER_TRUE@am__append_73 = gdb_index_test_1.stdout \
 @GCC_TRUE@@HAVE_PUBNAMES_TRUE@@NATIVE_LINKER_TRUE@     gdb_index_test_1 \
 @GCC_TRUE@@HAVE_PUBNAMES_TRUE@@NATIVE_LINKER_TRUE@     gdb_index_test_2.stdout \
 @GCC_TRUE@@HAVE_PUBNAMES_TRUE@@NATIVE_LINKER_TRUE@     gdb_index_test_2 \
@@ -728,18 +739,18 @@ check_PROGRAMS = $(am__EXEEXT_1) $(am__EXEEXT_2) $(am__EXEEXT_3) \
 # appropriately aligned.
 
 # Test that the --defsym option copies the symbol type and visibility.
-@GCC_TRUE@@NATIVE_LINKER_TRUE@am__append_73 = ehdr_start_test_4.sh \
+@GCC_TRUE@@NATIVE_LINKER_TRUE@am__append_74 = ehdr_start_test_4.sh \
 @GCC_TRUE@@NATIVE_LINKER_TRUE@ defsym_test.sh
-@GCC_TRUE@@NATIVE_LINKER_TRUE@am__append_74 = ehdr_start_test_4.syms \
+@GCC_TRUE@@NATIVE_LINKER_TRUE@am__append_75 = ehdr_start_test_4.syms \
 @GCC_TRUE@@NATIVE_LINKER_TRUE@ defsym_test.syms
-@GCC_TRUE@@NATIVE_LINKER_TRUE@am__append_75 = ehdr_start_test_4 \
+@GCC_TRUE@@NATIVE_LINKER_TRUE@am__append_76 = ehdr_start_test_4 \
 @GCC_TRUE@@NATIVE_LINKER_TRUE@ defsym_test defsym_test.syms
 @GCC_FALSE@ehdr_start_test_5_DEPENDENCIES =
 @NATIVE_LINKER_FALSE@ehdr_start_test_5_DEPENDENCIES =
 
 # Test the --incremental-unchanged flag with an archive library.
 # The second link should not update the library.
-@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@am__append_76 = incremental_test_2 \
+@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@am__append_77 = incremental_test_2 \
 @DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@     incremental_test_3 \
 @DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@     incremental_test_4 \
 @DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@     incremental_test_5 \
@@ -748,7 +759,7 @@ check_PROGRAMS = $(am__EXEEXT_1) $(am__EXEEXT_2) $(am__EXEEXT_3) \
 @DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@     incremental_common_test_1 \
 @DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@     incremental_comdat_test_1 \
 @DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@     exception_x86_64_bnd_test
-@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@am__append_77 = two_file_test_tmp_2.o \
+@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@am__append_78 = two_file_test_tmp_2.o \
 @DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@     two_file_test_tmp_3.o \
 @DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@     incremental_test_4.base \
 @DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@     two_file_test_tmp_4.o \
@@ -758,30 +769,30 @@ check_PROGRAMS = $(am__EXEEXT_1) $(am__EXEEXT_2) $(am__EXEEXT_3) \
 # These tests work with native and cross linkers.
 
 # Test script section order.
-@NATIVE_OR_CROSS_LINKER_TRUE@am__append_78 = script_test_10.sh
-@NATIVE_OR_CROSS_LINKER_TRUE@am__append_79 = script_test_10.stdout
-@NATIVE_OR_CROSS_LINKER_TRUE@am__append_80 = script_test_10
+@NATIVE_OR_CROSS_LINKER_TRUE@am__append_79 = script_test_10.sh
+@NATIVE_OR_CROSS_LINKER_TRUE@am__append_80 = script_test_10.stdout
+@NATIVE_OR_CROSS_LINKER_TRUE@am__append_81 = script_test_10
 
 # These tests work with cross linkers only.
-@DEFAULT_TARGET_I386_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@am__append_81 = split_i386.sh
-@DEFAULT_TARGET_I386_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@am__append_82 = split_i386_1.stdout split_i386_2.stdout \
+@DEFAULT_TARGET_I386_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@am__append_82 = split_i386.sh
+@DEFAULT_TARGET_I386_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@am__append_83 = split_i386_1.stdout split_i386_2.stdout \
 @DEFAULT_TARGET_I386_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@        split_i386_3.stdout split_i386_4.stdout split_i386_r.stdout
 
-@DEFAULT_TARGET_I386_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@am__append_83 = split_i386_1 split_i386_2 split_i386_3 \
+@DEFAULT_TARGET_I386_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@am__append_84 = split_i386_1 split_i386_2 split_i386_3 \
 @DEFAULT_TARGET_I386_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@        split_i386_4 split_i386_r
 
-@DEFAULT_TARGET_X86_64_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@am__append_84 = split_x86_64.sh
-@DEFAULT_TARGET_X86_64_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@am__append_85 = split_x86_64_1.stdout split_x86_64_2.stdout \
+@DEFAULT_TARGET_X86_64_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@am__append_85 = split_x86_64.sh
+@DEFAULT_TARGET_X86_64_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@am__append_86 = split_x86_64_1.stdout split_x86_64_2.stdout \
 @DEFAULT_TARGET_X86_64_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@      split_x86_64_3.stdout split_x86_64_4.stdout split_x86_64_r.stdout
 
-@DEFAULT_TARGET_X86_64_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@am__append_86 = split_x86_64_1 split_x86_64_2 split_x86_64_3 \
+@DEFAULT_TARGET_X86_64_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@am__append_87 = split_x86_64_1 split_x86_64_2 split_x86_64_3 \
 @DEFAULT_TARGET_X86_64_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@      split_x86_64_4 split_x86_64_r
 
-@DEFAULT_TARGET_X32_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@am__append_87 = split_x32.sh
-@DEFAULT_TARGET_X32_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@am__append_88 = split_x32_1.stdout split_x32_2.stdout \
+@DEFAULT_TARGET_X32_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@am__append_88 = split_x32.sh
+@DEFAULT_TARGET_X32_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@am__append_89 = split_x32_1.stdout split_x32_2.stdout \
 @DEFAULT_TARGET_X32_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ split_x32_3.stdout split_x32_4.stdout split_x32_r.stdout
 
-@DEFAULT_TARGET_X32_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@am__append_89 = split_x32_1 split_x32_2 split_x32_3 \
+@DEFAULT_TARGET_X32_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@am__append_90 = split_x32_1 split_x32_2 split_x32_3 \
 @DEFAULT_TARGET_X32_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ split_x32_4 split_x32_r
 
 
@@ -796,7 +807,7 @@ check_PROGRAMS = $(am__EXEEXT_1) $(am__EXEEXT_2) $(am__EXEEXT_3) \
 # Check Thumb to Thumb farcall veneers
 
 # Check Thumb to ARM farcall veneers
-@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@am__append_90 = arm_abs_global.sh \
+@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@am__append_91 = arm_abs_global.sh \
 @DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_branch_in_range.sh \
 @DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_branch_out_of_range.sh \
 @DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_fix_v4bx.sh \
@@ -810,7 +821,7 @@ check_PROGRAMS = $(am__EXEEXT_1) $(am__EXEEXT_2) $(am__EXEEXT_3) \
 @DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_farcall_arm_thumb.sh \
 @DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_farcall_thumb_thumb.sh \
 @DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_farcall_thumb_arm.sh
-@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@am__append_91 = arm_abs_global.stdout \
+@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@am__append_92 = arm_abs_global.stdout \
 @DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_bl_in_range.stdout \
 @DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_bl_out_of_range.stdout \
 @DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ thumb_bl_in_range.stdout \
@@ -855,7 +866,7 @@ check_PROGRAMS = $(am__EXEEXT_1) $(am__EXEEXT_2) $(am__EXEEXT_3) \
 @DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_farcall_thumb_thumb_6m.stdout \
 @DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_farcall_thumb_arm.stdout \
 @DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_farcall_thumb_arm_5t.stdout
-@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@am__append_92 = arm_abs_global \
+@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@am__append_93 = arm_abs_global \
 @DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_bl_in_range \
 @DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_bl_out_of_range \
 @DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ thumb_bl_in_range \
@@ -898,11 +909,11 @@ check_PROGRAMS = $(am__EXEEXT_1) $(am__EXEEXT_2) $(am__EXEEXT_3) \
 @DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_farcall_thumb_thumb_6m \
 @DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_farcall_thumb_arm \
 @DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@ arm_farcall_thumb_arm_5t
-@DEFAULT_TARGET_AARCH64_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@am__append_93 = aarch64_reloc_none.sh
-@DEFAULT_TARGET_AARCH64_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@am__append_94 = aarch64_reloc_none.stdout
-@DEFAULT_TARGET_AARCH64_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@am__append_95 = aarch64_reloc_none
-@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@am__append_96 = split_s390.sh
-@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@am__append_97 = split_s390_z1.stdout split_s390_z2.stdout split_s390_z3.stdout \
+@DEFAULT_TARGET_AARCH64_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@am__append_94 = aarch64_reloc_none.sh
+@DEFAULT_TARGET_AARCH64_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@am__append_95 = aarch64_reloc_none.stdout
+@DEFAULT_TARGET_AARCH64_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@am__append_96 = aarch64_reloc_none
+@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@am__append_97 = split_s390.sh
+@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@am__append_98 = split_s390_z1.stdout split_s390_z2.stdout split_s390_z3.stdout \
 @DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@        split_s390_z4.stdout split_s390_n1.stdout split_s390_n2.stdout \
 @DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@        split_s390_a1.stdout split_s390_a2.stdout split_s390_z1_ns.stdout \
 @DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@        split_s390_z2_ns.stdout split_s390_z3_ns.stdout split_s390_z4_ns.stdout \
@@ -914,7 +925,7 @@ check_PROGRAMS = $(am__EXEEXT_1) $(am__EXEEXT_2) $(am__EXEEXT_3) \
 @DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@        split_s390x_z4_ns.stdout split_s390x_n1_ns.stdout \
 @DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@        split_s390x_n2_ns.stdout split_s390x_r.stdout
 
-@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@am__append_98 = split_s390_z1 split_s390_z2 split_s390_z3 \
+@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@am__append_99 = split_s390_z1 split_s390_z2 split_s390_z3 \
 @DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@        split_s390_z4 split_s390_n1 split_s390_n2 split_s390_a1 \
 @DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@        split_s390_a2 split_s390_z1_ns split_s390_z2_ns split_s390_z3_ns \
 @DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@        split_s390_z4_ns split_s390_n1_ns split_s390_n2_ns split_s390_r \
@@ -923,10 +934,10 @@ check_PROGRAMS = $(am__EXEEXT_1) $(am__EXEEXT_2) $(am__EXEEXT_3) \
 @DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@        split_s390x_z1_ns split_s390x_z2_ns split_s390x_z3_ns \
 @DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@        split_s390x_z4_ns split_s390x_n1_ns split_s390x_n2_ns split_s390x_r
 
-@DEFAULT_TARGET_X86_64_TRUE@am__append_99 = *.dwo *.dwp
-@DEFAULT_TARGET_X86_64_TRUE@am__append_100 = dwp_test_1.sh \
+@DEFAULT_TARGET_X86_64_TRUE@am__append_100 = *.dwo *.dwp
+@DEFAULT_TARGET_X86_64_TRUE@am__append_101 = dwp_test_1.sh \
 @DEFAULT_TARGET_X86_64_TRUE@   dwp_test_2.sh
-@DEFAULT_TARGET_X86_64_TRUE@am__append_101 = dwp_test_1.stdout \
+@DEFAULT_TARGET_X86_64_TRUE@am__append_102 = dwp_test_1.stdout \
 @DEFAULT_TARGET_X86_64_TRUE@   dwp_test_2.stdout
 subdir = testsuite
 DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am
@@ -1029,7 +1040,12 @@ libgoldtest_a_OBJECTS = $(am_libgoldtest_a_OBJECTS)
 @DEFAULT_TARGET_X86_64_OR_X32_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@      pr20216c_test$(EXEEXT) \
 @DEFAULT_TARGET_X86_64_OR_X32_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@      pr20216d_test$(EXEEXT) \
 @DEFAULT_TARGET_X86_64_OR_X32_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@      pr20216e_test$(EXEEXT)
-@GCC_TRUE@@NATIVE_LINKER_TRUE@am__EXEEXT_21 =  \
+@DEFAULT_TARGET_I386_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@am__EXEEXT_21 = pr20308a_test$(EXEEXT) \
+@DEFAULT_TARGET_I386_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@       pr20308b_test$(EXEEXT) \
+@DEFAULT_TARGET_I386_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@       pr20308c_test$(EXEEXT) \
+@DEFAULT_TARGET_I386_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@       pr20308d_test$(EXEEXT) \
+@DEFAULT_TARGET_I386_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@       pr20308e_test$(EXEEXT)
+@GCC_TRUE@@NATIVE_LINKER_TRUE@am__EXEEXT_22 =  \
 @GCC_TRUE@@NATIVE_LINKER_TRUE@ many_sections_test$(EXEEXT) \
 @GCC_TRUE@@NATIVE_LINKER_TRUE@ many_sections_r_test$(EXEEXT) \
 @GCC_TRUE@@NATIVE_LINKER_TRUE@ initpri1$(EXEEXT) \
@@ -1070,7 +1086,7 @@ libgoldtest_a_OBJECTS = $(am_libgoldtest_a_OBJECTS)
 @GCC_TRUE@@NATIVE_LINKER_TRUE@ dynamic_list_2$(EXEEXT) \
 @GCC_TRUE@@NATIVE_LINKER_TRUE@ thin_archive_test_1$(EXEEXT) \
 @GCC_TRUE@@NATIVE_LINKER_TRUE@ thin_archive_test_2$(EXEEXT)
-@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@am__EXEEXT_22 = plugin_test_1$(EXEEXT) \
+@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@am__EXEEXT_23 = plugin_test_1$(EXEEXT) \
 @GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@   plugin_test_2$(EXEEXT) \
 @GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@   plugin_test_3$(EXEEXT) \
 @GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@   plugin_test_4$(EXEEXT) \
@@ -1081,18 +1097,18 @@ libgoldtest_a_OBJECTS = $(am_libgoldtest_a_OBJECTS)
 @GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@   plugin_test_10$(EXEEXT) \
 @GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@   plugin_test_11$(EXEEXT) \
 @GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@   plugin_test_start_lib$(EXEEXT)
-@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@@TLS_TRUE@am__EXEEXT_23 = plugin_test_tls$(EXEEXT)
-@GCC_TRUE@@NATIVE_LINKER_TRUE@am__EXEEXT_24 =  \
+@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@@TLS_TRUE@am__EXEEXT_24 = plugin_test_tls$(EXEEXT)
+@GCC_TRUE@@NATIVE_LINKER_TRUE@am__EXEEXT_25 =  \
 @GCC_TRUE@@NATIVE_LINKER_TRUE@ exclude_libs_test$(EXEEXT) \
 @GCC_TRUE@@NATIVE_LINKER_TRUE@ local_labels_test$(EXEEXT) \
 @GCC_TRUE@@NATIVE_LINKER_TRUE@ discard_locals_test$(EXEEXT)
-@GCC_TRUE@@MCMODEL_MEDIUM_TRUE@@NATIVE_LINKER_TRUE@am__EXEEXT_25 = large$(EXEEXT)
-@GCC_TRUE@@NATIVE_LINKER_TRUE@am__EXEEXT_26 =  \
+@GCC_TRUE@@MCMODEL_MEDIUM_TRUE@@NATIVE_LINKER_TRUE@am__EXEEXT_26 = large$(EXEEXT)
+@GCC_TRUE@@NATIVE_LINKER_TRUE@am__EXEEXT_27 =  \
 @GCC_TRUE@@NATIVE_LINKER_TRUE@ permission_test$(EXEEXT) \
 @GCC_TRUE@@NATIVE_LINKER_TRUE@ searched_file_test$(EXEEXT)
-@GCC_TRUE@@HAVE_STATIC_TRUE@@IFUNC_STATIC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@am__EXEEXT_27 = ifuncmain1static$(EXEEXT) \
+@GCC_TRUE@@HAVE_STATIC_TRUE@@IFUNC_STATIC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@am__EXEEXT_28 = ifuncmain1static$(EXEEXT) \
 @GCC_TRUE@@HAVE_STATIC_TRUE@@IFUNC_STATIC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@        ifuncmain1picstatic$(EXEEXT)
-@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@am__EXEEXT_28 =  \
+@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@am__EXEEXT_29 =  \
 @GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@     ifuncmain1$(EXEEXT) \
 @GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@     ifuncmain1pic$(EXEEXT) \
 @GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@     ifuncmain1vis$(EXEEXT) \
@@ -1101,37 +1117,37 @@ libgoldtest_a_OBJECTS = $(am_libgoldtest_a_OBJECTS)
 @GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@     ifuncmain1pie$(EXEEXT) \
 @GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@     ifuncmain1vispie$(EXEEXT) \
 @GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@     ifuncmain1staticpie$(EXEEXT)
-@GCC_TRUE@@HAVE_STATIC_TRUE@@IFUNC_STATIC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@am__EXEEXT_29 = ifuncmain2static$(EXEEXT) \
+@GCC_TRUE@@HAVE_STATIC_TRUE@@IFUNC_STATIC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@am__EXEEXT_30 = ifuncmain2static$(EXEEXT) \
 @GCC_TRUE@@HAVE_STATIC_TRUE@@IFUNC_STATIC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@        ifuncmain2picstatic$(EXEEXT)
-@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@am__EXEEXT_30 =  \
+@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@am__EXEEXT_31 =  \
 @GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@     ifuncmain2$(EXEEXT) \
 @GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@     ifuncmain2pic$(EXEEXT) \
 @GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@     ifuncmain3$(EXEEXT)
-@GCC_TRUE@@HAVE_STATIC_TRUE@@IFUNC_STATIC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@am__EXEEXT_31 = ifuncmain4static$(EXEEXT) \
+@GCC_TRUE@@HAVE_STATIC_TRUE@@IFUNC_STATIC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@am__EXEEXT_32 = ifuncmain4static$(EXEEXT) \
 @GCC_TRUE@@HAVE_STATIC_TRUE@@IFUNC_STATIC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@        ifuncmain4picstatic$(EXEEXT)
-@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@am__EXEEXT_32 =  \
+@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@am__EXEEXT_33 =  \
 @GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@     ifuncmain4$(EXEEXT)
-@GCC_TRUE@@HAVE_STATIC_TRUE@@IFUNC_STATIC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@am__EXEEXT_33 = ifuncmain5static$(EXEEXT) \
+@GCC_TRUE@@HAVE_STATIC_TRUE@@IFUNC_STATIC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@am__EXEEXT_34 = ifuncmain5static$(EXEEXT) \
 @GCC_TRUE@@HAVE_STATIC_TRUE@@IFUNC_STATIC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@        ifuncmain5picstatic$(EXEEXT)
-@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@am__EXEEXT_34 =  \
+@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@am__EXEEXT_35 =  \
 @GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@     ifuncmain5$(EXEEXT) \
 @GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@     ifuncmain5pic$(EXEEXT) \
 @GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@     ifuncmain5staticpic$(EXEEXT) \
 @GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@     ifuncmain5pie$(EXEEXT) \
 @GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@     ifuncmain6pie$(EXEEXT)
-@GCC_TRUE@@HAVE_STATIC_TRUE@@IFUNC_STATIC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@am__EXEEXT_35 = ifuncmain7static$(EXEEXT) \
+@GCC_TRUE@@HAVE_STATIC_TRUE@@IFUNC_STATIC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@am__EXEEXT_36 = ifuncmain7static$(EXEEXT) \
 @GCC_TRUE@@HAVE_STATIC_TRUE@@IFUNC_STATIC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@        ifuncmain7picstatic$(EXEEXT)
-@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@am__EXEEXT_36 =  \
+@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@am__EXEEXT_37 =  \
 @GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@     ifuncmain7$(EXEEXT) \
 @GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@     ifuncmain7pic$(EXEEXT) \
 @GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@     ifuncmain7pie$(EXEEXT) \
 @GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@     ifuncvar$(EXEEXT)
-@GCC_TRUE@@NATIVE_LINKER_TRUE@am__EXEEXT_37 = start_lib_test$(EXEEXT) \
+@GCC_TRUE@@NATIVE_LINKER_TRUE@am__EXEEXT_38 = start_lib_test$(EXEEXT) \
 @GCC_TRUE@@NATIVE_LINKER_TRUE@ ehdr_start_test_1$(EXEEXT) \
 @GCC_TRUE@@NATIVE_LINKER_TRUE@ ehdr_start_test_2$(EXEEXT) \
 @GCC_TRUE@@NATIVE_LINKER_TRUE@ ehdr_start_test_3$(EXEEXT) \
 @GCC_TRUE@@NATIVE_LINKER_TRUE@ ehdr_start_test_5$(EXEEXT)
-@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@am__EXEEXT_38 = incremental_test_2$(EXEEXT) \
+@DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@am__EXEEXT_39 = incremental_test_2$(EXEEXT) \
 @DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@     incremental_test_3$(EXEEXT) \
 @DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@     incremental_test_4$(EXEEXT) \
 @DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@     incremental_test_5$(EXEEXT) \
@@ -1825,6 +1841,30 @@ pr20216d_test_LINK = $(CCLD) $(pr20216d_test_CFLAGS) $(CFLAGS) \
 pr20216e_test_OBJECTS = $(am_pr20216e_test_OBJECTS)
 pr20216e_test_LINK = $(CCLD) $(pr20216e_test_CFLAGS) $(CFLAGS) \
        $(pr20216e_test_LDFLAGS) $(LDFLAGS) -o $@
+@DEFAULT_TARGET_I386_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@am_pr20308a_test_OBJECTS = pr20308a_test-pr20308_main.$(OBJEXT) \
+@DEFAULT_TARGET_I386_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@       pr20308a_test-pr20308_def.$(OBJEXT)
+pr20308a_test_OBJECTS = $(am_pr20308a_test_OBJECTS)
+pr20308a_test_LINK = $(CCLD) $(pr20308a_test_CFLAGS) $(CFLAGS) \
+       $(pr20308a_test_LDFLAGS) $(LDFLAGS) -o $@
+@DEFAULT_TARGET_I386_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@am_pr20308b_test_OBJECTS = pr20308b_test-pr20308_main.$(OBJEXT) \
+@DEFAULT_TARGET_I386_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@       pr20308b_test-pr20308_def.$(OBJEXT)
+pr20308b_test_OBJECTS = $(am_pr20308b_test_OBJECTS)
+pr20308b_test_LINK = $(CCLD) $(pr20308b_test_CFLAGS) $(CFLAGS) \
+       $(pr20308b_test_LDFLAGS) $(LDFLAGS) -o $@
+@DEFAULT_TARGET_I386_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@am_pr20308c_test_OBJECTS = pr20308c_test-pr20308_main.$(OBJEXT) \
+@DEFAULT_TARGET_I386_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@       pr20308c_test-pr20308_def.$(OBJEXT)
+pr20308c_test_OBJECTS = $(am_pr20308c_test_OBJECTS)
+pr20308c_test_LINK = $(CCLD) $(pr20308c_test_CFLAGS) $(CFLAGS) \
+       $(pr20308c_test_LDFLAGS) $(LDFLAGS) -o $@
+@DEFAULT_TARGET_I386_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@am_pr20308d_test_OBJECTS = pr20308d_test-pr20308_main.$(OBJEXT) \
+@DEFAULT_TARGET_I386_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@       pr20308d_test-pr20308_def.$(OBJEXT)
+pr20308d_test_OBJECTS = $(am_pr20308d_test_OBJECTS)
+pr20308d_test_LINK = $(CCLD) $(pr20308d_test_CFLAGS) $(CFLAGS) \
+       $(pr20308d_test_LDFLAGS) $(LDFLAGS) -o $@
+@DEFAULT_TARGET_I386_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@am_pr20308e_test_OBJECTS = pr20308e_test-pr20308_main.$(OBJEXT)
+pr20308e_test_OBJECTS = $(am_pr20308e_test_OBJECTS)
+pr20308e_test_LINK = $(CCLD) $(pr20308e_test_CFLAGS) $(CFLAGS) \
+       $(pr20308e_test_LDFLAGS) $(LDFLAGS) -o $@
 @GCC_TRUE@@NATIVE_LINKER_TRUE@am_protected_1_OBJECTS =  \
 @GCC_TRUE@@NATIVE_LINKER_TRUE@ protected_main_1.$(OBJEXT) \
 @GCC_TRUE@@NATIVE_LINKER_TRUE@ protected_main_2.$(OBJEXT) \
@@ -2287,12 +2327,14 @@ SOURCES = $(libgoldtest_a_SOURCES) basic_pic_test.c basic_pie_test.c \
        plugin_test_start_lib.c plugin_test_tls.c \
        $(pr20216a_test_SOURCES) $(pr20216b_test_SOURCES) \
        $(pr20216c_test_SOURCES) $(pr20216d_test_SOURCES) \
-       $(pr20216e_test_SOURCES) $(protected_1_SOURCES) \
-       $(protected_2_SOURCES) $(relro_now_test_SOURCES) \
-       $(relro_script_test_SOURCES) $(relro_strip_test_SOURCES) \
-       $(relro_test_SOURCES) $(script_test_1_SOURCES) \
-       script_test_11.c script_test_12.c script_test_12i.c \
-       $(script_test_2_SOURCES) script_test_3.c \
+       $(pr20216e_test_SOURCES) $(pr20308a_test_SOURCES) \
+       $(pr20308b_test_SOURCES) $(pr20308c_test_SOURCES) \
+       $(pr20308d_test_SOURCES) $(pr20308e_test_SOURCES) \
+       $(protected_1_SOURCES) $(protected_2_SOURCES) \
+       $(relro_now_test_SOURCES) $(relro_script_test_SOURCES) \
+       $(relro_strip_test_SOURCES) $(relro_test_SOURCES) \
+       $(script_test_1_SOURCES) script_test_11.c script_test_12.c \
+       script_test_12i.c $(script_test_2_SOURCES) script_test_3.c \
        $(searched_file_test_SOURCES) start_lib_test.c \
        $(thin_archive_test_1_SOURCES) $(thin_archive_test_2_SOURCES) \
        $(tls_phdrs_script_test_SOURCES) $(tls_pic_test_SOURCES) \
@@ -2662,31 +2704,31 @@ TEST_AS = $(top_builddir)/../gas/as-new
 # the right choice for files 'make' builds that people rebuild.
 MOSTLYCLEANFILES = *.so *.syms *.stdout $(am__append_4) \
        $(am__append_17) $(am__append_21) $(am__append_31) \
-       $(am__append_33) $(am__append_36) $(am__append_39) \
-       $(am__append_45) $(am__append_49) $(am__append_50) \
-       $(am__append_56) $(am__append_72) $(am__append_75) \
-       $(am__append_77) $(am__append_80) $(am__append_83) \
-       $(am__append_86) $(am__append_89) $(am__append_92) \
-       $(am__append_95) $(am__append_98) $(am__append_99)
+       $(am__append_33) $(am__append_36) $(am__append_40) \
+       $(am__append_46) $(am__append_50) $(am__append_51) \
+       $(am__append_57) $(am__append_73) $(am__append_76) \
+       $(am__append_78) $(am__append_81) $(am__append_84) \
+       $(am__append_87) $(am__append_90) $(am__append_93) \
+       $(am__append_96) $(am__append_99) $(am__append_100)
 
 # We will add to these later, for each individual test.  Note
 # that we add each test under check_SCRIPTS or check_PROGRAMS;
 # the TESTS variable is automatically populated from these.
 check_SCRIPTS = $(am__append_2) $(am__append_19) $(am__append_23) \
-       $(am__append_29) $(am__append_34) $(am__append_40) \
-       $(am__append_43) $(am__append_47) $(am__append_51) \
-       $(am__append_54) $(am__append_70) $(am__append_73) \
-       $(am__append_78) $(am__append_81) $(am__append_84) \
-       $(am__append_87) $(am__append_90) $(am__append_93) \
-       $(am__append_96) $(am__append_100)
-check_DATA = $(am__append_3) $(am__append_20) $(am__append_24) \
-       $(am__append_30) $(am__append_35) $(am__append_41) \
+       $(am__append_29) $(am__append_34) $(am__append_41) \
        $(am__append_44) $(am__append_48) $(am__append_52) \
        $(am__append_55) $(am__append_71) $(am__append_74) \
        $(am__append_79) $(am__append_82) $(am__append_85) \
        $(am__append_88) $(am__append_91) $(am__append_94) \
        $(am__append_97) $(am__append_101)
-BUILT_SOURCES = $(am__append_38)
+check_DATA = $(am__append_3) $(am__append_20) $(am__append_24) \
+       $(am__append_30) $(am__append_35) $(am__append_42) \
+       $(am__append_45) $(am__append_49) $(am__append_53) \
+       $(am__append_56) $(am__append_72) $(am__append_75) \
+       $(am__append_80) $(am__append_83) $(am__append_86) \
+       $(am__append_89) $(am__append_92) $(am__append_95) \
+       $(am__append_98) $(am__append_102)
+BUILT_SOURCES = $(am__append_39)
 TESTS = $(check_SCRIPTS) $(check_PROGRAMS)
 
 # ---------------------------------------------------------------------
@@ -3003,6 +3045,31 @@ LDADD = libgoldtest.a ../libgold.a ../../libiberty/libiberty.a $(LIBINTL) \
 @DEFAULT_TARGET_X86_64_OR_X32_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@pr20216e_test_CFLAGS = -Bgcctestdir/ -fPIE
 @DEFAULT_TARGET_X86_64_OR_X32_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@pr20216e_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,.
 @DEFAULT_TARGET_X86_64_OR_X32_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@pr20216e_test_LDADD = pr20216_gd.o pr20216_ld.o pr20216b.so
+@DEFAULT_TARGET_I386_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@pr20308a_test_SOURCES = pr20308_main.c pr20308_def.c
+@DEFAULT_TARGET_I386_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@pr20308a_test_DEPENDENCIES = pr20308_gd.o pr20308_ld.o gcctestdir/ld gcctestdir/as
+@DEFAULT_TARGET_I386_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@pr20308a_test_CFLAGS = -Bgcctestdir/ -fPIE
+@DEFAULT_TARGET_I386_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@pr20308a_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,.
+@DEFAULT_TARGET_I386_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@pr20308a_test_LDADD = pr20308_gd.o pr20308_ld.o
+@DEFAULT_TARGET_I386_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@pr20308b_test_SOURCES = pr20308_main.c pr20308_def.c
+@DEFAULT_TARGET_I386_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@pr20308b_test_DEPENDENCIES = pr20308_gd.o pr20308_ld.o gcctestdir/ld gcctestdir/as
+@DEFAULT_TARGET_I386_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@pr20308b_test_CFLAGS = -Bgcctestdir/ -fPIE
+@DEFAULT_TARGET_I386_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@pr20308b_test_LDFLAGS = -pie -Bgcctestdir/ -Wl,-R,.
+@DEFAULT_TARGET_I386_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@pr20308b_test_LDADD = pr20308_gd.o pr20308_ld.o
+@DEFAULT_TARGET_I386_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@pr20308c_test_SOURCES = pr20308_main.c pr20308_def.c
+@DEFAULT_TARGET_I386_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@pr20308c_test_DEPENDENCIES = pr20308_gd.o pr20308_ld.o gcctestdir/ld gcctestdir/as
+@DEFAULT_TARGET_I386_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@pr20308c_test_CFLAGS = -Bgcctestdir/ -fPIE
+@DEFAULT_TARGET_I386_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@pr20308c_test_LDFLAGS = -static -Bgcctestdir/ -Wl,-R,.
+@DEFAULT_TARGET_I386_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@pr20308c_test_LDADD = pr20308_gd.o pr20308_ld.o
+@DEFAULT_TARGET_I386_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@pr20308d_test_SOURCES = pr20308_main.c pr20308_def.c
+@DEFAULT_TARGET_I386_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@pr20308d_test_DEPENDENCIES = pr20308a.so gcctestdir/ld gcctestdir/as
+@DEFAULT_TARGET_I386_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@pr20308d_test_CFLAGS = -Bgcctestdir/ -fPIE
+@DEFAULT_TARGET_I386_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@pr20308d_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,.
+@DEFAULT_TARGET_I386_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@pr20308d_test_LDADD = pr20308a.so
+@DEFAULT_TARGET_I386_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@pr20308e_test_SOURCES = pr20308_main.c
+@DEFAULT_TARGET_I386_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@pr20308e_test_DEPENDENCIES = pr20308_gd.o pr20308_ld.o pr20308b.so gcctestdir/ld gcctestdir/as
+@DEFAULT_TARGET_I386_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@pr20308e_test_CFLAGS = -Bgcctestdir/ -fPIE
+@DEFAULT_TARGET_I386_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@pr20308e_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,.
+@DEFAULT_TARGET_I386_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@pr20308e_test_LDADD = pr20308_gd.o pr20308_ld.o pr20308b.so
 @GCC_TRUE@@NATIVE_LINKER_TRUE@many_sections_test_SOURCES = many_sections_test.cc
 @GCC_TRUE@@NATIVE_LINKER_TRUE@many_sections_test_DEPENDENCIES = gcctestdir/ld
 @GCC_TRUE@@NATIVE_LINKER_TRUE@many_sections_test_LDFLAGS = -Bgcctestdir/ -rdynamic
@@ -3906,6 +3973,21 @@ pr20216d_test$(EXEEXT): $(pr20216d_test_OBJECTS) $(pr20216d_test_DEPENDENCIES) $
 pr20216e_test$(EXEEXT): $(pr20216e_test_OBJECTS) $(pr20216e_test_DEPENDENCIES) $(EXTRA_pr20216e_test_DEPENDENCIES) 
        @rm -f pr20216e_test$(EXEEXT)
        $(pr20216e_test_LINK) $(pr20216e_test_OBJECTS) $(pr20216e_test_LDADD) $(LIBS)
+pr20308a_test$(EXEEXT): $(pr20308a_test_OBJECTS) $(pr20308a_test_DEPENDENCIES) $(EXTRA_pr20308a_test_DEPENDENCIES) 
+       @rm -f pr20308a_test$(EXEEXT)
+       $(pr20308a_test_LINK) $(pr20308a_test_OBJECTS) $(pr20308a_test_LDADD) $(LIBS)
+pr20308b_test$(EXEEXT): $(pr20308b_test_OBJECTS) $(pr20308b_test_DEPENDENCIES) $(EXTRA_pr20308b_test_DEPENDENCIES) 
+       @rm -f pr20308b_test$(EXEEXT)
+       $(pr20308b_test_LINK) $(pr20308b_test_OBJECTS) $(pr20308b_test_LDADD) $(LIBS)
+pr20308c_test$(EXEEXT): $(pr20308c_test_OBJECTS) $(pr20308c_test_DEPENDENCIES) $(EXTRA_pr20308c_test_DEPENDENCIES) 
+       @rm -f pr20308c_test$(EXEEXT)
+       $(pr20308c_test_LINK) $(pr20308c_test_OBJECTS) $(pr20308c_test_LDADD) $(LIBS)
+pr20308d_test$(EXEEXT): $(pr20308d_test_OBJECTS) $(pr20308d_test_DEPENDENCIES) $(EXTRA_pr20308d_test_DEPENDENCIES) 
+       @rm -f pr20308d_test$(EXEEXT)
+       $(pr20308d_test_LINK) $(pr20308d_test_OBJECTS) $(pr20308d_test_LDADD) $(LIBS)
+pr20308e_test$(EXEEXT): $(pr20308e_test_OBJECTS) $(pr20308e_test_DEPENDENCIES) $(EXTRA_pr20308e_test_DEPENDENCIES) 
+       @rm -f pr20308e_test$(EXEEXT)
+       $(pr20308e_test_LINK) $(pr20308e_test_OBJECTS) $(pr20308e_test_LDADD) $(LIBS)
 protected_1$(EXEEXT): $(protected_1_OBJECTS) $(protected_1_DEPENDENCIES) $(EXTRA_protected_1_DEPENDENCIES) 
        @rm -f protected_1$(EXEEXT)
        $(protected_1_LINK) $(protected_1_OBJECTS) $(protected_1_LDADD) $(LIBS)
@@ -4255,6 +4337,15 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pr20216d_test-pr20216_def.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pr20216d_test-pr20216_main.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pr20216e_test-pr20216_main.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pr20308a_test-pr20308_def.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pr20308a_test-pr20308_main.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pr20308b_test-pr20308_def.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pr20308b_test-pr20308_main.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pr20308c_test-pr20308_def.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pr20308c_test-pr20308_main.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pr20308d_test-pr20308_def.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pr20308d_test-pr20308_main.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pr20308e_test-pr20308_main.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/protected_3.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/protected_main_1.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/protected_main_2.Po@am__quote@
@@ -4451,6 +4542,132 @@ pr20216e_test-pr20216_main.obj: pr20216_main.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pr20216e_test_CFLAGS) $(CFLAGS) -c -o pr20216e_test-pr20216_main.obj `if test -f 'pr20216_main.c'; then $(CYGPATH_W) 'pr20216_main.c'; else $(CYGPATH_W) '$(srcdir)/pr20216_main.c'; fi`
 
+pr20308a_test-pr20308_main.o: pr20308_main.c
+@am__fastdepCC_TRUE@   $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pr20308a_test_CFLAGS) $(CFLAGS) -MT pr20308a_test-pr20308_main.o -MD -MP -MF $(DEPDIR)/pr20308a_test-pr20308_main.Tpo -c -o pr20308a_test-pr20308_main.o `test -f 'pr20308_main.c' || echo '$(srcdir)/'`pr20308_main.c
+@am__fastdepCC_TRUE@   $(am__mv) $(DEPDIR)/pr20308a_test-pr20308_main.Tpo $(DEPDIR)/pr20308a_test-pr20308_main.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='pr20308_main.c' object='pr20308a_test-pr20308_main.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pr20308a_test_CFLAGS) $(CFLAGS) -c -o pr20308a_test-pr20308_main.o `test -f 'pr20308_main.c' || echo '$(srcdir)/'`pr20308_main.c
+
+pr20308a_test-pr20308_main.obj: pr20308_main.c
+@am__fastdepCC_TRUE@   $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pr20308a_test_CFLAGS) $(CFLAGS) -MT pr20308a_test-pr20308_main.obj -MD -MP -MF $(DEPDIR)/pr20308a_test-pr20308_main.Tpo -c -o pr20308a_test-pr20308_main.obj `if test -f 'pr20308_main.c'; then $(CYGPATH_W) 'pr20308_main.c'; else $(CYGPATH_W) '$(srcdir)/pr20308_main.c'; fi`
+@am__fastdepCC_TRUE@   $(am__mv) $(DEPDIR)/pr20308a_test-pr20308_main.Tpo $(DEPDIR)/pr20308a_test-pr20308_main.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='pr20308_main.c' object='pr20308a_test-pr20308_main.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pr20308a_test_CFLAGS) $(CFLAGS) -c -o pr20308a_test-pr20308_main.obj `if test -f 'pr20308_main.c'; then $(CYGPATH_W) 'pr20308_main.c'; else $(CYGPATH_W) '$(srcdir)/pr20308_main.c'; fi`
+
+pr20308a_test-pr20308_def.o: pr20308_def.c
+@am__fastdepCC_TRUE@   $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pr20308a_test_CFLAGS) $(CFLAGS) -MT pr20308a_test-pr20308_def.o -MD -MP -MF $(DEPDIR)/pr20308a_test-pr20308_def.Tpo -c -o pr20308a_test-pr20308_def.o `test -f 'pr20308_def.c' || echo '$(srcdir)/'`pr20308_def.c
+@am__fastdepCC_TRUE@   $(am__mv) $(DEPDIR)/pr20308a_test-pr20308_def.Tpo $(DEPDIR)/pr20308a_test-pr20308_def.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='pr20308_def.c' object='pr20308a_test-pr20308_def.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pr20308a_test_CFLAGS) $(CFLAGS) -c -o pr20308a_test-pr20308_def.o `test -f 'pr20308_def.c' || echo '$(srcdir)/'`pr20308_def.c
+
+pr20308a_test-pr20308_def.obj: pr20308_def.c
+@am__fastdepCC_TRUE@   $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pr20308a_test_CFLAGS) $(CFLAGS) -MT pr20308a_test-pr20308_def.obj -MD -MP -MF $(DEPDIR)/pr20308a_test-pr20308_def.Tpo -c -o pr20308a_test-pr20308_def.obj `if test -f 'pr20308_def.c'; then $(CYGPATH_W) 'pr20308_def.c'; else $(CYGPATH_W) '$(srcdir)/pr20308_def.c'; fi`
+@am__fastdepCC_TRUE@   $(am__mv) $(DEPDIR)/pr20308a_test-pr20308_def.Tpo $(DEPDIR)/pr20308a_test-pr20308_def.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='pr20308_def.c' object='pr20308a_test-pr20308_def.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pr20308a_test_CFLAGS) $(CFLAGS) -c -o pr20308a_test-pr20308_def.obj `if test -f 'pr20308_def.c'; then $(CYGPATH_W) 'pr20308_def.c'; else $(CYGPATH_W) '$(srcdir)/pr20308_def.c'; fi`
+
+pr20308b_test-pr20308_main.o: pr20308_main.c
+@am__fastdepCC_TRUE@   $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pr20308b_test_CFLAGS) $(CFLAGS) -MT pr20308b_test-pr20308_main.o -MD -MP -MF $(DEPDIR)/pr20308b_test-pr20308_main.Tpo -c -o pr20308b_test-pr20308_main.o `test -f 'pr20308_main.c' || echo '$(srcdir)/'`pr20308_main.c
+@am__fastdepCC_TRUE@   $(am__mv) $(DEPDIR)/pr20308b_test-pr20308_main.Tpo $(DEPDIR)/pr20308b_test-pr20308_main.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='pr20308_main.c' object='pr20308b_test-pr20308_main.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pr20308b_test_CFLAGS) $(CFLAGS) -c -o pr20308b_test-pr20308_main.o `test -f 'pr20308_main.c' || echo '$(srcdir)/'`pr20308_main.c
+
+pr20308b_test-pr20308_main.obj: pr20308_main.c
+@am__fastdepCC_TRUE@   $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pr20308b_test_CFLAGS) $(CFLAGS) -MT pr20308b_test-pr20308_main.obj -MD -MP -MF $(DEPDIR)/pr20308b_test-pr20308_main.Tpo -c -o pr20308b_test-pr20308_main.obj `if test -f 'pr20308_main.c'; then $(CYGPATH_W) 'pr20308_main.c'; else $(CYGPATH_W) '$(srcdir)/pr20308_main.c'; fi`
+@am__fastdepCC_TRUE@   $(am__mv) $(DEPDIR)/pr20308b_test-pr20308_main.Tpo $(DEPDIR)/pr20308b_test-pr20308_main.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='pr20308_main.c' object='pr20308b_test-pr20308_main.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pr20308b_test_CFLAGS) $(CFLAGS) -c -o pr20308b_test-pr20308_main.obj `if test -f 'pr20308_main.c'; then $(CYGPATH_W) 'pr20308_main.c'; else $(CYGPATH_W) '$(srcdir)/pr20308_main.c'; fi`
+
+pr20308b_test-pr20308_def.o: pr20308_def.c
+@am__fastdepCC_TRUE@   $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pr20308b_test_CFLAGS) $(CFLAGS) -MT pr20308b_test-pr20308_def.o -MD -MP -MF $(DEPDIR)/pr20308b_test-pr20308_def.Tpo -c -o pr20308b_test-pr20308_def.o `test -f 'pr20308_def.c' || echo '$(srcdir)/'`pr20308_def.c
+@am__fastdepCC_TRUE@   $(am__mv) $(DEPDIR)/pr20308b_test-pr20308_def.Tpo $(DEPDIR)/pr20308b_test-pr20308_def.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='pr20308_def.c' object='pr20308b_test-pr20308_def.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pr20308b_test_CFLAGS) $(CFLAGS) -c -o pr20308b_test-pr20308_def.o `test -f 'pr20308_def.c' || echo '$(srcdir)/'`pr20308_def.c
+
+pr20308b_test-pr20308_def.obj: pr20308_def.c
+@am__fastdepCC_TRUE@   $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pr20308b_test_CFLAGS) $(CFLAGS) -MT pr20308b_test-pr20308_def.obj -MD -MP -MF $(DEPDIR)/pr20308b_test-pr20308_def.Tpo -c -o pr20308b_test-pr20308_def.obj `if test -f 'pr20308_def.c'; then $(CYGPATH_W) 'pr20308_def.c'; else $(CYGPATH_W) '$(srcdir)/pr20308_def.c'; fi`
+@am__fastdepCC_TRUE@   $(am__mv) $(DEPDIR)/pr20308b_test-pr20308_def.Tpo $(DEPDIR)/pr20308b_test-pr20308_def.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='pr20308_def.c' object='pr20308b_test-pr20308_def.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pr20308b_test_CFLAGS) $(CFLAGS) -c -o pr20308b_test-pr20308_def.obj `if test -f 'pr20308_def.c'; then $(CYGPATH_W) 'pr20308_def.c'; else $(CYGPATH_W) '$(srcdir)/pr20308_def.c'; fi`
+
+pr20308c_test-pr20308_main.o: pr20308_main.c
+@am__fastdepCC_TRUE@   $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pr20308c_test_CFLAGS) $(CFLAGS) -MT pr20308c_test-pr20308_main.o -MD -MP -MF $(DEPDIR)/pr20308c_test-pr20308_main.Tpo -c -o pr20308c_test-pr20308_main.o `test -f 'pr20308_main.c' || echo '$(srcdir)/'`pr20308_main.c
+@am__fastdepCC_TRUE@   $(am__mv) $(DEPDIR)/pr20308c_test-pr20308_main.Tpo $(DEPDIR)/pr20308c_test-pr20308_main.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='pr20308_main.c' object='pr20308c_test-pr20308_main.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pr20308c_test_CFLAGS) $(CFLAGS) -c -o pr20308c_test-pr20308_main.o `test -f 'pr20308_main.c' || echo '$(srcdir)/'`pr20308_main.c
+
+pr20308c_test-pr20308_main.obj: pr20308_main.c
+@am__fastdepCC_TRUE@   $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pr20308c_test_CFLAGS) $(CFLAGS) -MT pr20308c_test-pr20308_main.obj -MD -MP -MF $(DEPDIR)/pr20308c_test-pr20308_main.Tpo -c -o pr20308c_test-pr20308_main.obj `if test -f 'pr20308_main.c'; then $(CYGPATH_W) 'pr20308_main.c'; else $(CYGPATH_W) '$(srcdir)/pr20308_main.c'; fi`
+@am__fastdepCC_TRUE@   $(am__mv) $(DEPDIR)/pr20308c_test-pr20308_main.Tpo $(DEPDIR)/pr20308c_test-pr20308_main.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='pr20308_main.c' object='pr20308c_test-pr20308_main.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pr20308c_test_CFLAGS) $(CFLAGS) -c -o pr20308c_test-pr20308_main.obj `if test -f 'pr20308_main.c'; then $(CYGPATH_W) 'pr20308_main.c'; else $(CYGPATH_W) '$(srcdir)/pr20308_main.c'; fi`
+
+pr20308c_test-pr20308_def.o: pr20308_def.c
+@am__fastdepCC_TRUE@   $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pr20308c_test_CFLAGS) $(CFLAGS) -MT pr20308c_test-pr20308_def.o -MD -MP -MF $(DEPDIR)/pr20308c_test-pr20308_def.Tpo -c -o pr20308c_test-pr20308_def.o `test -f 'pr20308_def.c' || echo '$(srcdir)/'`pr20308_def.c
+@am__fastdepCC_TRUE@   $(am__mv) $(DEPDIR)/pr20308c_test-pr20308_def.Tpo $(DEPDIR)/pr20308c_test-pr20308_def.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='pr20308_def.c' object='pr20308c_test-pr20308_def.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pr20308c_test_CFLAGS) $(CFLAGS) -c -o pr20308c_test-pr20308_def.o `test -f 'pr20308_def.c' || echo '$(srcdir)/'`pr20308_def.c
+
+pr20308c_test-pr20308_def.obj: pr20308_def.c
+@am__fastdepCC_TRUE@   $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pr20308c_test_CFLAGS) $(CFLAGS) -MT pr20308c_test-pr20308_def.obj -MD -MP -MF $(DEPDIR)/pr20308c_test-pr20308_def.Tpo -c -o pr20308c_test-pr20308_def.obj `if test -f 'pr20308_def.c'; then $(CYGPATH_W) 'pr20308_def.c'; else $(CYGPATH_W) '$(srcdir)/pr20308_def.c'; fi`
+@am__fastdepCC_TRUE@   $(am__mv) $(DEPDIR)/pr20308c_test-pr20308_def.Tpo $(DEPDIR)/pr20308c_test-pr20308_def.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='pr20308_def.c' object='pr20308c_test-pr20308_def.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pr20308c_test_CFLAGS) $(CFLAGS) -c -o pr20308c_test-pr20308_def.obj `if test -f 'pr20308_def.c'; then $(CYGPATH_W) 'pr20308_def.c'; else $(CYGPATH_W) '$(srcdir)/pr20308_def.c'; fi`
+
+pr20308d_test-pr20308_main.o: pr20308_main.c
+@am__fastdepCC_TRUE@   $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pr20308d_test_CFLAGS) $(CFLAGS) -MT pr20308d_test-pr20308_main.o -MD -MP -MF $(DEPDIR)/pr20308d_test-pr20308_main.Tpo -c -o pr20308d_test-pr20308_main.o `test -f 'pr20308_main.c' || echo '$(srcdir)/'`pr20308_main.c
+@am__fastdepCC_TRUE@   $(am__mv) $(DEPDIR)/pr20308d_test-pr20308_main.Tpo $(DEPDIR)/pr20308d_test-pr20308_main.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='pr20308_main.c' object='pr20308d_test-pr20308_main.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pr20308d_test_CFLAGS) $(CFLAGS) -c -o pr20308d_test-pr20308_main.o `test -f 'pr20308_main.c' || echo '$(srcdir)/'`pr20308_main.c
+
+pr20308d_test-pr20308_main.obj: pr20308_main.c
+@am__fastdepCC_TRUE@   $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pr20308d_test_CFLAGS) $(CFLAGS) -MT pr20308d_test-pr20308_main.obj -MD -MP -MF $(DEPDIR)/pr20308d_test-pr20308_main.Tpo -c -o pr20308d_test-pr20308_main.obj `if test -f 'pr20308_main.c'; then $(CYGPATH_W) 'pr20308_main.c'; else $(CYGPATH_W) '$(srcdir)/pr20308_main.c'; fi`
+@am__fastdepCC_TRUE@   $(am__mv) $(DEPDIR)/pr20308d_test-pr20308_main.Tpo $(DEPDIR)/pr20308d_test-pr20308_main.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='pr20308_main.c' object='pr20308d_test-pr20308_main.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pr20308d_test_CFLAGS) $(CFLAGS) -c -o pr20308d_test-pr20308_main.obj `if test -f 'pr20308_main.c'; then $(CYGPATH_W) 'pr20308_main.c'; else $(CYGPATH_W) '$(srcdir)/pr20308_main.c'; fi`
+
+pr20308d_test-pr20308_def.o: pr20308_def.c
+@am__fastdepCC_TRUE@   $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pr20308d_test_CFLAGS) $(CFLAGS) -MT pr20308d_test-pr20308_def.o -MD -MP -MF $(DEPDIR)/pr20308d_test-pr20308_def.Tpo -c -o pr20308d_test-pr20308_def.o `test -f 'pr20308_def.c' || echo '$(srcdir)/'`pr20308_def.c
+@am__fastdepCC_TRUE@   $(am__mv) $(DEPDIR)/pr20308d_test-pr20308_def.Tpo $(DEPDIR)/pr20308d_test-pr20308_def.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='pr20308_def.c' object='pr20308d_test-pr20308_def.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pr20308d_test_CFLAGS) $(CFLAGS) -c -o pr20308d_test-pr20308_def.o `test -f 'pr20308_def.c' || echo '$(srcdir)/'`pr20308_def.c
+
+pr20308d_test-pr20308_def.obj: pr20308_def.c
+@am__fastdepCC_TRUE@   $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pr20308d_test_CFLAGS) $(CFLAGS) -MT pr20308d_test-pr20308_def.obj -MD -MP -MF $(DEPDIR)/pr20308d_test-pr20308_def.Tpo -c -o pr20308d_test-pr20308_def.obj `if test -f 'pr20308_def.c'; then $(CYGPATH_W) 'pr20308_def.c'; else $(CYGPATH_W) '$(srcdir)/pr20308_def.c'; fi`
+@am__fastdepCC_TRUE@   $(am__mv) $(DEPDIR)/pr20308d_test-pr20308_def.Tpo $(DEPDIR)/pr20308d_test-pr20308_def.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='pr20308_def.c' object='pr20308d_test-pr20308_def.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pr20308d_test_CFLAGS) $(CFLAGS) -c -o pr20308d_test-pr20308_def.obj `if test -f 'pr20308_def.c'; then $(CYGPATH_W) 'pr20308_def.c'; else $(CYGPATH_W) '$(srcdir)/pr20308_def.c'; fi`
+
+pr20308e_test-pr20308_main.o: pr20308_main.c
+@am__fastdepCC_TRUE@   $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pr20308e_test_CFLAGS) $(CFLAGS) -MT pr20308e_test-pr20308_main.o -MD -MP -MF $(DEPDIR)/pr20308e_test-pr20308_main.Tpo -c -o pr20308e_test-pr20308_main.o `test -f 'pr20308_main.c' || echo '$(srcdir)/'`pr20308_main.c
+@am__fastdepCC_TRUE@   $(am__mv) $(DEPDIR)/pr20308e_test-pr20308_main.Tpo $(DEPDIR)/pr20308e_test-pr20308_main.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='pr20308_main.c' object='pr20308e_test-pr20308_main.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pr20308e_test_CFLAGS) $(CFLAGS) -c -o pr20308e_test-pr20308_main.o `test -f 'pr20308_main.c' || echo '$(srcdir)/'`pr20308_main.c
+
+pr20308e_test-pr20308_main.obj: pr20308_main.c
+@am__fastdepCC_TRUE@   $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pr20308e_test_CFLAGS) $(CFLAGS) -MT pr20308e_test-pr20308_main.obj -MD -MP -MF $(DEPDIR)/pr20308e_test-pr20308_main.Tpo -c -o pr20308e_test-pr20308_main.obj `if test -f 'pr20308_main.c'; then $(CYGPATH_W) 'pr20308_main.c'; else $(CYGPATH_W) '$(srcdir)/pr20308_main.c'; fi`
+@am__fastdepCC_TRUE@   $(am__mv) $(DEPDIR)/pr20308e_test-pr20308_main.Tpo $(DEPDIR)/pr20308e_test-pr20308_main.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='pr20308_main.c' object='pr20308e_test-pr20308_main.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pr20308e_test_CFLAGS) $(CFLAGS) -c -o pr20308e_test-pr20308_main.obj `if test -f 'pr20308_main.c'; then $(CYGPATH_W) 'pr20308_main.c'; else $(CYGPATH_W) '$(srcdir)/pr20308_main.c'; fi`
+
 .cc.o:
 @am__fastdepCXX_TRUE@  $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
 @am__fastdepCXX_TRUE@  $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
@@ -5079,6 +5296,16 @@ pr20216d_test.log: pr20216d_test$(EXEEXT)
        @p='pr20216d_test$(EXEEXT)'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post)
 pr20216e_test.log: pr20216e_test$(EXEEXT)
        @p='pr20216e_test$(EXEEXT)'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post)
+pr20308a_test.log: pr20308a_test$(EXEEXT)
+       @p='pr20308a_test$(EXEEXT)'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post)
+pr20308b_test.log: pr20308b_test$(EXEEXT)
+       @p='pr20308b_test$(EXEEXT)'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post)
+pr20308c_test.log: pr20308c_test$(EXEEXT)
+       @p='pr20308c_test$(EXEEXT)'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post)
+pr20308d_test.log: pr20308d_test$(EXEEXT)
+       @p='pr20308d_test$(EXEEXT)'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post)
+pr20308e_test.log: pr20308e_test$(EXEEXT)
+       @p='pr20308e_test$(EXEEXT)'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post)
 many_sections_test.log: many_sections_test$(EXEEXT)
        @p='many_sections_test$(EXEEXT)'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post)
 many_sections_r_test.log: many_sections_r_test$(EXEEXT)
@@ -5966,6 +6193,18 @@ uninstall-am:
 @DEFAULT_TARGET_I386_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@       $(TEST_OBJDUMP) -dw $< > $@
 @DEFAULT_TARGET_I386_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@i386_mov_to_lea8.stdout: i386_mov_to_lea8
 @DEFAULT_TARGET_I386_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@       $(TEST_OBJDUMP) -dw $< > $@
+
+@DEFAULT_TARGET_I386_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@pr20308a.so: pr20308_gd.o pr20308_ld.o gcctestdir/ld
+@DEFAULT_TARGET_I386_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@       $(LINK) -Bgcctestdir/ -shared pr20308_gd.o pr20308_ld.o
+
+@DEFAULT_TARGET_I386_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@pr20308b.so: pr20308_def.o gcctestdir/ld
+@DEFAULT_TARGET_I386_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@       $(LINK) -Bgcctestdir/ -shared pr20308_def.o
+
+@DEFAULT_TARGET_I386_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@pr20308_gd.o: pr20308_gd.S
+@DEFAULT_TARGET_I386_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@       $(COMPILE) -c -o $@ $<
+
+@DEFAULT_TARGET_I386_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@pr20308_ld.o: pr20308_ld.S
+@DEFAULT_TARGET_I386_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@       $(COMPILE) -c -o $@ $<
 @GCC_TRUE@@NATIVE_LINKER_TRUE@many_sections_define.h:
 @GCC_TRUE@@NATIVE_LINKER_TRUE@ (for i in `seq 1 70000`; do \
 @GCC_TRUE@@NATIVE_LINKER_TRUE@    echo "int var_$$i __attribute__((section(\"section_$$i\"))) = $$i;"; \
diff --git a/gold/testsuite/pr20308_def.c b/gold/testsuite/pr20308_def.c
new file mode 100644 (file)
index 0000000..62470a9
--- /dev/null
@@ -0,0 +1 @@
+__thread int gd = 1;
diff --git a/gold/testsuite/pr20308_gd.S b/gold/testsuite/pr20308_gd.S
new file mode 100644 (file)
index 0000000..3b16eab
--- /dev/null
@@ -0,0 +1,65 @@
+       .text
+       .p2align 4,,15
+       .globl  get_gd
+       .type   get_gd, @function
+get_gd:
+       pushl   %ebx
+       call    __x86.get_pc_thunk.bx
+       addl    $_GLOBAL_OFFSET_TABLE_, %ebx
+       subl    $8, %esp
+       leal    gd@tlsgd(,%ebx,1), %eax
+       call    ___tls_get_addr@PLT
+       addl    $8, %esp
+       popl    %ebx
+       ret
+       .size   get_gd, .-get_gd
+       .p2align 4,,15
+       .globl  set_gd
+       .type   set_gd, @function
+set_gd:
+       pushl   %ebx
+       call    __x86.get_pc_thunk.bx
+       addl    $_GLOBAL_OFFSET_TABLE_, %ebx
+       subl    $8, %esp
+       leal    gd@tlsgd(%ebx), %eax
+       call    ___tls_get_addr@PLT
+       nop
+       movl    16(%esp), %edx
+       movl    %edx, (%eax)
+       addl    $8, %esp
+       popl    %ebx
+       ret
+       .size   set_gd, .-set_gd
+       .text
+       .p2align 4,,15
+       .globl  test_gd
+       .type   test_gd, @function
+test_gd:
+       call    __x86.get_pc_thunk.cx
+       addl    $_GLOBAL_OFFSET_TABLE_, %ecx
+       subl    $12, %esp
+       leal    gd@tlsgd(%ecx), %eax
+       call    *___tls_get_addr@GOT(%ecx)
+       movl    16(%esp), %ecx
+       cmpl    %ecx, (%eax)
+       sete    %al
+       addl    $12, %esp
+       movzbl  %al, %eax
+       ret
+       .size   test_gd, .-test_gd
+       .section        .text.unlikely
+       .section        .text.__x86.get_pc_thunk.bx,"axG",@progbits,__x86.get_pc_thunk.bx,comdat
+       .globl  __x86.get_pc_thunk.bx
+       .hidden __x86.get_pc_thunk.bx
+       .type   __x86.get_pc_thunk.bx, @function
+__x86.get_pc_thunk.bx:
+       movl    (%esp), %ebx
+       ret
+       .section        .text.__x86.get_pc_thunk.cx,"axG",@progbits,__x86.get_pc_thunk.cx,comdat
+       .globl  __x86.get_pc_thunk.cx
+       .hidden __x86.get_pc_thunk.cx
+       .type   __x86.get_pc_thunk.cx, @function
+__x86.get_pc_thunk.cx:
+       movl    (%esp), %ecx
+       ret
+       .section        .note.GNU-stack,"",@progbits
diff --git a/gold/testsuite/pr20308_ld.S b/gold/testsuite/pr20308_ld.S
new file mode 100644 (file)
index 0000000..f1295cf
--- /dev/null
@@ -0,0 +1,71 @@
+       .text
+       .p2align 4,,15
+       .globl  get_ld
+       .type   get_ld, @function
+get_ld:
+       pushl   %ebx
+       call    __x86.get_pc_thunk.bx
+       addl    $_GLOBAL_OFFSET_TABLE_, %ebx
+       subl    $8, %esp
+       leal    ld@tlsldm(%ebx), %eax
+       call    ___tls_get_addr@PLT
+       leal    ld@dtpoff(%eax), %eax
+       addl    $8, %esp
+       popl    %ebx
+       ret
+       .size   get_ld, .-get_ld
+       .p2align 4,,15
+       .globl  set_ld
+       .type   set_ld, @function
+set_ld:
+       pushl   %ebx
+       call    __x86.get_pc_thunk.bx
+       addl    $_GLOBAL_OFFSET_TABLE_, %ebx
+       subl    $8, %esp
+       leal    ld@tlsldm(%ebx), %eax
+       call    ___tls_get_addr@PLT
+       movl    16(%esp), %edx
+       leal    ld@dtpoff(%eax), %eax
+       movl    %edx, (%eax)
+       addl    $8, %esp
+       popl    %ebx
+       ret
+       .size   set_ld, .-set_ld
+       .p2align 4,,15
+       .globl  test_ld
+       .type   test_ld, @function
+test_ld:
+       call    __x86.get_pc_thunk.cx
+       addl    $_GLOBAL_OFFSET_TABLE_, %ecx
+       subl    $12, %esp
+       leal    ld@tlsldm(%ecx), %eax
+       call    *___tls_get_addr@GOT(%ecx)
+       movl    16(%esp), %ecx
+       leal    ld@dtpoff(%eax), %eax
+       cmpl    %ecx, (%eax)
+       sete    %al
+       addl    $12, %esp
+       movzbl  %al, %eax
+       ret
+       .size   test_ld, .-test_ld
+       .section        .tbss,"awT",@nobits
+       .align 4
+       .type   ld, @object
+       .size   ld, 4
+ld:
+       .zero   4
+       .section        .text.__x86.get_pc_thunk.bx,"axG",@progbits,__x86.get_pc_thunk.bx,comdat
+       .globl  __x86.get_pc_thunk.bx
+       .hidden __x86.get_pc_thunk.bx
+       .type   __x86.get_pc_thunk.bx, @function
+__x86.get_pc_thunk.bx:
+       movl    (%esp), %ebx
+       ret
+       .section        .text.__x86.get_pc_thunk.cx,"axG",@progbits,__x86.get_pc_thunk.cx,comdat
+       .globl  __x86.get_pc_thunk.cx
+       .hidden __x86.get_pc_thunk.cx
+       .type   __x86.get_pc_thunk.cx, @function
+__x86.get_pc_thunk.cx:
+       movl    (%esp), %ecx
+       ret
+       .section        .note.GNU-stack,"",@progbits
diff --git a/gold/testsuite/pr20308_main.c b/gold/testsuite/pr20308_main.c
new file mode 100644 (file)
index 0000000..196babb
--- /dev/null
@@ -0,0 +1,29 @@
+#include <stdio.h>
+#include <stdlib.h>
+
+extern int * get_gd (void);
+extern void set_gd (int);
+extern int test_gd (int);
+extern int * get_ld (void);
+extern void set_ld (int);
+extern int test_ld (int);
+
+int
+main ()
+{
+  int *p;
+
+  p = get_gd ();
+  set_gd (3);
+  if (*p != 3 || !test_gd (3))
+    abort ();
+
+  p = get_ld ();
+  set_ld (4);
+  if (*p != 4 || !test_ld (4))
+    abort ();
+
+  printf ("PASS\n");
+
+  return 0;
+}