diff mbox series

ada: c++: Get rid of libposix4, librt on Solaris

Message ID yddr1oswc16.fsf@CeBiTec.Uni-Bielefeld.DE
State New
Headers show
Series ada: c++: Get rid of libposix4, librt on Solaris | expand

Commit Message

Rainer Orth Nov. 17, 2020, 9:47 a.m. UTC
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

Comments

Arnaud Charlet Nov. 17, 2020, 10:22 a.m. UTC | #1
> 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?

The Ada part is OK, thanks.

> 2020-11-16  Rainer Orth  <ro@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.
Jonathan Wakely Nov. 17, 2020, 1:18 p.m. UTC | #2
On 17/11/20 10:47 +0100, Rainer Orth wrote:
>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).

RHEL 7 uses glibc 2.17, so it will still be in use for some time.


>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.

"The latter" was referring to libposix4, and we always link to libc,
so "if needed" doesn't apply to it.

So I think it should be:

  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.



>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

Similarly, the whole "In case it's needed the latter is also linked to
libstdc++ as part of the build process." sentence should be removed. It
only applied to libposix4.

> 	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

The libstdc++ part is OK with those adjustments. Thanks for doing
this, it's really helpful to trim these checks so the unnecessary
parts don't hang around indefinitely.
Rainer Orth Nov. 17, 2020, 1:25 p.m. UTC | #3
Hi Jonathan,

>>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).
>
> RHEL 7 uses glibc 2.17, so it will still be in use for some time.

but at least the comments say < 2.17, so RHEL 7 wouldn't be affected.

>>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.
>
> "The latter" was referring to libposix4, and we always link to libc,
> so "if needed" doesn't apply to it.
>
> So I think it should be:
>
>  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.
>
>
>
>>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
>
> Similarly, the whole "In case it's needed the latter is also linked to
> libstdc++ as part of the build process." sentence should be removed. It
> only applied to libposix4.

Good catch: I've been too mechanical in my updates.  Btw., can you take
care of regenerating the html files there?

>> 	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
>
> The libstdc++ part is OK with those adjustments. Thanks for doing
> this, it's really helpful to trim these checks so the unnecessary
> parts don't hang around indefinitely.

My pleasure: they are easy enough to miss, unfortunately, since the are
seldom labeled with `for OS version X.Y' or some such.  E.g. we still
have a libexc test in gcc/configure.in, which was only added for Tru64
UNIX, I believe (unless Linux/alpha needs it, too).

	Rainer
Jonathan Wakely Nov. 17, 2020, 1:38 p.m. UTC | #4
On 17/11/20 14:25 +0100, Rainer Orth wrote:
>Hi Jonathan,
>
>>>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).
>>
>> RHEL 7 uses glibc 2.17, so it will still be in use for some time.
>
>but at least the comments say < 2.17, so RHEL 7 wouldn't be affected.

Ah right, sorry, I read too quickly. Yes, < 2.17 probably isn't very
relevant now, although historically libstdc++ has not explicitly
dropped support older glibc versions. If it builds, then it builds.

We could consider doing some housekeeping in that area, or just
documenting our requirements more carefully (for example, we now
require Linux kernel version 2.6.22 for the FUTEX_PRIVATE_FLAG but I
don't think we say that anywhere).

>>>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.
>>
>> "The latter" was referring to libposix4, and we always link to libc,
>> so "if needed" doesn't apply to it.
>>
>> So I think it should be:
>>
>>  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.
>>
>>
>>
>>>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
>>
>> Similarly, the whole "In case it's needed the latter is also linked to
>> libstdc++ as part of the build process." sentence should be removed. It
>> only applied to libposix4.
>
>Good catch: I've been too mechanical in my updates.  Btw., can you take
>care of regenerating the html files there?

Yes, no problem.

>>> 	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
>>
>> The libstdc++ part is OK with those adjustments. Thanks for doing
>> this, it's really helpful to trim these checks so the unnecessary
>> parts don't hang around indefinitely.
>
>My pleasure: they are easy enough to miss, unfortunately, since the are
>seldom labeled with `for OS version X.Y' or some such.  E.g. we still
>have a libexc test in gcc/configure.in, which was only added for Tru64
>UNIX, I believe (unless Linux/alpha needs it, too).

Do we even have anybody still using alpha?
Rainer Orth Nov. 17, 2020, 1:49 p.m. UTC | #5
Hi Jonathan,

>>>>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).
>>>
>>> RHEL 7 uses glibc 2.17, so it will still be in use for some time.
>>
>>but at least the comments say < 2.17, so RHEL 7 wouldn't be affected.
>
> Ah right, sorry, I read too quickly. Yes, < 2.17 probably isn't very
> relevant now, although historically libstdc++ has not explicitly
> dropped support older glibc versions. If it builds, then it builds.
>
> We could consider doing some housekeeping in that area, or just
> documenting our requirements more carefully (for example, we now
> require Linux kernel version 2.6.22 for the FUTEX_PRIVATE_FLAG but I
> don't think we say that anywhere).

that would certainly help, if only to set user expectations.  When
e.g. I tried to get any info from the LLVM community which macOS
versions were supposed to be still supported, it was like pulling teeth
and in the end got me nothing.  Not a particularly pleasant experience.
We should be able to do better than that.

>>> The libstdc++ part is OK with those adjustments. Thanks for doing
>>> this, it's really helpful to trim these checks so the unnecessary
>>> parts don't hang around indefinitely.
>>
>>My pleasure: they are easy enough to miss, unfortunately, since the are
>>seldom labeled with `for OS version X.Y' or some such.  E.g. we still
>>have a libexc test in gcc/configure.in, which was only added for Tru64
>>UNIX, I believe (unless Linux/alpha needs it, too).
>
> Do we even have anybody still using alpha?

I have no idea: I donated my last alpha systems to some sort of computer
museum years ago once I had removed Tru64 UNIX support.  There are always
some enthusiasts around, some of which clamour for keeping their pet
target around a bit longer ;-)

	Rainer
diff mbox series

Patch

# 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