aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>2024-05-07 10:45:55 +0200
committerRainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>2024-05-07 10:45:55 +0200
commitf68e90a0fe88c50ad6f4b15ba9e9503c710d3444 (patch)
treea854734fe0c1d377a58c6fd4401fa6637b279e30 /gcc
parent9dbff9c05520a74e6cd337578f27b56c941f64f3 (diff)
downloadgcc-f68e90a0fe88c50ad6f4b15ba9e9503c710d3444.zip
gcc-f68e90a0fe88c50ad6f4b15ba9e9503c710d3444.tar.gz
gcc-f68e90a0fe88c50ad6f4b15ba9e9503c710d3444.tar.bz2
Remove obsolete Solaris 11.3 support
Support for Solaris 11.3 had already been obsoleted in GCC 13. However, since the only Solaris system in the cfarm was running 11.3, I've kept it in tree until now when both Solaris 11.4/SPARC and x86 systems have been added. This patch actually removes the Solaris 11.3 support. Apart from several minor simplifications, there are two more widespread changes: * In Solaris 11.4, libsocket and libnsl were folded into libc, so there's no longer a need to link them explictly. * Since Solaris 11.4, Solaris includes all crts needed by gcc (like crt1.o and gcrt1.o) with the base system. All workarounds to provide fallbacks can thus go. Bootstrapped without regressions on i386-pc-solaris2.11 and sparc-sun-solaris2.11 (as/ld, gas/ld, and gas/gld) as well as Solaris 11.3/x86 to ascertain that version is actually rejected. 2024-04-30 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE> c++tools: * configure.ac (ax_lib_socket_nsl.m4): Don't sinclude. (AX_LIB_SOCKET_NSL): Don't call. (NETLIBS): Remove. * configure: Regenerate. * Makefile.in (NETLIBS): Remove. (g++-mapper-server$(exeext)): Remove $(NETLIBS). gcc: * config.gcc: Move *-*-solaris2.11.[0-3]* to unsupported list. <*-*-solaris2*> (default_use_cxa_atexit): Set unconditionally. * configure.ac (AX_LIB_SOCKET_NSL): Don't call. (NETLIBS): Remove. (gcc_cv_ld_aligned_shf_merge): Remove. (hidden_linkonce) <i?86-*-solaris2* | x86_64-*-solaris2*>: Remove. (gcc_cv_target_dl_iterate_phdr) <*-*-solaris2*>: Always set to yes. * Makefile.in (NETLIBS): Remove. * configure, config.in, aclocal.m4: Regenerate. * config/sol2.h: Don't check HAVE_SOLARIS_CRTS. (STARTFILE_SPEC): Remove !HAVE_SOLARIS_CRTS case. [USE_GLD] (LINK_EH_SPEC): Remove TARGET_DL_ITERATE_PHDR guard. * config/i386/i386.cc (USE_HIDDEN_LINKONCE): Remove guard. * varasm.cc (mergeable_string_section): Remove HAVE_LD_ALIGNED_SHF_MERGE handling. (mergeable_constant_section): Likewise. * doc/install.texi (Specific,i?86-*-solaris2*): Reference Solaris 11.4 only. (Specific, *-*-solaris2*): Document Solaris 11.3 removal. Remove 11.3 references and caveats. Update for 11.4. gcc/cp: * Make-lang.in (cc1plus$(exeext)): Remove $(NETLIBS). gcc/objcp: * Make-lang.in (cc1objplus$(exeext)): Remove $(NETLIBS). gcc/testsuite: * lib/target-supports.exp (check_effective_target_pie): Always enable on *-*-solaris2*. libgcc: * configure.ac <*-*-solaris2*> (libgcc_cv_solaris_crts): Remove. * config.host <*-*-solaris2*>: Remove !libgcc_cv_solaris_crts support. * configure, config.in: Regenerate. * config/sol2/gmon.c (internal_mcount) [!HAVE_SOLARIS_CRTS]: Remove. * config/i386/sol2-c1.S, config/sparc/sol2-c1.S: Remove. * config/sol2/t-sol2 (crt1.o, gcrt1.o): Remove. libstdc++-v3: * testsuite/lib/dg-options.exp (add_options_for_net_ts) <*-*-solaris2*>: Don't link with -lsocket -lnsl.
Diffstat (limited to 'gcc')
-rw-r--r--gcc/Makefile.in1
-rw-r--r--gcc/aclocal.m41
-rw-r--r--gcc/config.gcc16
-rw-r--r--gcc/config.in13
-rw-r--r--gcc/config/i386/i386.cc10
-rw-r--r--gcc/config/sol2.h22
-rwxr-xr-xgcc/configure224
-rw-r--r--gcc/configure.ac58
-rw-r--r--gcc/cp/Make-lang.in2
-rw-r--r--gcc/doc/install.texi39
-rw-r--r--gcc/objcp/Make-lang.in2
-rw-r--r--gcc/testsuite/lib/target-supports.exp8
-rw-r--r--gcc/varasm.cc6
13 files changed, 36 insertions, 366 deletions
diff --git a/gcc/Makefile.in b/gcc/Makefile.in
index a74761b..ecd5114 100644
--- a/gcc/Makefile.in
+++ b/gcc/Makefile.in
@@ -447,7 +447,6 @@ CPPINC = -I$(srcdir)/../libcpp/include
CODYLIB = ../libcody/libcody.a
CODYINC = -I$(srcdir)/../libcody
-NETLIBS = @NETLIBS@
# Where to find decNumber
enable_decimal_float = @enable_decimal_float@
diff --git a/gcc/aclocal.m4 b/gcc/aclocal.m4
index c0fcbeb..762e949 100644
--- a/gcc/aclocal.m4
+++ b/gcc/aclocal.m4
@@ -68,7 +68,6 @@ m4_include([../ltsugar.m4])
m4_include([../ltversion.m4])
m4_include([../lt~obsolete.m4])
m4_include([../config/acx.m4])
-m4_include([../config/ax_lib_socket_nsl.m4])
m4_include([../config/cet.m4])
m4_include([../config/codeset.m4])
m4_include([../config/depstand.m4])
diff --git a/gcc/config.gcc b/gcc/config.gcc
index 95c91ee..65bbe9e 100644
--- a/gcc/config.gcc
+++ b/gcc/config.gcc
@@ -271,9 +271,8 @@ case ${target}:`uname -v` in
esac
# Obsolete configurations.
-case ${target}${target_min} in
- *-*-solaris2.11.[0-3]* \
- | ia64*-*-* \
+case ${target} in
+ ia64*-*-* \
| nios2*-*-* \
)
if test "x$enable_obsolete" != xyes; then
@@ -288,7 +287,7 @@ esac
# Unsupported targets list. Do not put an entry in this list unless
# it would otherwise be caught by a more permissive pattern. The list
# should be in alphabetical order.
-case ${target} in
+case ${target}${target_min} in
# Avoid special cases that are not obsolete
arm*-*-*eabi* \
)
@@ -325,6 +324,7 @@ case ${target} in
| *-*-solaris2.[0-9] \
| *-*-solaris2.[0-9].* \
| *-*-solaris2.10* \
+ | *-*-solaris2.11.[0-3]* \
| *-*-sysv* \
| vax-*-vms* \
)
@@ -1046,12 +1046,8 @@ case ${target} in
sol2_tm_file_head="elfos.h ${cpu_type}/sysv4.h"
sol2_tm_file_tail="${cpu_type}/sol2.h sol2.h"
sol2_tm_file="${sol2_tm_file_head} ${sol2_tm_file_tail}"
- case ${target} in
- *-*-solaris2.1[1-9]*)
- # __cxa_atexit was introduced in Solaris 11.4.
- default_use_cxa_atexit=yes
- ;;
- esac
+ # __cxa_atexit was introduced in Solaris 11.4.
+ default_use_cxa_atexit=yes
use_gcc_stdint=wrap
if test x$gnu_ld = xyes; then
tm_file="usegld.h ${tm_file}"
diff --git a/gcc/config.in b/gcc/config.in
index f3de4ba..e41b6dc 100644
--- a/gcc/config.in
+++ b/gcc/config.in
@@ -1672,13 +1672,6 @@
#endif
-/* Define 0/1 if your linker supports the SHF_MERGE flag with section
- alignment > 1. */
-#ifndef USED_FOR_TARGET
-#undef HAVE_LD_ALIGNED_SHF_MERGE
-#endif
-
-
/* Define if your linker supports --as-needed/--no-as-needed or equivalent
options. */
#ifndef USED_FOR_TARGET
@@ -2560,12 +2553,6 @@
#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
diff --git a/gcc/config/i386/i386.cc b/gcc/config/i386/i386.cc
index e67e5f6..e58335a 100644
--- a/gcc/config/i386/i386.cc
+++ b/gcc/config/i386/i386.cc
@@ -5976,12 +5976,10 @@ ix86_setup_frame_addresses (void)
cfun->machine->accesses_prev_frame = 1;
}
-#ifndef USE_HIDDEN_LINKONCE
-# if defined(HAVE_GAS_HIDDEN) && (SUPPORTS_ONE_ONLY - 0)
-# define USE_HIDDEN_LINKONCE 1
-# else
-# define USE_HIDDEN_LINKONCE 0
-# endif
+#if defined(HAVE_GAS_HIDDEN) && (SUPPORTS_ONE_ONLY - 0)
+# define USE_HIDDEN_LINKONCE 1
+#else
+# define USE_HIDDEN_LINKONCE 0
#endif
/* Label count for call and return thunks. It is used to make unique
diff --git a/gcc/config/sol2.h b/gcc/config/sol2.h
index 85c1f9d..c602a94 100644
--- a/gcc/config/sol2.h
+++ b/gcc/config/sol2.h
@@ -204,7 +204,7 @@ along with GCC; see the file COPYING3. If not see
%{ansi|std=c*|std=iso9899\\:199409:values-Xc.o%s; :values-Xa.o%s} \
%{std=c90|std=gnu90:values-xpg4.o%s; :values-xpg6.o%s}}}"
-#if defined(HAVE_LD_PIE) && defined(HAVE_SOLARIS_CRTS)
+#if defined(HAVE_LD_PIE)
#define STARTFILE_CRTBEGIN_SPEC "%{static:crtbegin.o%s; \
shared|" PIE_SPEC ":crtbeginS.o%s; \
:crtbegin.o%s}"
@@ -265,7 +265,6 @@ along with GCC; see the file COPYING3. If not see
/* We don't use the standard svr4 STARTFILE_SPEC because it's wrong for us. */
#undef STARTFILE_SPEC
-#ifdef HAVE_SOLARIS_CRTS
/* Since Solaris 11.4, the OS delivers crt1.o, crti.o, and crtn.o, with a hook
for compiler-dependent stuff like profile handling. */
#define STARTFILE_SPEC "%{!shared:%{!symbolic: \
@@ -275,16 +274,8 @@ along with GCC; see the file COPYING3. If not see
:crtp.o%s}}} \
crti.o%s %(startfile_arch) %(startfile_crtbegin) \
%(startfile_vtv)"
-#else
-#define STARTFILE_SPEC "%{!shared:%{!symbolic: \
- %{p:mcrt1.o%s; \
- pg:gcrt1.o%s gmon.o%s; \
- :crt1.o%s}}} \
- crti.o%s %(startfile_arch) %(startfile_crtbegin) \
- %(startfile_vtv)"
-#endif
-#if defined(HAVE_LD_PIE) && defined(HAVE_SOLARIS_CRTS)
+#if defined(HAVE_LD_PIE)
#define ENDFILE_CRTEND_SPEC "%{static:crtend.o%s; \
shared|" PIE_SPEC ":crtendS.o%s; \
:crtend.o%s}"
@@ -427,14 +418,13 @@ along with GCC; see the file COPYING3. If not see
#endif
#ifdef USE_GLD
-/* Solaris 11 build 135+ implements dl_iterate_phdr. GNU ld needs
- --eh-frame-hdr to create the required .eh_frame_hdr sections. */
-#if defined(HAVE_LD_EH_FRAME_HDR) && defined(TARGET_DL_ITERATE_PHDR)
+/* GNU ld needs --eh-frame-hdr to create the required .eh_frame_hdr sections. */
+#if defined(HAVE_LD_EH_FRAME_HDR)
#define LINK_EH_SPEC "%{!static|static-pie:--eh-frame-hdr} "
-#endif /* HAVE_LD_EH_FRAME && TARGET_DL_ITERATE_PHDR */
+#endif /* HAVE_LD_EH_FRAME */
#endif
-#if defined(HAVE_LD_PIE) && defined(HAVE_SOLARIS_CRTS)
+#if defined(HAVE_LD_PIE)
#ifdef USE_GLD
/* Assert -z text by default to match Solaris ld. */
#define LD_PIE_SPEC "-pie %{!mimpure-text:-z text}"
diff --git a/gcc/configure b/gcc/configure
index 23da7d5..aaf5899 100755
--- a/gcc/configure
+++ b/gcc/configure
@@ -809,7 +809,6 @@ ZSTD_LIB
ZSTD_INCLUDE
DL_LIB
LDEXP_LIB
-NETLIBS
EXTRA_GCC_LIBS
GNAT_LIBEXC
COLLECT2_LIBS
@@ -10285,170 +10284,6 @@ EXTRA_GCC_LIBS="$LIBS"
LIBS="$save_LIBS"
-# Solaris needs libsocket and libnsl for socket functions before 11.4.
-# C++ needs those for libcody.
-save_LIBS="$LIBS"
-LIBS=
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing gethostbyname" >&5
-$as_echo_n "checking for library containing gethostbyname... " >&6; }
-if ${ac_cv_search_gethostbyname+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- ac_func_search_save_LIBS=$LIBS
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-/* Override any GCC internal prototype to avoid an error.
- Use char because int might match the return type of a GCC
- builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
-char gethostbyname ();
-int
-main ()
-{
-return gethostbyname ();
- ;
- return 0;
-}
-_ACEOF
-for ac_lib in '' nsl; do
- if test -z "$ac_lib"; then
- ac_res="none required"
- else
- ac_res=-l$ac_lib
- LIBS="-l$ac_lib $ac_func_search_save_LIBS"
- fi
- if ac_fn_cxx_try_link "$LINENO"; then :
- ac_cv_search_gethostbyname=$ac_res
-fi
-rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext
- if ${ac_cv_search_gethostbyname+:} false; then :
- break
-fi
-done
-if ${ac_cv_search_gethostbyname+:} false; then :
-
-else
- ac_cv_search_gethostbyname=no
-fi
-rm conftest.$ac_ext
-LIBS=$ac_func_search_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_gethostbyname" >&5
-$as_echo "$ac_cv_search_gethostbyname" >&6; }
-ac_res=$ac_cv_search_gethostbyname
-if test "$ac_res" != no; then :
- test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
-
-fi
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing socket" >&5
-$as_echo_n "checking for library containing socket... " >&6; }
-if ${ac_cv_search_socket+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- ac_func_search_save_LIBS=$LIBS
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-/* Override any GCC internal prototype to avoid an error.
- Use char because int might match the return type of a GCC
- builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
-char socket ();
-int
-main ()
-{
-return socket ();
- ;
- return 0;
-}
-_ACEOF
-for ac_lib in '' socket; do
- if test -z "$ac_lib"; then
- ac_res="none required"
- else
- ac_res=-l$ac_lib
- LIBS="-l$ac_lib $ac_func_search_save_LIBS"
- fi
- if ac_fn_cxx_try_link "$LINENO"; then :
- ac_cv_search_socket=$ac_res
-fi
-rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext
- if ${ac_cv_search_socket+:} false; then :
- break
-fi
-done
-if ${ac_cv_search_socket+:} false; then :
-
-else
- ac_cv_search_socket=no
-fi
-rm conftest.$ac_ext
-LIBS=$ac_func_search_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_socket" >&5
-$as_echo "$ac_cv_search_socket" >&6; }
-ac_res=$ac_cv_search_socket
-if test "$ac_res" != no; then :
- test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
-
-else
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for socket in -lsocket" >&5
-$as_echo_n "checking for socket in -lsocket... " >&6; }
-if ${ac_cv_lib_socket_socket+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- ac_check_lib_save_LIBS=$LIBS
-LIBS="-lsocket -lnsl $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-/* Override any GCC internal prototype to avoid an error.
- Use char because int might match the return type of a GCC
- builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
-char socket ();
-int
-main ()
-{
-return socket ();
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_cxx_try_link "$LINENO"; then :
- ac_cv_lib_socket_socket=yes
-else
- ac_cv_lib_socket_socket=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_socket_socket" >&5
-$as_echo "$ac_cv_lib_socket_socket" >&6; }
-if test "x$ac_cv_lib_socket_socket" = xyes; then :
- LIBS="-lsocket -lnsl $LIBS"
-fi
-
-fi
-
-
-NETLIBS="$LIBS"
-LIBS="$save_LIBS"
-
-
# Some systems put ldexp and frexp in libm instead of libc; assume
# they're both in the same place. jcf-dump needs them.
save_LIBS="$LIBS"
@@ -21575,7 +21410,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<_LT_EOF
-#line 21578 "configure"
+#line 21413 "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
@@ -21681,7 +21516,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<_LT_EOF
-#line 21684 "configure"
+#line 21519 "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
@@ -27105,23 +26940,6 @@ cat >>confdefs.h <<_ACEOF
_ACEOF
-gcc_cv_ld_aligned_shf_merge=yes
-case "$target" in
- # SHF_MERGE support is broken in Solaris ld up to Solaris 11.3/SPARC for
- # alignment > 1.
- sparc*-*-solaris2.11*)
- if test x"$gnu_ld" = xno \
- && test "$ld_vers_major" -lt 2 && test "$ld_vers_minor" -lt 3159; then
- gcc_cv_ld_aligned_shf_merge=no
- fi
- ;;
-esac
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_LD_ALIGNED_SHF_MERGE `if test $gcc_cv_ld_aligned_shf_merge = yes; then echo 1; else echo 0; fi`
-_ACEOF
-
-
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking assembler for COMDAT group support (GNU as)" >&5
$as_echo_n "checking assembler for COMDAT group support (GNU as)... " >&6; }
if ${gcc_cv_as_comdat_group+:} false; then :
@@ -27303,35 +27121,6 @@ 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 is_stmt support" >&5
$as_echo_n "checking assembler for line table is_stmt support... " >&6; }
if ${gcc_cv_as_is_stmt+:} false; then :
@@ -33631,14 +33420,7 @@ $as_echo_n "checking dl_iterate_phdr in target C library... " >&6; }
gcc_cv_target_dl_iterate_phdr=unknown
case "$target" in
*-*-solaris2*)
- # <link.h> needs both a dl_iterate_phdr declaration and support for
- # compilation with largefile support.
- if grep dl_iterate_phdr $target_header_dir/link.h > /dev/null 2>&1 \
- && grep 'large file capable' $target_header_dir/link.h > /dev/null 2>&1; then
- gcc_cv_target_dl_iterate_phdr=yes
- else
- gcc_cv_target_dl_iterate_phdr=no
- fi
+ gcc_cv_target_dl_iterate_phdr=yes
;;
*-*-dragonfly* | *-*-freebsd*)
if grep dl_iterate_phdr $target_header_dir/sys/link_elf.h > /dev/null 2>&1; then
diff --git a/gcc/configure.ac b/gcc/configure.ac
index d7cf0b9..f8d67ef 100644
--- a/gcc/configure.ac
+++ b/gcc/configure.ac
@@ -1434,15 +1434,6 @@ EXTRA_GCC_LIBS="$LIBS"
LIBS="$save_LIBS"
AC_SUBST(EXTRA_GCC_LIBS)
-# Solaris needs libsocket and libnsl for socket functions before 11.4.
-# C++ needs those for libcody.
-save_LIBS="$LIBS"
-LIBS=
-AX_LIB_SOCKET_NSL
-NETLIBS="$LIBS"
-LIBS="$save_LIBS"
-AC_SUBST(NETLIBS)
-
# Some systems put ldexp and frexp in libm instead of libc; assume
# they're both in the same place. jcf-dump needs them.
save_LIBS="$LIBS"
@@ -3599,21 +3590,6 @@ AC_DEFINE_UNQUOTED(HAVE_GAS_SHF_MERGE,
[`if test $gcc_cv_as_shf_merge = yes; then echo 1; else echo 0; fi`],
[Define 0/1 if your assembler supports marking sections with SHF_MERGE flag.])
-gcc_cv_ld_aligned_shf_merge=yes
-case "$target" in
- # SHF_MERGE support is broken in Solaris ld up to Solaris 11.3/SPARC for
- # alignment > 1.
- sparc*-*-solaris2.11*)
- if test x"$gnu_ld" = xno \
- && test "$ld_vers_major" -lt 2 && test "$ld_vers_minor" -lt 3159; then
- gcc_cv_ld_aligned_shf_merge=no
- fi
- ;;
-esac
-AC_DEFINE_UNQUOTED(HAVE_LD_ALIGNED_SHF_MERGE,
- [`if test $gcc_cv_ld_aligned_shf_merge = yes; then echo 1; else echo 0; fi`],
-[Define 0/1 if your linker supports the SHF_MERGE flag with section alignment > 1.])
-
gcc_GAS_CHECK_FEATURE([COMDAT group support (GNU as)],
gcc_cv_as_comdat_group,
[--fatal-warnings],
@@ -3723,31 +3699,6 @@ 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 is_stmt support],
gcc_cv_as_is_stmt,,
[ .text
@@ -7153,14 +7104,7 @@ AC_MSG_CHECKING(dl_iterate_phdr in target C library)
gcc_cv_target_dl_iterate_phdr=unknown
case "$target" in
*-*-solaris2*)
- # <link.h> needs both a dl_iterate_phdr declaration and support for
- # compilation with largefile support.
- if grep dl_iterate_phdr $target_header_dir/link.h > /dev/null 2>&1 \
- && grep 'large file capable' $target_header_dir/link.h > /dev/null 2>&1; then
- gcc_cv_target_dl_iterate_phdr=yes
- else
- gcc_cv_target_dl_iterate_phdr=no
- fi
+ gcc_cv_target_dl_iterate_phdr=yes
;;
*-*-dragonfly* | *-*-freebsd*)
if grep dl_iterate_phdr $target_header_dir/sys/link_elf.h > /dev/null 2>&1; then
diff --git a/gcc/cp/Make-lang.in b/gcc/cp/Make-lang.in
index f153891..026cf8d 100644
--- a/gcc/cp/Make-lang.in
+++ b/gcc/cp/Make-lang.in
@@ -143,7 +143,7 @@ cc1plus-checksum.cc : build/genchecksum$(build_exeext) checksum-options \
cc1plus$(exeext): $(CXX_OBJS) cc1plus-checksum.o $(BACKEND) $(CODYLIB) $(LIBDEPS) $(c++.prev)
@$(call LINK_PROGRESS,$(INDEX.c++),start)
+$(LLINKER) $(ALL_LINKERFLAGS) $(LDFLAGS) -o $@ \
- $(CXX_OBJS) cc1plus-checksum.o $(BACKEND) $(CODYLIB) $(NETLIBS) \
+ $(CXX_OBJS) cc1plus-checksum.o $(BACKEND) $(CODYLIB) \
$(LIBS) $(BACKENDLIBS)
@$(call LINK_PROGRESS,$(INDEX.c++),end)
diff --git a/gcc/doc/install.texi b/gcc/doc/install.texi
index 9f2e427..42b462a 100644
--- a/gcc/doc/install.texi
+++ b/gcc/doc/install.texi
@@ -4293,7 +4293,7 @@ found on @uref{https://www.bitwizard.nl/sig11/,,www.bitwizard.nl}.
@end html
@anchor{ix86-x-solaris2}
@heading i?86-*-solaris2*
-Use this for Solaris 11.3 or later on x86 and x86-64 systems. Starting
+Use this for Solaris 11.4 on x86 and x86-64 systems. Starting
with GCC 4.7, there is also a 64-bit @samp{amd64-*-solaris2*} or
@samp{x86_64-*-solaris2*} configuration that corresponds to
@samp{sparcv9-sun-solaris2*}.
@@ -4895,15 +4895,12 @@ supported as cross-compilation target only.
@end html
@anchor{x-x-solaris2}
@heading *-*-solaris2*
-Support for Solaris 11.3 and earlier has been obsoleted in GCC 13, but
-can still be enabled by configuring with @option{--enable-obsolete}.
+Support for Solaris 11.3 and earlier has been removed in GCC 15.
Support for Solaris 10 has been removed in GCC 10. Support for Solaris
9 has been removed in GCC 5. Support for Solaris 8 has been removed in
GCC 4.8. Support for Solaris 7 has been removed in GCC 4.6.
-Solaris 11.3 provides GCC 4.5.2, 4.7.3, and 4.8.2 as
-@command{/usr/gcc/4.5/bin/gcc} or similar. Solaris 11.4
-provides one or more of GCC 5, 7, 9, 10, 11, and 12.
+Solaris 11.4 provides one or more of GCC 5, 7, 9, 10, 11, 12, and 13.
You need to install the @code{system/header}, @code{system/linker}, and
@code{developer/assembler} packages.
@@ -4922,18 +4919,18 @@ of the build.
We recommend the use of the Solaris assembler or the GNU assembler, in
conjunction with the Solaris linker.
-The GNU @command{as} versions included in Solaris 11.3, from GNU
-binutils 2.23.1 or newer (in @file{/usr/bin/gas} and
+The GNU @command{as} versions included in Solaris 11.4, from GNU
+binutils 2.30.1 or newer (in @file{/usr/bin/gas} and
@file{/usr/gnu/bin/as}), are known to work. The version from GNU
-binutils 2.40 is known to work as well. Recent versions of the Solaris
+binutils 2.42 is known to work as well. Recent versions of the Solaris
assembler in @file{/usr/bin/as} work almost as well, though. To use GNU
@command{as}, configure with the options @option{--with-gnu-as
--with-as=@//usr/@/gnu/@/bin/@/as}.
For linking, the Solaris linker is preferred. If you want to use the
-GNU linker instead, the version in Solaris 11.3, from GNU binutils
-2.23.1 or newer (in @file{/usr/gnu/bin/ld} and @file{/usr/bin/gld}),
-works, as does the version from GNU binutils 2.40. However, it
+GNU linker instead, the version in Solaris 11.4, from GNU binutils
+2.30.1 or newer (in @file{/usr/gnu/bin/ld} and @file{/usr/bin/gld}),
+works, as does the version from GNU binutils 2.42. However, it
generally lacks platform specific features, so better stay with Solaris
@command{ld}. To use the LTO linker plugin
(@option{-fuse-linker-plugin}) with GNU @command{ld}, GNU binutils
@@ -4957,7 +4954,7 @@ will be disabled if no appropriate version is found. Solaris
work.
In order to build the GNU Ada compiler, GNAT, a working GNAT is needed.
-Since Solaris 11.4 SRU 39, GNAT 11 or 12 is bundled in the
+Since Solaris 11.4 SRU 39, GNAT 11, 12 or 13 is bundled in the
@code{developer/gcc/gcc-gnat} package.
In order to build the GNU D compiler, GDC, a working @samp{libphobos} is
@@ -4967,20 +4964,8 @@ configuring with @option{--enable-libphobos}. Also, GDC 9.4.0 is
required on x86, while GDC 9.3.0 is known to work on SPARC.
The versions of the GNU Multiple Precision Library (GMP), the MPFR
-library and the MPC library bundled with Solaris 11.3 and later are
-usually recent enough to match GCC's requirements. There are two
-caveats:
-
-@itemize @bullet
-@item
-While the version of the GMP library in Solaris 11.3 works with GCC, you
-need to configure with @option{--with-gmp-include=/usr/include/gmp}.
-
-@item
-The version of the MPFR libary included in Solaris 11.3 is too old; you
-need to provide a more recent one.
-
-@end itemize
+library and the MPC library bundled with Solaris 11.4 are
+recent enough to match GCC's requirements.
@html
<hr />
diff --git a/gcc/objcp/Make-lang.in b/gcc/objcp/Make-lang.in
index 089e4d4..d725119 100644
--- a/gcc/objcp/Make-lang.in
+++ b/gcc/objcp/Make-lang.in
@@ -80,7 +80,7 @@ cc1objplus$(exeext): $(OBJCXX_OBJS) cc1objplus-checksum.o $(BACKEND) \
@$(call LINK_PROGRESS,$(INDEX.obj-c++),start)
+$(LLINKER) $(ALL_LINKERFLAGS) $(LDFLAGS) -o $@ \
$(OBJCXX_OBJS) cc1objplus-checksum.o $(BACKEND) \
- $(CODYLIB) $(NETLIBS) $(LIBS) $(BACKENDLIBS)
+ $(CODYLIB) $(LIBS) $(BACKENDLIBS)
@$(call LINK_PROGRESS,$(INDEX.obj-c++),end)
# Objective C++ language specific files.
diff --git a/gcc/testsuite/lib/target-supports.exp b/gcc/testsuite/lib/target-supports.exp
index 3a55b2a..6f5d477 100644
--- a/gcc/testsuite/lib/target-supports.exp
+++ b/gcc/testsuite/lib/target-supports.exp
@@ -1415,17 +1415,11 @@ proc check_effective_target_pie { } {
|| [istarget *-*-freebsd*]
|| [istarget *-*-linux*]
|| [istarget arm*-*-uclinuxfdpiceabi]
+ || [istarget *-*-solaris2*]
|| [istarget *-*-gnu*]
|| [istarget *-*-amdhsa]} {
return 1;
}
- if { [istarget *-*-solaris2.1\[1-9\]*] } {
- # Full PIE support was added in Solaris 11.3, but gcc errors out
- # if missing, so check for that.
- return [check_no_compiler_messages pie executable {
- int main (void) { return 0; }
- } "-pie -fpie"]
- }
return 0
}
diff --git a/gcc/varasm.cc b/gcc/varasm.cc
index 747f74b..d5cb899 100644
--- a/gcc/varasm.cc
+++ b/gcc/varasm.cc
@@ -886,9 +886,6 @@ mergeable_string_section (tree decl ATTRIBUTE_UNUSED,
if (align < modesize)
align = modesize;
- if (!HAVE_LD_ALIGNED_SHF_MERGE && align > 8)
- return readonly_data_section;
-
str = TREE_STRING_POINTER (decl);
unit = GET_MODE_SIZE (mode);
@@ -927,8 +924,7 @@ mergeable_constant_section (machine_mode mode ATTRIBUTE_UNUSED,
&& known_le (GET_MODE_BITSIZE (mode), align)
&& align >= 8
&& align <= 256
- && (align & (align - 1)) == 0
- && (HAVE_LD_ALIGNED_SHF_MERGE ? 1 : align == 8))
+ && (align & (align - 1)) == 0)
{
const char *prefix = function_mergeable_rodata_prefix ();
char *name = (char *) alloca (strlen (prefix) + 30);