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

https://groups.google.com/forum/#!topic/x86-64-abi/de5_KnLHxtI

to call tls_get_addr via GOT:

call *__tls_get_addr@GOTPCREL(%rip)

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, one 0x66 prefix before call instruction is
removed 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 4 0x66 prefixes, instead of 3, before mov instruction in 64-bit
and generate a 5-byte nop, instead of 4-byte, before mov instruction in
32-bit.

PR gold/20216
* configure.ac (DEFAULT_TARGET_X86_64_OR_X32): New
AM_CONDITIONAL.
* configure: Regenerated.
* x86_64.cc (Target_x86_64<size>::Relocate::relocate): Allow
R_X86_64_GOTPCRELX relocation against __tls_get_addr.
(Target_x86_64<size>::Relocate::tls_gd_to_ie): Support indirect
call to __tls_get_addr.
(Target_x86_64<size>::Relocate::tls_gd_to_le): Likewise.
(Target_x86_64<size>::Relocate::tls_ld_to_le): Likewise.
* testsuite/Makefile.am (check_PROGRAMS): Add pr20216a_test,
pr20216b_test, pr20216c_test, pr20216d_test, pr20216e_test.
(pr20216a_test_SOURCES): New.
(pr20216a_test_DEPENDENCIES): Likewise.
(pr20216a_test_CFLAGS): Likewise.
(pr20216a_test_LDFLAGS): Likewise.
(pr20216a_test_LDADD): Likewise.
(pr20216b_test_SOURCES): Likewise.
(pr20216b_test_DEPENDENCIES): Likewise.
(pr20216b_test_CFLAGS): Likewise.
(pr20216b_test_LDFLAGS): Likewise.
(pr20216b_test_LDADD): Likewise.
(pr20216c_test_SOURCES): Likewise.
(pr20216c_test_DEPENDENCIES): Likewise.
(pr20216c_test_CFLAGS): Likewise.
(pr20216c_test_LDFLAGS): Likewise.
(pr20216c_test_LDADD): Likewise.
(pr20216d_test_SOURCES): Likewise.
(pr20216d_test_DEPENDENCIES): Likewise.
(pr20216d_test_CFLAGS): Likewise.
(pr20216d_test_LDFLAGS): Likewise.
(pr20216d_test_LDADD): Likewise.
(pr20216e_test_SOURCES): Likewise.
(pr20216e_test_DEPENDENCIES): Likewise.
(pr20216e_test_CFLAGS): Likewise.
(pr20216e_test_LDFLAGS): Likewise.
(pr20216e_test_LDADD): Likewise.
(pr20216a.so): Likewise.
(pr20216b.so): Likewise.
(pr20216_gd.o): Likewise.
(pr20216_ld.o): Likewise.
(MOSTLYCLEANFILES): Add pr20216a.so pr20216b.so.
* testsuite/Makefile.in: Regenerated.
* testsuite/pr20216_def.c: New file.
* testsuite/pr20216_gd.S: Likewise.
* testsuite/pr20216_ld.S: Likewise.
* testsuite/pr20216_main.c: Likewise.

gold/ChangeLog
gold/configure
gold/configure.ac
gold/testsuite/Makefile.am
gold/testsuite/Makefile.in
gold/testsuite/pr20216_def.c [new file with mode: 0644]
gold/testsuite/pr20216_gd.S [new file with mode: 0644]
gold/testsuite/pr20216_ld.S [new file with mode: 0644]
gold/testsuite/pr20216_main.c [new file with mode: 0644]
gold/x86_64.cc

index fddfa10070f00ae49d897762bbe35517a8641eaf..eb24d255c10a80afc2226116202a3c1c70c8ee27 100644 (file)
@@ -1,3 +1,53 @@
+2016-06-29  H.J. Lu  <hongjiu.lu@intel.com>
+
+       PR gold/20216
+       * configure.ac (DEFAULT_TARGET_X86_64_OR_X32): New
+       AM_CONDITIONAL.
+       * configure: Regenerated.
+       * x86_64.cc (Target_x86_64<size>::Relocate::relocate): Allow
+       R_X86_64_GOTPCRELX relocation against __tls_get_addr.
+       (Target_x86_64<size>::Relocate::tls_gd_to_ie): Support indirect
+       call to __tls_get_addr.
+       (Target_x86_64<size>::Relocate::tls_gd_to_le): Likewise.
+       (Target_x86_64<size>::Relocate::tls_ld_to_le): Likewise.
+       * testsuite/Makefile.am (check_PROGRAMS): Add pr20216a_test,
+       pr20216b_test, pr20216c_test, pr20216d_test, pr20216e_test.
+       (pr20216a_test_SOURCES): New.
+       (pr20216a_test_DEPENDENCIES): Likewise.
+       (pr20216a_test_CFLAGS): Likewise.
+       (pr20216a_test_LDFLAGS): Likewise.
+       (pr20216a_test_LDADD): Likewise.
+       (pr20216b_test_SOURCES): Likewise.
+       (pr20216b_test_DEPENDENCIES): Likewise.
+       (pr20216b_test_CFLAGS): Likewise.
+       (pr20216b_test_LDFLAGS): Likewise.
+       (pr20216b_test_LDADD): Likewise.
+       (pr20216c_test_SOURCES): Likewise.
+       (pr20216c_test_DEPENDENCIES): Likewise.
+       (pr20216c_test_CFLAGS): Likewise.
+       (pr20216c_test_LDFLAGS): Likewise.
+       (pr20216c_test_LDADD): Likewise.
+       (pr20216d_test_SOURCES): Likewise.
+       (pr20216d_test_DEPENDENCIES): Likewise.
+       (pr20216d_test_CFLAGS): Likewise.
+       (pr20216d_test_LDFLAGS): Likewise.
+       (pr20216d_test_LDADD): Likewise.
+       (pr20216e_test_SOURCES): Likewise.
+       (pr20216e_test_DEPENDENCIES): Likewise.
+       (pr20216e_test_CFLAGS): Likewise.
+       (pr20216e_test_LDFLAGS): Likewise.
+       (pr20216e_test_LDADD): Likewise.
+       (pr20216a.so): Likewise.
+       (pr20216b.so): Likewise.
+       (pr20216_gd.o): Likewise.
+       (pr20216_ld.o): Likewise.
+       (MOSTLYCLEANFILES): Add pr20216a.so pr20216b.so.
+       * testsuite/Makefile.in: Regenerated.
+       * testsuite/pr20216_def.c: New file.
+       * testsuite/pr20216_gd.S: Likewise.
+       * testsuite/pr20216_ld.S: Likewise.
+       * testsuite/pr20216_main.c: Likewise.
+
 2016-06-29  Alan Modra  <amodra@gmail.com>
 
        * script_test_12.t: Delete .plt, specify 64k page size.
index a40b2b542e1edc2556c2ccc12c36d1b07bce0f95..8240c28a91e8a0f65a9c8c747878f238091db048 100755 (executable)
@@ -690,6 +690,8 @@ DEFAULT_TARGET_MIPS_FALSE
 DEFAULT_TARGET_MIPS_TRUE
 DEFAULT_TARGET_TILEGX_FALSE
 DEFAULT_TARGET_TILEGX_TRUE
+DEFAULT_TARGET_X86_64_OR_X32_FALSE
+DEFAULT_TARGET_X86_64_OR_X32_TRUE
 DEFAULT_TARGET_X32_FALSE
 DEFAULT_TARGET_X32_TRUE
 DEFAULT_TARGET_X86_64_FALSE
@@ -3539,6 +3541,14 @@ else
   DEFAULT_TARGET_X32_FALSE=
 fi
 
+        if test "$target_x86_64" = "yes" -o "$target_x32" = "yes"; then
+  DEFAULT_TARGET_X86_64_OR_X32_TRUE=
+  DEFAULT_TARGET_X86_64_OR_X32_FALSE='#'
+else
+  DEFAULT_TARGET_X86_64_OR_X32_TRUE='#'
+  DEFAULT_TARGET_X86_64_OR_X32_FALSE=
+fi
+
         if test "$targ_obj" = "tilegx"; then
   DEFAULT_TARGET_TILEGX_TRUE=
   DEFAULT_TARGET_TILEGX_FALSE='#'
@@ -7837,6 +7847,10 @@ if test -z "${DEFAULT_TARGET_X32_TRUE}" && test -z "${DEFAULT_TARGET_X32_FALSE}"
   as_fn_error "conditional \"DEFAULT_TARGET_X32\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
+if test -z "${DEFAULT_TARGET_X86_64_OR_X32_TRUE}" && test -z "${DEFAULT_TARGET_X86_64_OR_X32_FALSE}"; then
+  as_fn_error "conditional \"DEFAULT_TARGET_X86_64_OR_X32\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
 if test -z "${DEFAULT_TARGET_TILEGX_TRUE}" && test -z "${DEFAULT_TARGET_TILEGX_FALSE}"; then
   as_fn_error "conditional \"DEFAULT_TARGET_TILEGX\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
index 90e2c2278295d4d84b44ef4d3968ee6eb7365bf3..de3b63038a2c0e60e1cf4fd20a5c366d7486f45f 100644 (file)
@@ -237,6 +237,8 @@ for targ in $target $canon_targets; do
        fi
        AM_CONDITIONAL(DEFAULT_TARGET_X86_64, test "$target_x86_64" = "yes")
        AM_CONDITIONAL(DEFAULT_TARGET_X32, test "$target_x32" = "yes")
+       AM_CONDITIONAL(DEFAULT_TARGET_X86_64_OR_X32,
+                      test "$target_x86_64" = "yes" -o "$target_x32" = "yes")
        AM_CONDITIONAL(DEFAULT_TARGET_TILEGX, test "$targ_obj" = "tilegx")
         AM_CONDITIONAL(DEFAULT_TARGET_MIPS, test "$targ_obj" = "mips")
        DEFAULT_TARGET=${targ_obj}
index 05ffd7e35b732775bdc4f17ec08c434814ebe155..3512ae70af3185fbd8291978ef5d712965c9dff0 100644 (file)
@@ -1147,6 +1147,59 @@ x32_overflow_pc32.err: x32_overflow_pc32.o gcctestdir/ld
 
 endif DEFAULT_TARGET_X86_64
 
+if DEFAULT_TARGET_X86_64_OR_X32
+
+check_PROGRAMS += pr20216a_test
+pr20216a_test_SOURCES = pr20216_main.c pr20216_def.c
+pr20216a_test_DEPENDENCIES = pr20216_gd.o pr20216_ld.o gcctestdir/ld gcctestdir/as
+pr20216a_test_CFLAGS = -Bgcctestdir/ -fPIE
+pr20216a_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,.
+pr20216a_test_LDADD = pr20216_gd.o pr20216_ld.o
+
+check_PROGRAMS += pr20216b_test
+pr20216b_test_SOURCES = pr20216_main.c pr20216_def.c
+pr20216b_test_DEPENDENCIES = pr20216_gd.o pr20216_ld.o gcctestdir/ld gcctestdir/as
+pr20216b_test_CFLAGS = -Bgcctestdir/ -fPIE
+pr20216b_test_LDFLAGS = -pie -Bgcctestdir/ -Wl,-R,.
+pr20216b_test_LDADD = pr20216_gd.o pr20216_ld.o
+
+check_PROGRAMS += pr20216c_test
+pr20216c_test_SOURCES = pr20216_main.c pr20216_def.c
+pr20216c_test_DEPENDENCIES = pr20216_gd.o pr20216_ld.o gcctestdir/ld gcctestdir/as
+pr20216c_test_CFLAGS = -Bgcctestdir/ -fPIE
+pr20216c_test_LDFLAGS = -static -Bgcctestdir/ -Wl,-R,.
+pr20216c_test_LDADD = pr20216_gd.o pr20216_ld.o
+
+check_PROGRAMS += pr20216d_test
+pr20216d_test_SOURCES = pr20216_main.c pr20216_def.c
+pr20216d_test_DEPENDENCIES = pr20216a.so gcctestdir/ld gcctestdir/as
+pr20216d_test_CFLAGS = -Bgcctestdir/ -fPIE
+pr20216d_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,.
+pr20216d_test_LDADD = pr20216a.so
+
+check_PROGRAMS += pr20216e_test
+pr20216e_test_SOURCES = pr20216_main.c
+pr20216e_test_DEPENDENCIES = pr20216_gd.o pr20216_ld.o pr20216b.so gcctestdir/ld gcctestdir/as
+pr20216e_test_CFLAGS = -Bgcctestdir/ -fPIE
+pr20216e_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,.
+pr20216e_test_LDADD = pr20216_gd.o pr20216_ld.o pr20216b.so
+
+MOSTLYCLEANFILES += pr20216a.so pr20216b.so
+
+pr20216a.so: pr20216_gd.o pr20216_ld.o gcctestdir/ld
+       $(LINK) -Bgcctestdir/ -shared pr20216_gd.o pr20216_ld.o
+
+pr20216b.so: pr20216_def.o gcctestdir/ld
+       $(LINK) -Bgcctestdir/ -shared pr20216_def.o
+
+pr20216_gd.o: pr20216_gd.S
+       $(COMPILE) -c -o $@ $<
+
+pr20216_ld.o: pr20216_ld.S
+       $(COMPILE) -c -o $@ $<
+
+endif DEFAULT_TARGET_X86_64_OR_X32
+
 if DEFAULT_TARGET_I386
 
 check_SCRIPTS += i386_mov_to_lea.sh
index c08ea3f85d6dd810f9966c60e317fcf8829e7551..6046fe939f7830cc1f623547c146bbe5c9f412b2 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_37) $(am__EXEEXT_38)
 @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
@@ -262,13 +262,19 @@ check_PROGRAMS = $(am__EXEEXT_1) $(am__EXEEXT_2) $(am__EXEEXT_3) \
 @DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@     x86_64_indirect_jump_to_direct1 \
 @DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@     x86_64_overflow_pc32.err \
 @DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@     x32_overflow_pc32.err
-@DEFAULT_TARGET_I386_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@am__append_32 = i386_mov_to_lea.sh
-@DEFAULT_TARGET_I386_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@am__append_33 = i386_mov_to_lea1.stdout  i386_mov_to_lea2.stdout \
+@DEFAULT_TARGET_X86_64_OR_X32_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@am__append_32 = pr20216a_test \
+@DEFAULT_TARGET_X86_64_OR_X32_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@      pr20216b_test \
+@DEFAULT_TARGET_X86_64_OR_X32_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@      pr20216c_test \
+@DEFAULT_TARGET_X86_64_OR_X32_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@      pr20216d_test \
+@DEFAULT_TARGET_X86_64_OR_X32_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@      pr20216e_test
+@DEFAULT_TARGET_X86_64_OR_X32_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@am__append_33 = pr20216a.so pr20216b.so
+@DEFAULT_TARGET_I386_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@am__append_34 = i386_mov_to_lea.sh
+@DEFAULT_TARGET_I386_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@am__append_35 = i386_mov_to_lea1.stdout  i386_mov_to_lea2.stdout \
 @DEFAULT_TARGET_I386_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@       i386_mov_to_lea3.stdout  i386_mov_to_lea4.stdout \
 @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_34 = i386_mov_to_lea1 i386_mov_to_lea2 i386_mov_to_lea3 \
+@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
 
@@ -291,7 +297,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_35 = many_sections_test \
+@GCC_TRUE@@NATIVE_LINKER_TRUE@am__append_37 = 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 \
@@ -319,9 +325,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_36 = many_sections_define.h \
+@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_37 = many_sections_define.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@ debug_msg.err \
 @GCC_TRUE@@NATIVE_LINKER_TRUE@ missing_key_func.err \
@@ -379,7 +385,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_38 = debug_msg.sh \
+@GCC_TRUE@@NATIVE_LINKER_TRUE@am__append_40 = 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 \
@@ -409,7 +415,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_39 = debug_msg.err \
+@GCC_TRUE@@NATIVE_LINKER_TRUE@am__append_41 = 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 \
@@ -457,7 +463,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_40 =  \
+@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@am__append_42 =  \
 @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 \
@@ -469,7 +475,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_41 =  \
+@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@am__append_43 =  \
 @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 \
@@ -485,7 +491,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_42 =  \
+@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@am__append_44 =  \
 @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 \
@@ -499,7 +505,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_43 =  \
+@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 \
@@ -514,19 +520,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_44 = plugin_test_tls
-@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@@TLS_TRUE@am__append_45 = plugin_test_tls.sh
-@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@@TLS_TRUE@am__append_46 = plugin_test_tls.err
-@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@@TLS_TRUE@am__append_47 = plugin_test_tls.err
-@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@am__append_48 = unused.c \
+@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_49 = plugin_test_tls.err
+@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@am__append_50 = 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_49 = plugin_final_layout.sh \
+@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@am__append_51 = 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_50 = plugin_final_layout.stdout \
+@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@am__append_52 = 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_51 = exclude_libs_test \
+@GCC_TRUE@@NATIVE_LINKER_TRUE@am__append_53 = exclude_libs_test \
 @GCC_TRUE@@NATIVE_LINKER_TRUE@ local_labels_test \
 @GCC_TRUE@@NATIVE_LINKER_TRUE@ discard_locals_test
 
@@ -544,7 +550,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_52 = exclude_libs_test.sh \
+@GCC_TRUE@@NATIVE_LINKER_TRUE@am__append_54 = 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 \
@@ -554,7 +560,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_53 = exclude_libs_test.syms \
+@GCC_TRUE@@NATIVE_LINKER_TRUE@am__append_55 = 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 \
@@ -564,7 +570,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_54 = exclude_libs_test.syms \
+@GCC_TRUE@@NATIVE_LINKER_TRUE@am__append_56 = 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 \
@@ -596,7 +602,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_55 = large
+@GCC_TRUE@@MCMODEL_MEDIUM_TRUE@@NATIVE_LINKER_TRUE@am__append_57 = large
 @GCC_FALSE@large_DEPENDENCIES =
 @MCMODEL_MEDIUM_FALSE@large_DEPENDENCIES =
 @NATIVE_LINKER_FALSE@large_DEPENDENCIES =
@@ -605,13 +611,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_56 = permission_test \
+@GCC_TRUE@@NATIVE_LINKER_TRUE@am__append_58 = 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_57 = ifuncmain1static \
+@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@        ifuncmain1picstatic
-@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@am__append_58 = ifuncmain1 \
+@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@am__append_60 = 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 \
@@ -619,14 +625,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_59 = ifuncmain2static \
+@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@        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_60 = ifuncmain2 \
+@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@am__append_62 = ifuncmain2 \
 @GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@     ifuncmain2pic \
 @GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@     ifuncmain3
 @GCC_FALSE@ifuncmain2_DEPENDENCIES =
@@ -635,32 +641,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_61 = ifuncmain4static \
+@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@        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_62 = ifuncmain4
+@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@am__append_64 = 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_63 = ifuncmain5static \
+@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@        ifuncmain5picstatic
-@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@am__append_64 = ifuncmain5 \
+@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@am__append_66 = 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_65 = ifuncmain7static \
+@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@        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_66 = ifuncmain7 \
+@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@am__append_68 = 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
@@ -677,7 +683,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_67 = start_lib_test \
+@GCC_TRUE@@NATIVE_LINKER_TRUE@am__append_69 = 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 \
@@ -690,17 +696,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_68 = gdb_index_test_1.sh \
+@GCC_TRUE@@HAVE_PUBNAMES_TRUE@@NATIVE_LINKER_TRUE@am__append_70 = 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_69 = gdb_index_test_1.stdout \
+@GCC_TRUE@@HAVE_PUBNAMES_TRUE@@NATIVE_LINKER_TRUE@am__append_71 = 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_70 = 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_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 \
@@ -722,18 +728,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_71 = ehdr_start_test_4.sh \
+@GCC_TRUE@@NATIVE_LINKER_TRUE@am__append_73 = ehdr_start_test_4.sh \
 @GCC_TRUE@@NATIVE_LINKER_TRUE@ defsym_test.sh
-@GCC_TRUE@@NATIVE_LINKER_TRUE@am__append_72 = ehdr_start_test_4.syms \
+@GCC_TRUE@@NATIVE_LINKER_TRUE@am__append_74 = ehdr_start_test_4.syms \
 @GCC_TRUE@@NATIVE_LINKER_TRUE@ defsym_test.syms
-@GCC_TRUE@@NATIVE_LINKER_TRUE@am__append_73 = ehdr_start_test_4 \
+@GCC_TRUE@@NATIVE_LINKER_TRUE@am__append_75 = 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_74 = incremental_test_2 \
+@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@     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 \
@@ -742,7 +748,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_75 = two_file_test_tmp_2.o \
+@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@     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 \
@@ -752,30 +758,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_76 = script_test_10.sh
-@NATIVE_OR_CROSS_LINKER_TRUE@am__append_77 = script_test_10.stdout
-@NATIVE_OR_CROSS_LINKER_TRUE@am__append_78 = script_test_10
+@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
 
 # These tests work with cross linkers only.
-@DEFAULT_TARGET_I386_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@am__append_79 = split_i386.sh
-@DEFAULT_TARGET_I386_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@am__append_80 = split_i386_1.stdout split_i386_2.stdout \
+@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@        split_i386_3.stdout split_i386_4.stdout split_i386_r.stdout
 
-@DEFAULT_TARGET_I386_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@am__append_81 = split_i386_1 split_i386_2 split_i386_3 \
+@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@        split_i386_4 split_i386_r
 
-@DEFAULT_TARGET_X86_64_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@am__append_82 = split_x86_64.sh
-@DEFAULT_TARGET_X86_64_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@am__append_83 = split_x86_64_1.stdout split_x86_64_2.stdout \
+@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@      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_84 = split_x86_64_1 split_x86_64_2 split_x86_64_3 \
+@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@      split_x86_64_4 split_x86_64_r
 
-@DEFAULT_TARGET_X32_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@am__append_85 = split_x32.sh
-@DEFAULT_TARGET_X32_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@am__append_86 = split_x32_1.stdout split_x32_2.stdout \
+@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@ split_x32_3.stdout split_x32_4.stdout split_x32_r.stdout
 
-@DEFAULT_TARGET_X32_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@am__append_87 = split_x32_1 split_x32_2 split_x32_3 \
+@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@ split_x32_4 split_x32_r
 
 
@@ -790,7 +796,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_88 = arm_abs_global.sh \
+@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@ 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 \
@@ -804,7 +810,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_89 = arm_abs_global.stdout \
+@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@ 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 \
@@ -849,7 +855,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_90 = arm_abs_global \
+@DEFAULT_TARGET_ARM_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@am__append_92 = 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 \
@@ -892,11 +898,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_91 = aarch64_reloc_none.sh
-@DEFAULT_TARGET_AARCH64_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@am__append_92 = aarch64_reloc_none.stdout
-@DEFAULT_TARGET_AARCH64_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@am__append_93 = aarch64_reloc_none
-@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@am__append_94 = split_s390.sh
-@DEFAULT_TARGET_S390_TRUE@@NATIVE_OR_CROSS_LINKER_TRUE@am__append_95 = split_s390_z1.stdout split_s390_z2.stdout split_s390_z3.stdout \
+@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_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 \
@@ -908,7 +914,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_96 = split_s390_z1 split_s390_z2 split_s390_z3 \
+@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@        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 \
@@ -917,10 +923,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_97 = *.dwo *.dwp
-@DEFAULT_TARGET_X86_64_TRUE@am__append_98 = dwp_test_1.sh \
+@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@   dwp_test_2.sh
-@DEFAULT_TARGET_X86_64_TRUE@am__append_99 = dwp_test_1.stdout \
+@DEFAULT_TARGET_X86_64_TRUE@am__append_101 = dwp_test_1.stdout \
 @DEFAULT_TARGET_X86_64_TRUE@   dwp_test_2.stdout
 subdir = testsuite
 DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am
@@ -1018,7 +1024,12 @@ libgoldtest_a_OBJECTS = $(am_libgoldtest_a_OBJECTS)
 @GCC_TRUE@@HAVE_STATIC_TRUE@@NATIVE_LINKER_TRUE@@STATIC_TLS_TRUE@@TLS_TRUE@am__EXEEXT_18 = tls_static_test$(EXEEXT) \
 @GCC_TRUE@@HAVE_STATIC_TRUE@@NATIVE_LINKER_TRUE@@STATIC_TLS_TRUE@@TLS_TRUE@    tls_static_pic_test$(EXEEXT)
 @FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_TRUE@am__EXEEXT_19 = tls_shared_nonpic_test$(EXEEXT)
-@GCC_TRUE@@NATIVE_LINKER_TRUE@am__EXEEXT_20 =  \
+@DEFAULT_TARGET_X86_64_OR_X32_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@am__EXEEXT_20 = pr20216a_test$(EXEEXT) \
+@DEFAULT_TARGET_X86_64_OR_X32_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@      pr20216b_test$(EXEEXT) \
+@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 =  \
 @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) \
@@ -1059,7 +1070,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_21 = plugin_test_1$(EXEEXT) \
+@GCC_TRUE@@NATIVE_LINKER_TRUE@@PLUGINS_TRUE@am__EXEEXT_22 = 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) \
@@ -1070,18 +1081,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_22 = plugin_test_tls$(EXEEXT)
-@GCC_TRUE@@NATIVE_LINKER_TRUE@am__EXEEXT_23 =  \
+@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@ 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_24 = large$(EXEEXT)
-@GCC_TRUE@@NATIVE_LINKER_TRUE@am__EXEEXT_25 =  \
+@GCC_TRUE@@MCMODEL_MEDIUM_TRUE@@NATIVE_LINKER_TRUE@am__EXEEXT_25 = large$(EXEEXT)
+@GCC_TRUE@@NATIVE_LINKER_TRUE@am__EXEEXT_26 =  \
 @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_26 = ifuncmain1static$(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@        ifuncmain1picstatic$(EXEEXT)
-@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@am__EXEEXT_27 =  \
+@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@am__EXEEXT_28 =  \
 @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) \
@@ -1090,37 +1101,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_28 = ifuncmain2static$(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@        ifuncmain2picstatic$(EXEEXT)
-@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@am__EXEEXT_29 =  \
+@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@am__EXEEXT_30 =  \
 @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_30 = ifuncmain4static$(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@        ifuncmain4picstatic$(EXEEXT)
-@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@am__EXEEXT_31 =  \
+@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@am__EXEEXT_32 =  \
 @GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@     ifuncmain4$(EXEEXT)
-@GCC_TRUE@@HAVE_STATIC_TRUE@@IFUNC_STATIC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@am__EXEEXT_32 = ifuncmain5static$(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@        ifuncmain5picstatic$(EXEEXT)
-@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@am__EXEEXT_33 =  \
+@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@am__EXEEXT_34 =  \
 @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_34 = ifuncmain7static$(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@        ifuncmain7picstatic$(EXEEXT)
-@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@am__EXEEXT_35 =  \
+@GCC_TRUE@@IFUNC_TRUE@@NATIVE_LINKER_TRUE@am__EXEEXT_36 =  \
 @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_36 = start_lib_test$(EXEEXT) \
+@GCC_TRUE@@NATIVE_LINKER_TRUE@am__EXEEXT_37 = 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_37 = incremental_test_2$(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@     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) \
@@ -1790,6 +1801,30 @@ plugin_test_tls_DEPENDENCIES = libgoldtest.a ../libgold.a \
        ../../libiberty/libiberty.a $(am__DEPENDENCIES_1) \
        $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
        $(am__DEPENDENCIES_1)
+@DEFAULT_TARGET_X86_64_OR_X32_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@am_pr20216a_test_OBJECTS = pr20216a_test-pr20216_main.$(OBJEXT) \
+@DEFAULT_TARGET_X86_64_OR_X32_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@      pr20216a_test-pr20216_def.$(OBJEXT)
+pr20216a_test_OBJECTS = $(am_pr20216a_test_OBJECTS)
+pr20216a_test_LINK = $(CCLD) $(pr20216a_test_CFLAGS) $(CFLAGS) \
+       $(pr20216a_test_LDFLAGS) $(LDFLAGS) -o $@
+@DEFAULT_TARGET_X86_64_OR_X32_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@am_pr20216b_test_OBJECTS = pr20216b_test-pr20216_main.$(OBJEXT) \
+@DEFAULT_TARGET_X86_64_OR_X32_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@      pr20216b_test-pr20216_def.$(OBJEXT)
+pr20216b_test_OBJECTS = $(am_pr20216b_test_OBJECTS)
+pr20216b_test_LINK = $(CCLD) $(pr20216b_test_CFLAGS) $(CFLAGS) \
+       $(pr20216b_test_LDFLAGS) $(LDFLAGS) -o $@
+@DEFAULT_TARGET_X86_64_OR_X32_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@am_pr20216c_test_OBJECTS = pr20216c_test-pr20216_main.$(OBJEXT) \
+@DEFAULT_TARGET_X86_64_OR_X32_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@      pr20216c_test-pr20216_def.$(OBJEXT)
+pr20216c_test_OBJECTS = $(am_pr20216c_test_OBJECTS)
+pr20216c_test_LINK = $(CCLD) $(pr20216c_test_CFLAGS) $(CFLAGS) \
+       $(pr20216c_test_LDFLAGS) $(LDFLAGS) -o $@
+@DEFAULT_TARGET_X86_64_OR_X32_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@am_pr20216d_test_OBJECTS = pr20216d_test-pr20216_main.$(OBJEXT) \
+@DEFAULT_TARGET_X86_64_OR_X32_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@      pr20216d_test-pr20216_def.$(OBJEXT)
+pr20216d_test_OBJECTS = $(am_pr20216d_test_OBJECTS)
+pr20216d_test_LINK = $(CCLD) $(pr20216d_test_CFLAGS) $(CFLAGS) \
+       $(pr20216d_test_LDFLAGS) $(LDFLAGS) -o $@
+@DEFAULT_TARGET_X86_64_OR_X32_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@am_pr20216e_test_OBJECTS = pr20216e_test-pr20216_main.$(OBJEXT)
+pr20216e_test_OBJECTS = $(am_pr20216e_test_OBJECTS)
+pr20216e_test_LINK = $(CCLD) $(pr20216e_test_CFLAGS) $(CFLAGS) \
+       $(pr20216e_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) \
@@ -2250,11 +2285,14 @@ SOURCES = $(libgoldtest_a_SOURCES) basic_pic_test.c basic_pie_test.c \
        plugin_test_3.c plugin_test_4.c plugin_test_5.c \
        plugin_test_6.c plugin_test_7.c plugin_test_8.c \
        plugin_test_start_lib.c plugin_test_tls.c \
-       $(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 \
+       $(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 \
        $(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) \
@@ -2624,31 +2662,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_34) $(am__append_37) $(am__append_43) \
-       $(am__append_47) $(am__append_48) $(am__append_54) \
-       $(am__append_70) $(am__append_73) $(am__append_75) \
-       $(am__append_78) $(am__append_81) $(am__append_84) \
-       $(am__append_87) $(am__append_90) $(am__append_93) \
-       $(am__append_96) $(am__append_97)
+       $(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)
 
 # 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_32) $(am__append_38) \
-       $(am__append_41) $(am__append_45) $(am__append_49) \
-       $(am__append_52) $(am__append_68) $(am__append_71) \
-       $(am__append_76) $(am__append_79) $(am__append_82) \
-       $(am__append_85) $(am__append_88) $(am__append_91) \
-       $(am__append_94) $(am__append_98)
+       $(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_33) $(am__append_39) \
-       $(am__append_42) $(am__append_46) $(am__append_50) \
-       $(am__append_53) $(am__append_69) $(am__append_72) \
-       $(am__append_77) $(am__append_80) $(am__append_83) \
-       $(am__append_86) $(am__append_89) $(am__append_92) \
-       $(am__append_95) $(am__append_99)
-BUILT_SOURCES = $(am__append_36)
+       $(am__append_30) $(am__append_35) $(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)
 TESTS = $(check_SCRIPTS) $(check_PROGRAMS)
 
 # ---------------------------------------------------------------------
@@ -2940,6 +2978,31 @@ LDADD = libgoldtest.a ../libgold.a ../../libiberty/libiberty.a $(LIBINTL) \
 @FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_TRUE@tls_shared_nonpic_test_DEPENDENCIES = gcctestdir/ld tls_test_shared_nonpic.so
 @FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_TRUE@tls_shared_nonpic_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,.
 @FN_PTRS_IN_SO_WITHOUT_PIC_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@@TLS_TRUE@tls_shared_nonpic_test_LDADD = tls_test_shared_nonpic.so -lpthread
+@DEFAULT_TARGET_X86_64_OR_X32_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@pr20216a_test_SOURCES = pr20216_main.c pr20216_def.c
+@DEFAULT_TARGET_X86_64_OR_X32_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@pr20216a_test_DEPENDENCIES = pr20216_gd.o pr20216_ld.o gcctestdir/ld gcctestdir/as
+@DEFAULT_TARGET_X86_64_OR_X32_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@pr20216a_test_CFLAGS = -Bgcctestdir/ -fPIE
+@DEFAULT_TARGET_X86_64_OR_X32_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@pr20216a_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,.
+@DEFAULT_TARGET_X86_64_OR_X32_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@pr20216a_test_LDADD = pr20216_gd.o pr20216_ld.o
+@DEFAULT_TARGET_X86_64_OR_X32_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@pr20216b_test_SOURCES = pr20216_main.c pr20216_def.c
+@DEFAULT_TARGET_X86_64_OR_X32_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@pr20216b_test_DEPENDENCIES = pr20216_gd.o pr20216_ld.o gcctestdir/ld gcctestdir/as
+@DEFAULT_TARGET_X86_64_OR_X32_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@pr20216b_test_CFLAGS = -Bgcctestdir/ -fPIE
+@DEFAULT_TARGET_X86_64_OR_X32_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@pr20216b_test_LDFLAGS = -pie -Bgcctestdir/ -Wl,-R,.
+@DEFAULT_TARGET_X86_64_OR_X32_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@pr20216b_test_LDADD = pr20216_gd.o pr20216_ld.o
+@DEFAULT_TARGET_X86_64_OR_X32_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@pr20216c_test_SOURCES = pr20216_main.c pr20216_def.c
+@DEFAULT_TARGET_X86_64_OR_X32_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@pr20216c_test_DEPENDENCIES = pr20216_gd.o pr20216_ld.o gcctestdir/ld gcctestdir/as
+@DEFAULT_TARGET_X86_64_OR_X32_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@pr20216c_test_CFLAGS = -Bgcctestdir/ -fPIE
+@DEFAULT_TARGET_X86_64_OR_X32_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@pr20216c_test_LDFLAGS = -static -Bgcctestdir/ -Wl,-R,.
+@DEFAULT_TARGET_X86_64_OR_X32_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@pr20216c_test_LDADD = pr20216_gd.o pr20216_ld.o
+@DEFAULT_TARGET_X86_64_OR_X32_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@pr20216d_test_SOURCES = pr20216_main.c pr20216_def.c
+@DEFAULT_TARGET_X86_64_OR_X32_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@pr20216d_test_DEPENDENCIES = pr20216a.so gcctestdir/ld gcctestdir/as
+@DEFAULT_TARGET_X86_64_OR_X32_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@pr20216d_test_CFLAGS = -Bgcctestdir/ -fPIE
+@DEFAULT_TARGET_X86_64_OR_X32_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@pr20216d_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,.
+@DEFAULT_TARGET_X86_64_OR_X32_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@pr20216d_test_LDADD = pr20216a.so
+@DEFAULT_TARGET_X86_64_OR_X32_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@pr20216e_test_SOURCES = pr20216_main.c
+@DEFAULT_TARGET_X86_64_OR_X32_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@pr20216e_test_DEPENDENCIES = pr20216_gd.o pr20216_ld.o pr20216b.so gcctestdir/ld gcctestdir/as
+@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
 @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
@@ -3828,6 +3891,21 @@ pie_copyrelocs_test$(EXEEXT): $(pie_copyrelocs_test_OBJECTS) $(pie_copyrelocs_te
 @TLS_FALSE@plugin_test_tls$(EXEEXT): $(plugin_test_tls_OBJECTS) $(plugin_test_tls_DEPENDENCIES) $(EXTRA_plugin_test_tls_DEPENDENCIES) 
 @TLS_FALSE@    @rm -f plugin_test_tls$(EXEEXT)
 @TLS_FALSE@    $(LINK) $(plugin_test_tls_OBJECTS) $(plugin_test_tls_LDADD) $(LIBS)
+pr20216a_test$(EXEEXT): $(pr20216a_test_OBJECTS) $(pr20216a_test_DEPENDENCIES) $(EXTRA_pr20216a_test_DEPENDENCIES) 
+       @rm -f pr20216a_test$(EXEEXT)
+       $(pr20216a_test_LINK) $(pr20216a_test_OBJECTS) $(pr20216a_test_LDADD) $(LIBS)
+pr20216b_test$(EXEEXT): $(pr20216b_test_OBJECTS) $(pr20216b_test_DEPENDENCIES) $(EXTRA_pr20216b_test_DEPENDENCIES) 
+       @rm -f pr20216b_test$(EXEEXT)
+       $(pr20216b_test_LINK) $(pr20216b_test_OBJECTS) $(pr20216b_test_LDADD) $(LIBS)
+pr20216c_test$(EXEEXT): $(pr20216c_test_OBJECTS) $(pr20216c_test_DEPENDENCIES) $(EXTRA_pr20216c_test_DEPENDENCIES) 
+       @rm -f pr20216c_test$(EXEEXT)
+       $(pr20216c_test_LINK) $(pr20216c_test_OBJECTS) $(pr20216c_test_LDADD) $(LIBS)
+pr20216d_test$(EXEEXT): $(pr20216d_test_OBJECTS) $(pr20216d_test_DEPENDENCIES) $(EXTRA_pr20216d_test_DEPENDENCIES) 
+       @rm -f pr20216d_test$(EXEEXT)
+       $(pr20216d_test_LINK) $(pr20216d_test_OBJECTS) $(pr20216d_test_LDADD) $(LIBS)
+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)
 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)
@@ -4168,6 +4246,15 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/plugin_test_8.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/plugin_test_start_lib.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/plugin_test_tls.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pr20216a_test-pr20216_def.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pr20216a_test-pr20216_main.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pr20216b_test-pr20216_def.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pr20216b_test-pr20216_main.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pr20216c_test-pr20216_def.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pr20216c_test-pr20216_main.Po@am__quote@
+@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)/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@
@@ -4238,6 +4325,132 @@ large-large.obj: large.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(large_CFLAGS) $(CFLAGS) -c -o large-large.obj `if test -f 'large.c'; then $(CYGPATH_W) 'large.c'; else $(CYGPATH_W) '$(srcdir)/large.c'; fi`
 
+pr20216a_test-pr20216_main.o: pr20216_main.c
+@am__fastdepCC_TRUE@   $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pr20216a_test_CFLAGS) $(CFLAGS) -MT pr20216a_test-pr20216_main.o -MD -MP -MF $(DEPDIR)/pr20216a_test-pr20216_main.Tpo -c -o pr20216a_test-pr20216_main.o `test -f 'pr20216_main.c' || echo '$(srcdir)/'`pr20216_main.c
+@am__fastdepCC_TRUE@   $(am__mv) $(DEPDIR)/pr20216a_test-pr20216_main.Tpo $(DEPDIR)/pr20216a_test-pr20216_main.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='pr20216_main.c' object='pr20216a_test-pr20216_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) $(pr20216a_test_CFLAGS) $(CFLAGS) -c -o pr20216a_test-pr20216_main.o `test -f 'pr20216_main.c' || echo '$(srcdir)/'`pr20216_main.c
+
+pr20216a_test-pr20216_main.obj: pr20216_main.c
+@am__fastdepCC_TRUE@   $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pr20216a_test_CFLAGS) $(CFLAGS) -MT pr20216a_test-pr20216_main.obj -MD -MP -MF $(DEPDIR)/pr20216a_test-pr20216_main.Tpo -c -o pr20216a_test-pr20216_main.obj `if test -f 'pr20216_main.c'; then $(CYGPATH_W) 'pr20216_main.c'; else $(CYGPATH_W) '$(srcdir)/pr20216_main.c'; fi`
+@am__fastdepCC_TRUE@   $(am__mv) $(DEPDIR)/pr20216a_test-pr20216_main.Tpo $(DEPDIR)/pr20216a_test-pr20216_main.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='pr20216_main.c' object='pr20216a_test-pr20216_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) $(pr20216a_test_CFLAGS) $(CFLAGS) -c -o pr20216a_test-pr20216_main.obj `if test -f 'pr20216_main.c'; then $(CYGPATH_W) 'pr20216_main.c'; else $(CYGPATH_W) '$(srcdir)/pr20216_main.c'; fi`
+
+pr20216a_test-pr20216_def.o: pr20216_def.c
+@am__fastdepCC_TRUE@   $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pr20216a_test_CFLAGS) $(CFLAGS) -MT pr20216a_test-pr20216_def.o -MD -MP -MF $(DEPDIR)/pr20216a_test-pr20216_def.Tpo -c -o pr20216a_test-pr20216_def.o `test -f 'pr20216_def.c' || echo '$(srcdir)/'`pr20216_def.c
+@am__fastdepCC_TRUE@   $(am__mv) $(DEPDIR)/pr20216a_test-pr20216_def.Tpo $(DEPDIR)/pr20216a_test-pr20216_def.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='pr20216_def.c' object='pr20216a_test-pr20216_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) $(pr20216a_test_CFLAGS) $(CFLAGS) -c -o pr20216a_test-pr20216_def.o `test -f 'pr20216_def.c' || echo '$(srcdir)/'`pr20216_def.c
+
+pr20216a_test-pr20216_def.obj: pr20216_def.c
+@am__fastdepCC_TRUE@   $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pr20216a_test_CFLAGS) $(CFLAGS) -MT pr20216a_test-pr20216_def.obj -MD -MP -MF $(DEPDIR)/pr20216a_test-pr20216_def.Tpo -c -o pr20216a_test-pr20216_def.obj `if test -f 'pr20216_def.c'; then $(CYGPATH_W) 'pr20216_def.c'; else $(CYGPATH_W) '$(srcdir)/pr20216_def.c'; fi`
+@am__fastdepCC_TRUE@   $(am__mv) $(DEPDIR)/pr20216a_test-pr20216_def.Tpo $(DEPDIR)/pr20216a_test-pr20216_def.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='pr20216_def.c' object='pr20216a_test-pr20216_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) $(pr20216a_test_CFLAGS) $(CFLAGS) -c -o pr20216a_test-pr20216_def.obj `if test -f 'pr20216_def.c'; then $(CYGPATH_W) 'pr20216_def.c'; else $(CYGPATH_W) '$(srcdir)/pr20216_def.c'; fi`
+
+pr20216b_test-pr20216_main.o: pr20216_main.c
+@am__fastdepCC_TRUE@   $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pr20216b_test_CFLAGS) $(CFLAGS) -MT pr20216b_test-pr20216_main.o -MD -MP -MF $(DEPDIR)/pr20216b_test-pr20216_main.Tpo -c -o pr20216b_test-pr20216_main.o `test -f 'pr20216_main.c' || echo '$(srcdir)/'`pr20216_main.c
+@am__fastdepCC_TRUE@   $(am__mv) $(DEPDIR)/pr20216b_test-pr20216_main.Tpo $(DEPDIR)/pr20216b_test-pr20216_main.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='pr20216_main.c' object='pr20216b_test-pr20216_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) $(pr20216b_test_CFLAGS) $(CFLAGS) -c -o pr20216b_test-pr20216_main.o `test -f 'pr20216_main.c' || echo '$(srcdir)/'`pr20216_main.c
+
+pr20216b_test-pr20216_main.obj: pr20216_main.c
+@am__fastdepCC_TRUE@   $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pr20216b_test_CFLAGS) $(CFLAGS) -MT pr20216b_test-pr20216_main.obj -MD -MP -MF $(DEPDIR)/pr20216b_test-pr20216_main.Tpo -c -o pr20216b_test-pr20216_main.obj `if test -f 'pr20216_main.c'; then $(CYGPATH_W) 'pr20216_main.c'; else $(CYGPATH_W) '$(srcdir)/pr20216_main.c'; fi`
+@am__fastdepCC_TRUE@   $(am__mv) $(DEPDIR)/pr20216b_test-pr20216_main.Tpo $(DEPDIR)/pr20216b_test-pr20216_main.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='pr20216_main.c' object='pr20216b_test-pr20216_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) $(pr20216b_test_CFLAGS) $(CFLAGS) -c -o pr20216b_test-pr20216_main.obj `if test -f 'pr20216_main.c'; then $(CYGPATH_W) 'pr20216_main.c'; else $(CYGPATH_W) '$(srcdir)/pr20216_main.c'; fi`
+
+pr20216b_test-pr20216_def.o: pr20216_def.c
+@am__fastdepCC_TRUE@   $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pr20216b_test_CFLAGS) $(CFLAGS) -MT pr20216b_test-pr20216_def.o -MD -MP -MF $(DEPDIR)/pr20216b_test-pr20216_def.Tpo -c -o pr20216b_test-pr20216_def.o `test -f 'pr20216_def.c' || echo '$(srcdir)/'`pr20216_def.c
+@am__fastdepCC_TRUE@   $(am__mv) $(DEPDIR)/pr20216b_test-pr20216_def.Tpo $(DEPDIR)/pr20216b_test-pr20216_def.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='pr20216_def.c' object='pr20216b_test-pr20216_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) $(pr20216b_test_CFLAGS) $(CFLAGS) -c -o pr20216b_test-pr20216_def.o `test -f 'pr20216_def.c' || echo '$(srcdir)/'`pr20216_def.c
+
+pr20216b_test-pr20216_def.obj: pr20216_def.c
+@am__fastdepCC_TRUE@   $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pr20216b_test_CFLAGS) $(CFLAGS) -MT pr20216b_test-pr20216_def.obj -MD -MP -MF $(DEPDIR)/pr20216b_test-pr20216_def.Tpo -c -o pr20216b_test-pr20216_def.obj `if test -f 'pr20216_def.c'; then $(CYGPATH_W) 'pr20216_def.c'; else $(CYGPATH_W) '$(srcdir)/pr20216_def.c'; fi`
+@am__fastdepCC_TRUE@   $(am__mv) $(DEPDIR)/pr20216b_test-pr20216_def.Tpo $(DEPDIR)/pr20216b_test-pr20216_def.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='pr20216_def.c' object='pr20216b_test-pr20216_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) $(pr20216b_test_CFLAGS) $(CFLAGS) -c -o pr20216b_test-pr20216_def.obj `if test -f 'pr20216_def.c'; then $(CYGPATH_W) 'pr20216_def.c'; else $(CYGPATH_W) '$(srcdir)/pr20216_def.c'; fi`
+
+pr20216c_test-pr20216_main.o: pr20216_main.c
+@am__fastdepCC_TRUE@   $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pr20216c_test_CFLAGS) $(CFLAGS) -MT pr20216c_test-pr20216_main.o -MD -MP -MF $(DEPDIR)/pr20216c_test-pr20216_main.Tpo -c -o pr20216c_test-pr20216_main.o `test -f 'pr20216_main.c' || echo '$(srcdir)/'`pr20216_main.c
+@am__fastdepCC_TRUE@   $(am__mv) $(DEPDIR)/pr20216c_test-pr20216_main.Tpo $(DEPDIR)/pr20216c_test-pr20216_main.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='pr20216_main.c' object='pr20216c_test-pr20216_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) $(pr20216c_test_CFLAGS) $(CFLAGS) -c -o pr20216c_test-pr20216_main.o `test -f 'pr20216_main.c' || echo '$(srcdir)/'`pr20216_main.c
+
+pr20216c_test-pr20216_main.obj: pr20216_main.c
+@am__fastdepCC_TRUE@   $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pr20216c_test_CFLAGS) $(CFLAGS) -MT pr20216c_test-pr20216_main.obj -MD -MP -MF $(DEPDIR)/pr20216c_test-pr20216_main.Tpo -c -o pr20216c_test-pr20216_main.obj `if test -f 'pr20216_main.c'; then $(CYGPATH_W) 'pr20216_main.c'; else $(CYGPATH_W) '$(srcdir)/pr20216_main.c'; fi`
+@am__fastdepCC_TRUE@   $(am__mv) $(DEPDIR)/pr20216c_test-pr20216_main.Tpo $(DEPDIR)/pr20216c_test-pr20216_main.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='pr20216_main.c' object='pr20216c_test-pr20216_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) $(pr20216c_test_CFLAGS) $(CFLAGS) -c -o pr20216c_test-pr20216_main.obj `if test -f 'pr20216_main.c'; then $(CYGPATH_W) 'pr20216_main.c'; else $(CYGPATH_W) '$(srcdir)/pr20216_main.c'; fi`
+
+pr20216c_test-pr20216_def.o: pr20216_def.c
+@am__fastdepCC_TRUE@   $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pr20216c_test_CFLAGS) $(CFLAGS) -MT pr20216c_test-pr20216_def.o -MD -MP -MF $(DEPDIR)/pr20216c_test-pr20216_def.Tpo -c -o pr20216c_test-pr20216_def.o `test -f 'pr20216_def.c' || echo '$(srcdir)/'`pr20216_def.c
+@am__fastdepCC_TRUE@   $(am__mv) $(DEPDIR)/pr20216c_test-pr20216_def.Tpo $(DEPDIR)/pr20216c_test-pr20216_def.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='pr20216_def.c' object='pr20216c_test-pr20216_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) $(pr20216c_test_CFLAGS) $(CFLAGS) -c -o pr20216c_test-pr20216_def.o `test -f 'pr20216_def.c' || echo '$(srcdir)/'`pr20216_def.c
+
+pr20216c_test-pr20216_def.obj: pr20216_def.c
+@am__fastdepCC_TRUE@   $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pr20216c_test_CFLAGS) $(CFLAGS) -MT pr20216c_test-pr20216_def.obj -MD -MP -MF $(DEPDIR)/pr20216c_test-pr20216_def.Tpo -c -o pr20216c_test-pr20216_def.obj `if test -f 'pr20216_def.c'; then $(CYGPATH_W) 'pr20216_def.c'; else $(CYGPATH_W) '$(srcdir)/pr20216_def.c'; fi`
+@am__fastdepCC_TRUE@   $(am__mv) $(DEPDIR)/pr20216c_test-pr20216_def.Tpo $(DEPDIR)/pr20216c_test-pr20216_def.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='pr20216_def.c' object='pr20216c_test-pr20216_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) $(pr20216c_test_CFLAGS) $(CFLAGS) -c -o pr20216c_test-pr20216_def.obj `if test -f 'pr20216_def.c'; then $(CYGPATH_W) 'pr20216_def.c'; else $(CYGPATH_W) '$(srcdir)/pr20216_def.c'; fi`
+
+pr20216d_test-pr20216_main.o: pr20216_main.c
+@am__fastdepCC_TRUE@   $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pr20216d_test_CFLAGS) $(CFLAGS) -MT pr20216d_test-pr20216_main.o -MD -MP -MF $(DEPDIR)/pr20216d_test-pr20216_main.Tpo -c -o pr20216d_test-pr20216_main.o `test -f 'pr20216_main.c' || echo '$(srcdir)/'`pr20216_main.c
+@am__fastdepCC_TRUE@   $(am__mv) $(DEPDIR)/pr20216d_test-pr20216_main.Tpo $(DEPDIR)/pr20216d_test-pr20216_main.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='pr20216_main.c' object='pr20216d_test-pr20216_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) $(pr20216d_test_CFLAGS) $(CFLAGS) -c -o pr20216d_test-pr20216_main.o `test -f 'pr20216_main.c' || echo '$(srcdir)/'`pr20216_main.c
+
+pr20216d_test-pr20216_main.obj: pr20216_main.c
+@am__fastdepCC_TRUE@   $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pr20216d_test_CFLAGS) $(CFLAGS) -MT pr20216d_test-pr20216_main.obj -MD -MP -MF $(DEPDIR)/pr20216d_test-pr20216_main.Tpo -c -o pr20216d_test-pr20216_main.obj `if test -f 'pr20216_main.c'; then $(CYGPATH_W) 'pr20216_main.c'; else $(CYGPATH_W) '$(srcdir)/pr20216_main.c'; fi`
+@am__fastdepCC_TRUE@   $(am__mv) $(DEPDIR)/pr20216d_test-pr20216_main.Tpo $(DEPDIR)/pr20216d_test-pr20216_main.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='pr20216_main.c' object='pr20216d_test-pr20216_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) $(pr20216d_test_CFLAGS) $(CFLAGS) -c -o pr20216d_test-pr20216_main.obj `if test -f 'pr20216_main.c'; then $(CYGPATH_W) 'pr20216_main.c'; else $(CYGPATH_W) '$(srcdir)/pr20216_main.c'; fi`
+
+pr20216d_test-pr20216_def.o: pr20216_def.c
+@am__fastdepCC_TRUE@   $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pr20216d_test_CFLAGS) $(CFLAGS) -MT pr20216d_test-pr20216_def.o -MD -MP -MF $(DEPDIR)/pr20216d_test-pr20216_def.Tpo -c -o pr20216d_test-pr20216_def.o `test -f 'pr20216_def.c' || echo '$(srcdir)/'`pr20216_def.c
+@am__fastdepCC_TRUE@   $(am__mv) $(DEPDIR)/pr20216d_test-pr20216_def.Tpo $(DEPDIR)/pr20216d_test-pr20216_def.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='pr20216_def.c' object='pr20216d_test-pr20216_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) $(pr20216d_test_CFLAGS) $(CFLAGS) -c -o pr20216d_test-pr20216_def.o `test -f 'pr20216_def.c' || echo '$(srcdir)/'`pr20216_def.c
+
+pr20216d_test-pr20216_def.obj: pr20216_def.c
+@am__fastdepCC_TRUE@   $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pr20216d_test_CFLAGS) $(CFLAGS) -MT pr20216d_test-pr20216_def.obj -MD -MP -MF $(DEPDIR)/pr20216d_test-pr20216_def.Tpo -c -o pr20216d_test-pr20216_def.obj `if test -f 'pr20216_def.c'; then $(CYGPATH_W) 'pr20216_def.c'; else $(CYGPATH_W) '$(srcdir)/pr20216_def.c'; fi`
+@am__fastdepCC_TRUE@   $(am__mv) $(DEPDIR)/pr20216d_test-pr20216_def.Tpo $(DEPDIR)/pr20216d_test-pr20216_def.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='pr20216_def.c' object='pr20216d_test-pr20216_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) $(pr20216d_test_CFLAGS) $(CFLAGS) -c -o pr20216d_test-pr20216_def.obj `if test -f 'pr20216_def.c'; then $(CYGPATH_W) 'pr20216_def.c'; else $(CYGPATH_W) '$(srcdir)/pr20216_def.c'; fi`
+
+pr20216e_test-pr20216_main.o: pr20216_main.c
+@am__fastdepCC_TRUE@   $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pr20216e_test_CFLAGS) $(CFLAGS) -MT pr20216e_test-pr20216_main.o -MD -MP -MF $(DEPDIR)/pr20216e_test-pr20216_main.Tpo -c -o pr20216e_test-pr20216_main.o `test -f 'pr20216_main.c' || echo '$(srcdir)/'`pr20216_main.c
+@am__fastdepCC_TRUE@   $(am__mv) $(DEPDIR)/pr20216e_test-pr20216_main.Tpo $(DEPDIR)/pr20216e_test-pr20216_main.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='pr20216_main.c' object='pr20216e_test-pr20216_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) $(pr20216e_test_CFLAGS) $(CFLAGS) -c -o pr20216e_test-pr20216_main.o `test -f 'pr20216_main.c' || echo '$(srcdir)/'`pr20216_main.c
+
+pr20216e_test-pr20216_main.obj: pr20216_main.c
+@am__fastdepCC_TRUE@   $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pr20216e_test_CFLAGS) $(CFLAGS) -MT pr20216e_test-pr20216_main.obj -MD -MP -MF $(DEPDIR)/pr20216e_test-pr20216_main.Tpo -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`
+@am__fastdepCC_TRUE@   $(am__mv) $(DEPDIR)/pr20216e_test-pr20216_main.Tpo $(DEPDIR)/pr20216e_test-pr20216_main.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='pr20216_main.c' object='pr20216e_test-pr20216_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) $(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`
+
 .cc.o:
 @am__fastdepCXX_TRUE@  $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
 @am__fastdepCXX_TRUE@  $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
@@ -4856,6 +5069,16 @@ tls_static_pic_test.log: tls_static_pic_test$(EXEEXT)
        @p='tls_static_pic_test$(EXEEXT)'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post)
 tls_shared_nonpic_test.log: tls_shared_nonpic_test$(EXEEXT)
        @p='tls_shared_nonpic_test$(EXEEXT)'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post)
+pr20216a_test.log: pr20216a_test$(EXEEXT)
+       @p='pr20216a_test$(EXEEXT)'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post)
+pr20216b_test.log: pr20216b_test$(EXEEXT)
+       @p='pr20216b_test$(EXEEXT)'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post)
+pr20216c_test.log: pr20216c_test$(EXEEXT)
+       @p='pr20216c_test$(EXEEXT)'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post)
+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)
 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)
@@ -5689,6 +5912,18 @@ uninstall-am:
 @DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@       exit 1; \
 @DEFAULT_TARGET_X86_64_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@     fi
 
+@DEFAULT_TARGET_X86_64_OR_X32_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@pr20216a.so: pr20216_gd.o pr20216_ld.o gcctestdir/ld
+@DEFAULT_TARGET_X86_64_OR_X32_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@      $(LINK) -Bgcctestdir/ -shared pr20216_gd.o pr20216_ld.o
+
+@DEFAULT_TARGET_X86_64_OR_X32_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@pr20216b.so: pr20216_def.o gcctestdir/ld
+@DEFAULT_TARGET_X86_64_OR_X32_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@      $(LINK) -Bgcctestdir/ -shared pr20216_def.o
+
+@DEFAULT_TARGET_X86_64_OR_X32_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@pr20216_gd.o: pr20216_gd.S
+@DEFAULT_TARGET_X86_64_OR_X32_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@      $(COMPILE) -c -o $@ $<
+
+@DEFAULT_TARGET_X86_64_OR_X32_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@pr20216_ld.o: pr20216_ld.S
+@DEFAULT_TARGET_X86_64_OR_X32_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@      $(COMPILE) -c -o $@ $<
+
 @DEFAULT_TARGET_I386_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@i386_mov_to_lea1.o: i386_mov_to_lea1.s
 @DEFAULT_TARGET_I386_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@       $(TEST_AS) --32 -o $@ $<
 @DEFAULT_TARGET_I386_TRUE@@GCC_TRUE@@NATIVE_LINKER_TRUE@i386_mov_to_lea2.o: i386_mov_to_lea2.s
diff --git a/gold/testsuite/pr20216_def.c b/gold/testsuite/pr20216_def.c
new file mode 100644 (file)
index 0000000..62470a9
--- /dev/null
@@ -0,0 +1 @@
+__thread int gd = 1;
diff --git a/gold/testsuite/pr20216_gd.S b/gold/testsuite/pr20216_gd.S
new file mode 100644 (file)
index 0000000..cf56675
--- /dev/null
@@ -0,0 +1,55 @@
+       .text
+       .p2align 4,,15
+       .globl  get_gd
+       .type   get_gd, @function
+get_gd:
+       subq    $8, %rsp
+#ifdef __LP64__
+       .byte   0x66
+#endif
+       leaq    gd@tlsgd(%rip), %rdi
+       .byte   0x66
+       rex64
+       call    *__tls_get_addr@GOTPCREL(%rip)
+       addq    $8, %rsp
+       ret
+       .size   get_gd, .-get_gd
+       .text
+       .p2align 4,,15
+       .globl  set_gd
+       .type   set_gd, @function
+set_gd:
+       pushq   %rbx
+       movl    %edi, %ebx
+#ifdef __LP64__
+       .byte   0x66
+#endif
+       leaq    gd@tlsgd(%rip), %rdi
+       .value  0x6666
+       rex64
+       call    __tls_get_addr@PLT
+       movl    %ebx, (%rax)
+       popq    %rbx
+       ret
+       .size   set_gd, .-set_gd
+       .text
+       .p2align 4,,15
+       .globl  test_gd
+       .type   test_gd, @function
+test_gd:
+       pushq   %rbx
+       movl    %edi, %ebx
+#ifdef __LP64__
+       .byte   0x66
+#endif
+       leaq    gd@tlsgd(%rip), %rdi
+       .byte   0x66
+       rex64
+       call    *__tls_get_addr@GOTPCREL(%rip)
+       cmpl    %ebx, (%rax)
+       popq    %rbx
+       sete    %al
+       movzbl  %al, %eax
+       ret
+       .size   test_gd, .-test_gd
+       .section        .note.GNU-stack,"",@progbits
diff --git a/gold/testsuite/pr20216_ld.S b/gold/testsuite/pr20216_ld.S
new file mode 100644 (file)
index 0000000..a3cbc96
--- /dev/null
@@ -0,0 +1,47 @@
+       .text
+       .p2align 4,,15
+       .globl  get_ld
+       .type   get_ld, @function
+get_ld:
+       subq    $8, %rsp
+       leaq    ld@tlsld(%rip), %rdi
+       call    __tls_get_addr@PLT
+       addq    $8, %rsp
+       addq    $ld@dtpoff, %rax
+       ret
+       .size   get_ld, .-get_ld
+       .text
+       .p2align 4,,15
+       .globl  set_ld
+       .type   set_ld, @function
+set_ld:
+       pushq   %rbx
+       movl    %edi, %ebx
+       leaq    ld@tlsld(%rip), %rdi
+       call    *__tls_get_addr@GOTPCREL(%rip)
+       movl    %ebx, ld@dtpoff(%rax)
+       popq    %rbx
+       ret
+       .size   set_ld, .-set_ld
+       .text
+       .p2align 4,,15
+       .globl  test_ld
+       .type   test_ld, @function
+test_ld:
+       pushq   %rbx
+       movl    %edi, %ebx
+       leaq    ld@tlsld(%rip), %rdi
+       call    *__tls_get_addr@GOTPCREL(%rip)
+       cmpl    %ebx, ld@dtpoff(%rax)
+       popq    %rbx
+       sete    %al
+       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        .note.GNU-stack,"",@progbits
diff --git a/gold/testsuite/pr20216_main.c b/gold/testsuite/pr20216_main.c
new file mode 100644 (file)
index 0000000..3d69787
--- /dev/null
@@ -0,0 +1,26 @@
+#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 ();
+
+  return 0;
+}
index 6c511e2b6079ab43a5bf904efbb77eba2cada362..6aa489a7a74929eb1319341bb79d4cd5bdf6adc0 100644 (file)
@@ -3505,6 +3505,7 @@ Target_x86_64<size>::Relocate::relocate(
   if (this->skip_call_tls_get_addr_)
     {
       if ((r_type != elfcpp::R_X86_64_PLT32
+          && r_type != elfcpp::R_X86_64_GOTPCRELX
           && r_type != elfcpp::R_X86_64_PLT32_BND
           && r_type != elfcpp::R_X86_64_PC32_BND
           && r_type != elfcpp::R_X86_64_PC32)
@@ -4169,16 +4170,23 @@ Target_x86_64<size>::Relocate::tls_gd_to_ie(
 {
   // For SIZE == 64:
   //   .byte 0x66; leaq foo@tlsgd(%rip),%rdi;
-  //   .word 0x6666; rex64; call __tls_get_addr
+  //   .word 0x6666; rex64; call __tls_get_addr@PLT
+  //   ==> movq %fs:0,%rax; addq x@gottpoff(%rip),%rax
+  //   .byte 0x66; leaq foo@tlsgd(%rip),%rdi;
+  //   .word 0x66; rex64; call *__tls_get_addr@GOTPCREL(%rip)
   //   ==> movq %fs:0,%rax; addq x@gottpoff(%rip),%rax
   // For SIZE == 32:
   //   leaq foo@tlsgd(%rip),%rdi;
-  //   .word 0x6666; rex64; call __tls_get_addr
+  //   .word 0x6666; rex64; call __tls_get_addr@PLT
+  //   ==> movl %fs:0,%eax; addq x@gottpoff(%rip),%rax
+  //   leaq foo@tlsgd(%rip),%rdi;
+  //   .word 0x66; rex64; call *__tls_get_addr@GOTPCREL(%rip)
   //   ==> movl %fs:0,%eax; addq x@gottpoff(%rip),%rax
 
   tls::check_range(relinfo, relnum, rela.get_r_offset(), view_size, 12);
   tls::check_tls(relinfo, relnum, rela.get_r_offset(),
-                (memcmp(view + 4, "\x66\x66\x48\xe8", 4) == 0));
+                (memcmp(view + 4, "\x66\x66\x48\xe8", 4) == 0
+                 || memcmp(view + 4, "\x66\x48\xff", 3) == 0));
 
   if (size == 64)
     {
@@ -4225,16 +4233,23 @@ Target_x86_64<size>::Relocate::tls_gd_to_le(
 {
   // For SIZE == 64:
   //   .byte 0x66; leaq foo@tlsgd(%rip),%rdi;
-  //   .word 0x6666; rex64; call __tls_get_addr
+  //   .word 0x6666; rex64; call __tls_get_addr@PLT
+  //   ==> movq %fs:0,%rax; leaq x@tpoff(%rax),%rax
+  //   .byte 0x66; leaq foo@tlsgd(%rip),%rdi;
+  //   .word 0x66; rex64; call *__tls_get_addr@GOTPCREL(%rip)
   //   ==> movq %fs:0,%rax; leaq x@tpoff(%rax),%rax
   // For SIZE == 32:
   //   leaq foo@tlsgd(%rip),%rdi;
-  //   .word 0x6666; rex64; call __tls_get_addr
+  //   .word 0x6666; rex64; call __tls_get_addr@PLT
+  //   ==> movl %fs:0,%eax; leaq x@tpoff(%rax),%rax
+  //   leaq foo@tlsgd(%rip),%rdi;
+  //   .word 0x66; rex64; call *__tls_get_addr@GOTPCREL(%rip)
   //   ==> movl %fs:0,%eax; leaq x@tpoff(%rax),%rax
 
   tls::check_range(relinfo, relnum, rela.get_r_offset(), view_size, 12);
   tls::check_tls(relinfo, relnum, rela.get_r_offset(),
-                (memcmp(view + 4, "\x66\x66\x48\xe8", 4) == 0));
+                (memcmp(view + 4, "\x66\x66\x48\xe8", 4) == 0
+                 || memcmp(view + 4, "\x66\x48\xff", 3) == 0));
 
   if (size == 64)
     {
@@ -4362,6 +4377,13 @@ Target_x86_64<size>::Relocate::tls_ld_to_le(
   // For SIZE == 32:
   // ... leq foo@dtpoff(%rax),%reg
   // ==> nopl 0x0(%rax); movl %fs:0,%eax ... leaq x@tpoff(%rax),%rdx
+  // leaq foo@tlsld(%rip),%rdi; call *__tls_get_addr@GOTPCREL(%rip)
+  // For SIZE == 64:
+  // ... leq foo@dtpoff(%rax),%reg
+  // ==> .word 0x6666; .byte 0x6666; movq %fs:0,%rax ... leaq x@tpoff(%rax),%rdx
+  // For SIZE == 32:
+  // ... leq foo@dtpoff(%rax),%reg
+  // ==> nopw 0x0(%rax); movl %fs:0,%eax ... leaq x@tpoff(%rax),%rdx
 
   tls::check_range(relinfo, relnum, rela.get_r_offset(), view_size, -3);
   tls::check_range(relinfo, relnum, rela.get_r_offset(), view_size, 9);
@@ -4369,12 +4391,25 @@ Target_x86_64<size>::Relocate::tls_ld_to_le(
   tls::check_tls(relinfo, relnum, rela.get_r_offset(),
                 view[-3] == 0x48 && view[-2] == 0x8d && view[-1] == 0x3d);
 
-  tls::check_tls(relinfo, relnum, rela.get_r_offset(), view[4] == 0xe8);
+  tls::check_tls(relinfo, relnum, rela.get_r_offset(),
+                view[4] == 0xe8 || view[4] == 0xff);
 
-  if (size == 64)
-    memcpy(view - 3, "\x66\x66\x66\x64\x48\x8b\x04\x25\0\0\0\0", 12);
+  if (view[4] == 0xe8)
+    {
+      if (size == 64)
+       memcpy(view - 3, "\x66\x66\x66\x64\x48\x8b\x04\x25\0\0\0\0", 12);
+      else
+       memcpy(view - 3, "\x0f\x1f\x40\x00\x64\x8b\x04\x25\0\0\0\0", 12);
+    }
   else
-    memcpy(view - 3, "\x0f\x1f\x40\x00\x64\x8b\x04\x25\0\0\0\0", 12);
+    {
+      if (size == 64)
+       memcpy(view - 3, "\x66\x66\x66\x66\x64\x48\x8b\x04\x25\0\0\0\0",
+              13);
+      else
+       memcpy(view - 3, "\x66\x0f\x1f\x40\x00\x64\x8b\x04\x25\0\0\0\0",
+              13);
+    }
 
   // The next reloc should be a PLT32 reloc against __tls_get_addr.
   // We can skip it.