Configure USE_HIDDEN_LINKONCE on Solaris/x86
authorRainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
Fri, 26 Jan 2018 08:32:21 +0000 (08:32 +0000)
committerRainer Orth <ro@gcc.gnu.org>
Fri, 26 Jan 2018 08:32:21 +0000 (08:32 +0000)
gcc/testsuite:
* gcc.target/i386/mcount_pic.c: Only xfail get_pc_thunk scan on
Solaris 10.
* gcc.target/i386/pr63620.c: Likewise.

gcc:
* config/i386/sol2.h (USE_HIDDEN_LINKONCE): Remove.
* configure.ac (hidden_linkonce): New test.
* configure: Regenerate.
* config.in: Regenerate.

From-SVN: r257076

gcc/ChangeLog
gcc/config.in
gcc/config/i386/sol2.h
gcc/configure
gcc/configure.ac
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.target/i386/mcount_pic.c
gcc/testsuite/gcc.target/i386/pr63620.c

index f92720c0284705b9338ea4f6adbf9f40bb10f713..66ae9d189a8d175282be21a325fdd42c95420867 100644 (file)
@@ -1,3 +1,10 @@
+2018-01-26  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
+
+       * config/i386/sol2.h (USE_HIDDEN_LINKONCE): Remove.
+       * configure.ac (hidden_linkonce): New test.
+       * configure: Regenerate.
+       * config.in: Regenerate.
+
 2018-01-26  Julia Koval  <julia.koval@intel.com>
 
        * config/i386/avx512bitalgintrin.h (_mm512_bitshuffle_epi64_mask,
index 5651bcba431c40df946b940674be0e5baf7c78a2..8dc453104c13a7707ce2f3a5b05cd880c6984b2f 100644 (file)
 #endif
 
 
+/* Define 0/1 if your linker supports hidden thunks in linkonce sections. */
+#ifndef USED_FOR_TARGET
+#undef USE_HIDDEN_LINKONCE
+#endif
+
+
 /* Define to 1 if the 'long long' type is wider than 'long' but still
    efficiently supported by the host hardware. */
 #ifndef USED_FOR_TARGET
index ae727f0d7ab3f65e4981d9b5c3a5753fbdd87359..41048d23776e04b0bdba02f3f28ff51d7f4bef91 100644 (file)
@@ -253,9 +253,3 @@ along with GCC; see the file COPYING3.  If not see
 /* We do not need NT_VERSION notes.  */
 #undef X86_FILE_START_VERSION_DIRECTIVE
 #define X86_FILE_START_VERSION_DIRECTIVE false
-
-/* Only recent versions of Solaris 11 ld properly support hidden .gnu.linkonce
-   sections, so don't use them.  */
-#ifndef USE_GLD
-#define USE_HIDDEN_LINKONCE 0
-#endif
index 376d34107628878130902a5bd072335d1bc4e8a1..f3695adc945ac354a6c0f3bb42c51d53a99ae9b4 100755 (executable)
@@ -23798,6 +23798,35 @@ cat >>confdefs.h <<_ACEOF
 _ACEOF
 
 
+# Restrict this test to Solaris/x86: other targets define this statically.
+case "${target}" in
+  i?86-*-solaris2* | x86_64-*-solaris2*)
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking support for hidden thunks in linkonce sections" >&5
+$as_echo_n "checking support for hidden thunks in linkonce sections... " >&6; }
+    if test $in_tree_ld = yes || echo "$ld_ver" | grep GNU > /dev/null; then
+      hidden_linkonce=yes
+    else
+      case "${target}" in
+       # Full support for hidden thunks in linkonce sections only appeared in
+       # Solaris 11/OpenSolaris.
+        *-*-solaris2.1[1-9]*)
+         hidden_linkonce=yes
+         ;;
+       *)
+         hidden_linkonce=no
+         ;;
+      esac
+    fi
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hidden_linkonce" >&5
+$as_echo "$hidden_linkonce" >&6; }
+
+cat >>confdefs.h <<_ACEOF
+#define USE_HIDDEN_LINKONCE `if test $hidden_linkonce = yes; then echo 1; else echo 0; fi`
+_ACEOF
+
+  ;;
+esac
+
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking assembler for line table discriminator support" >&5
 $as_echo_n "checking assembler for line table discriminator support... " >&6; }
 if test "${gcc_cv_as_discriminator+set}" = set; then :
index 6d645fe54123668326e019234dfec669601a1013..b7f972868f68ef1e1e66d025edc2bce2c12bd5ab 100644 (file)
@@ -3070,6 +3070,31 @@ AC_DEFINE_UNQUOTED(HAVE_COMDAT_GROUP,
     || test $gcc_cv_as_comdat_group_group = yes; then echo 1; else echo 0; fi`],
 [Define 0/1 if your assembler and linker support COMDAT groups.])
 
+# Restrict this test to Solaris/x86: other targets define this statically.
+case "${target}" in
+  i?86-*-solaris2* | x86_64-*-solaris2*)
+    AC_MSG_CHECKING(support for hidden thunks in linkonce sections)
+    if test $in_tree_ld = yes || echo "$ld_ver" | grep GNU > /dev/null; then
+      hidden_linkonce=yes
+    else
+      case "${target}" in
+       # Full support for hidden thunks in linkonce sections only appeared in
+       # Solaris 11/OpenSolaris.
+        *-*-solaris2.1[[1-9]]*)
+         hidden_linkonce=yes
+         ;;
+       *)
+         hidden_linkonce=no
+         ;;
+      esac
+    fi
+    AC_MSG_RESULT($hidden_linkonce)
+    AC_DEFINE_UNQUOTED(USE_HIDDEN_LINKONCE,
+      [`if test $hidden_linkonce = yes; then echo 1; else echo 0; fi`],
+    [Define 0/1 if your linker supports hidden thunks in linkonce sections.])
+  ;;
+esac
+
 gcc_GAS_CHECK_FEATURE([line table discriminator support],
  gcc_cv_as_discriminator,
  [2,19,51],,
index 72a0069eb9c4773de22d14ba0e4a4b415f6d71db..01904c83cb4ac95280caa779c57895b67a5efa83 100644 (file)
@@ -1,3 +1,9 @@
+2018-01-26  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
+
+       * gcc.target/i386/mcount_pic.c: Only xfail get_pc_thunk scan on
+       Solaris 10.
+       * gcc.target/i386/pr63620.c: Likewise.
+
 2018-01-26  Julia Koval  <julia.koval@intel.com>
 
        * gcc.target/i386/avx512bitalg-vpshufbitqmb-1.c: Add -mavx512f -mavx512bw.
index 82722a1f8d5b474b8b2ce53dba3b6c01c8e039fd..2eccfbd1c90f8b37bb1ce73c173c946d350ff912 100644 (file)
@@ -11,5 +11,5 @@ int main ()
 }
 
 /* { dg-final { scan-assembler "mcount" } } */
-/* { dg-final { scan-assembler "get_pc_thunk" { xfail { *-*-solaris* && { ! gld } } } } } */
+/* { dg-final { scan-assembler "get_pc_thunk" { xfail { *-*-solaris2.10* && { ! gld } } } } } */
 /* { dg-final { cleanup-profile-file } } */
index 077a84a58b954cabb9a2da2c04f989010655ace6..36f6b63f1e8ed7763b4754651b168165ee307806 100644 (file)
@@ -17,4 +17,4 @@ test (__float128 x, int p, func f)
   return x;
 }
 
-/* { dg-final { scan-assembler "get_pc_thunk" { xfail { *-*-solaris* && { ! gld } } } } } */
+/* { dg-final { scan-assembler "get_pc_thunk" { xfail { *-*-solaris2.10* && { ! gld } } } } } */