I recently noticed that neither libposix4 nor librt are needed on Solaris 11 any longer:
* libposix4 was renamed to librt in Solaris 7 back in 1998. * librt was folded into libc in the OpenSolaris timeframe, leaving librt only as a filter on libc. Thus, it's no longer needed on either Solaris 11 or Illumos. The following patch removes both uses. At the same time, Ada's use of libthread has gone: it was folded into libc in Solaris 10 already. TIME_LIBRARY and friends in g++ are likewise removed: Solaris was the only user. Bootstrapped without regressions on i386-pc-solaris2.11, sparc-sun-solaris2.11, and x86_64-pc-linux-gnu. Ok for master? There are two more uses of librt left: * On glibc targets before 2.17 it's needed for clock_gettime. I've no idea how long gcc is supposed to support such targets (glibc 2.17 was released in December 2012). * On HP-UX, it is needed for sem_init in libgomp and various specs for -fopenmp etc. There are no public HP-UX systems in the compile farm, and the sem_init(2) man page in the public docs on hpe.com was just a dangling link, so I cannot tell if this is still true. Rainer -- ----------------------------------------------------------------------------- Rainer Orth, Center for Biotechnology, Bielefeld University 2020-11-16 Rainer Orth <r...@cebitec.uni-bielefeld.de> gcc/cp: * g++spec.c (TIMELIB, TIME_LIBRARY): Remove. (lang_specific_driver): Remove TIME_LIBRARY handling. gcc: * config/sol2.h (TIME_LIBRARY): Remove. libstdc++-v3: * acinclude.m4 (GLIBCXX_ENABLE_LIBSTDCXX_TIME): Remove libposix4 references. <solaris*>: Don't use -lrt any longer. * configure: Regenerate. * doc/xml/manual/configure.xml (--enable-libstdcxx-time=OPTION): Remove libposix4 reference. gcc/ada: * Makefile.rtl <sparc*-sun-solaris*> (THREADSLIB): Remove. (MISCLIB): Remove -lposix4. <*86-*-solaris2*>: Likewise. * libgnarl/s-osinte__solaris.ads (System.OS_Interface): Remove -lposix4 -lthread.
# HG changeset patch # Parent aea7401c4d83f8a1fd609b22ec7a9131c857c98d ada: c++: Get rid of libposix4, librt on Solaris diff --git a/gcc/ada/Makefile.rtl b/gcc/ada/Makefile.rtl --- a/gcc/ada/Makefile.rtl +++ b/gcc/ada/Makefile.rtl @@ -1641,8 +1641,7 @@ ifeq ($(strip $(filter-out sparc% sun so endif EH_MECHANISM=-gcc - THREADSLIB = -lposix4 -lthread - MISCLIB = -lposix4 -lnsl -lsocket + MISCLIB = -lnsl -lsocket SO_OPTS = -Wl,-h, GNATLIB_SHARED = gnatlib-shared-dual GMEM_LIB = gmemlib @@ -1695,8 +1694,7 @@ ifeq ($(strip $(filter-out %86 %x86_64 s EXTRA_GNATRTL_NONTASKING_OBJS += $(TRASYM_DWARF_UNIX_OBJS) EH_MECHANISM=-gcc - THREADSLIB = -lposix4 -lthread - MISCLIB = -lposix4 -lnsl -lsocket + MISCLIB = -lnsl -lsocket SO_OPTS = -Wl,-h, GNATLIB_SHARED = gnatlib-shared-dual GMEM_LIB = gmemlib diff --git a/gcc/ada/libgnarl/s-osinte__solaris.ads b/gcc/ada/libgnarl/s-osinte__solaris.ads --- a/gcc/ada/libgnarl/s-osinte__solaris.ads +++ b/gcc/ada/libgnarl/s-osinte__solaris.ads @@ -45,9 +45,6 @@ with Ada.Unchecked_Conversion; package System.OS_Interface is pragma Preelaborate; - pragma Linker_Options ("-lposix4"); - pragma Linker_Options ("-lthread"); - subtype int is Interfaces.C.int; subtype short is Interfaces.C.short; subtype long is Interfaces.C.long; diff --git a/gcc/config/sol2.h b/gcc/config/sol2.h --- a/gcc/config/sol2.h +++ b/gcc/config/sol2.h @@ -381,9 +381,6 @@ along with GCC; see the file COPYING3. { "endfile_vtv", ENDFILE_VTV_SPEC }, \ SUBTARGET_CPU_EXTRA_SPECS -/* C++11 programs need -lrt for nanosleep. */ -#define TIME_LIBRARY "rt" - #ifndef USE_GLD /* With Sun ld, -rdynamic is a no-op. */ #define RDYNAMIC_SPEC "" diff --git a/gcc/cp/g++spec.c b/gcc/cp/g++spec.c --- a/gcc/cp/g++spec.c +++ b/gcc/cp/g++spec.c @@ -27,12 +27,10 @@ along with GCC; see the file COPYING3. #define LANGSPEC (1<<1) /* This bit is set if they did `-lm' or `-lmath'. */ #define MATHLIB (1<<2) -/* This bit is set if they did `-lrt' or equivalent. */ -#define TIMELIB (1<<3) /* This bit is set if they did `-lc'. */ -#define WITHLIBC (1<<4) +#define WITHLIBC (1<<3) /* Skip this option. */ -#define SKIPOPT (1<<5) +#define SKIPOPT (1<<4) #ifndef MATH_LIBRARY #define MATH_LIBRARY "m" @@ -41,10 +39,6 @@ along with GCC; see the file COPYING3. #define MATH_LIBRARY_PROFILE MATH_LIBRARY #endif -#ifndef TIME_LIBRARY -#define TIME_LIBRARY "" -#endif - #ifndef LIBSTDCXX #define LIBSTDCXX "stdc++" #endif @@ -95,15 +89,12 @@ lang_specific_driver (struct cl_decoded_ const struct cl_decoded_option *saw_libc = NULL; /* An array used to flag each argument that needs a bit set for - LANGSPEC, MATHLIB, TIMELIB, or WITHLIBC. */ + LANGSPEC, MATHLIB, or WITHLIBC. */ int *args; /* By default, we throw on the math library if we have one. */ int need_math = (MATH_LIBRARY[0] != '\0'); - /* By default, we throw on the time library if we have one. */ - int need_time = (TIME_LIBRARY[0] != '\0'); - /* True if we saw -static. */ int static_link = 0; @@ -147,11 +138,6 @@ lang_specific_driver (struct cl_decoded_ args[i] |= MATHLIB; need_math = 0; } - else if (strcmp (arg, TIME_LIBRARY) == 0) - { - args[i] |= TIMELIB; - need_time = 0; - } else if (strcmp (arg, "c") == 0) args[i] |= WITHLIBC; else @@ -285,12 +271,6 @@ lang_specific_driver (struct cl_decoded_ saw_math = &decoded_options[i]; } - if (!saw_time && (args[i] & TIMELIB) && library > 0) - { - --j; - saw_time = &decoded_options[i]; - } - if (!saw_libc && (args[i] & WITHLIBC) && library > 0) { --j; @@ -377,13 +357,6 @@ lang_specific_driver (struct cl_decoded_ } if (saw_time) new_decoded_options[j++] = *saw_time; - else if (library > 0 && need_time) - { - generate_option (OPT_l, TIME_LIBRARY, 1, CL_DRIVER, - &new_decoded_options[j]); - added_libraries++; - j++; - } if (saw_libc) new_decoded_options[j++] = *saw_libc; if (shared_libgcc && !static_link) diff --git a/libstdc++-v3/acinclude.m4 b/libstdc++-v3/acinclude.m4 --- a/libstdc++-v3/acinclude.m4 +++ b/libstdc++-v3/acinclude.m4 @@ -1381,8 +1381,8 @@ dnl dnl --enable-libstdcxx-time dnl --enable-libstdcxx-time=yes dnl checks for the availability of monotonic and realtime clocks, -dnl nanosleep and sched_yield in libc and libposix4 and, if needed, -dnl links in the latter. +dnl nanosleep and sched_yield in libc and, if needed, links in the +dnl latter. dnl --enable-libstdcxx-time=rt dnl also searches (and, if needed, links) librt. Note that this is dnl not always desirable because, in glibc 2.16 and earlier, for @@ -1455,7 +1455,6 @@ AC_DEFUN([GLIBCXX_ENABLE_LIBSTDCXX_TIME] ac_has_nanosleep=yes ;; solaris*) - GLIBCXX_LIBS="$GLIBCXX_LIBS -lrt" ac_has_clock_monotonic=yes ac_has_clock_realtime=yes ac_has_nanosleep=yes @@ -1469,11 +1468,11 @@ AC_DEFUN([GLIBCXX_ENABLE_LIBSTDCXX_TIME] elif test x"$enable_libstdcxx_time" != x"no"; then if test x"$enable_libstdcxx_time" = x"rt"; then - AC_SEARCH_LIBS(clock_gettime, [rt posix4]) - AC_SEARCH_LIBS(nanosleep, [rt posix4]) + AC_SEARCH_LIBS(clock_gettime, [rt]) + AC_SEARCH_LIBS(nanosleep, [rt]) else - AC_SEARCH_LIBS(clock_gettime, [posix4]) - AC_SEARCH_LIBS(nanosleep, [posix4]) + AC_CHECK_FUNC(clock_gettime) + AC_CHECK_FUNC(nanosleep) fi case "$ac_cv_search_clock_gettime" in @@ -1485,13 +1484,9 @@ AC_DEFUN([GLIBCXX_ENABLE_LIBSTDCXX_TIME] ;; esac - AC_SEARCH_LIBS(sched_yield, [rt posix4]) + AC_SEARCH_LIBS(sched_yield, [rt]) case "$ac_cv_search_sched_yield" in - -lposix4*) - GLIBCXX_LIBS="$GLIBCXX_LIBS $ac_cv_search_sched_yield" - ac_has_sched_yield=yes - ;; -lrt*) if test x"$enable_libstdcxx_time" = x"rt"; then GLIBCXX_LIBS="$GLIBCXX_LIBS $ac_cv_search_sched_yield" diff --git a/libstdc++-v3/doc/xml/manual/configure.xml b/libstdc++-v3/doc/xml/manual/configure.xml --- a/libstdc++-v3/doc/xml/manual/configure.xml +++ b/libstdc++-v3/doc/xml/manual/configure.xml @@ -171,7 +171,7 @@ <function>sched_yield</function> functions, used in the implementation of [thread.thread.this] of the 2011 ISO C++ standard. The choice OPTION=yes checks for the availability of the facilities - in libc and libposix4. In case it's needed the latter is also linked + in libc. In case it's needed the latter is also linked to libstdc++ as part of the build process. OPTION=rt also checks in librt (and, if it's needed, links to it). Note that linking to librt is not always desirable because for glibc it requires linking to