[PATCH, v3] Potential solution to librt issue.
Martin Sebor
sebor@roguewave.com
Thu Jul 24 18:05:00 GMT 2008
Paolo Bonzini wrote:
>> Is that libpthread thing confirmed?
>
> Yes:
>
> $ echo 'int main() {}' > f.c
> $ gcc f.c -lrt
> $ ldd a.out
> linux-gate.so.1 => (0xffffe000)
> librt.so.1 => /lib/librt.so.1 (0xb7f4a000)
> libc.so.6 => /lib/libc.so.6 (0xb7e0c000)
> libpthread.so.0 => /lib/libpthread.so.0 (0xb7df3000)
> /lib/ld-linux.so.2 (0xb7f64000)
>
> I'm not saying it is a "no-no" to use clock_gettime -- but I guess
> you'll agree it is a "no-no" to break performance of single-threaded
> programs because of it, and it is lucky that Dan brought up the point so
> soon.
>
> Possibilities include:
>
> 1) implementing clock_gettime on Linux using the system call interface.
> I guess that the clock_gettime syscall itself does not need pthreads.
>
> 2) do some trick with specs. For example, -Wl,--as-needed -lrt does not
> bring in pthreads unless necessary:
>
> $ gcc f.c -Wl,--as-needed -lrt
> $ ldd a.out
> linux-gate.so.1 => (0xffffe000)
> libc.so.6 => /lib/libc.so.6 (0xb7da9000)
> /lib/ld-linux.so.2 (0xb7ef8000)
>
> Is <chrono> a template? If yes, i.e. if there is no code in
> libstdc++.so that needs clock_gettime, you could add the
> "-Wl,--as-needed -lrt -Wl,--no-as-needed" flags to the specs for C++ on
> Linux.
>
> Neither solution is particularly appealing to me. :-(
Would declaring a weakref for clock_gettime in libstdc++ work?
Martin
>
> In the meanwhile, can anyone check the dependencies of -lrt on other
> systems?
>
> Paolo
More information about the Libstdc++
mailing list