Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
BZ#14743: Move clock_* symbols from librt to libc.
  • Loading branch information
Roland McGrath committed Oct 24, 2012
1 parent 0cae3f4 commit 6e6249d
Show file tree
Hide file tree
Showing 56 changed files with 385 additions and 73 deletions.
58 changes: 58 additions & 0 deletions ChangeLog
@@ -1,3 +1,61 @@
2012-10-24 Roland McGrath <roland@hack.frob.com>

* nscd/Makefile ($(objpfx)nscd): Remove librt dependency.
* posix/Makefile ($(objpfx)tst-regex, $(objpfx)tst-regex2):
Targets removed.

[BZ #14743]
* include/time.h: Remove librt_hidden_proto (clock_gettime).
Declare __clock_getres, __clock_gettime, __clock_settime,
__clock_nanosleep, and __clock_getcpuclockid.
* rt/clock_gettime.c: Define __clock_gettime as an alias.
Remove librt_hidden_def (clock_gettime).
* sysdeps/unix/clock_gettime.c: Likewise.
* rt/clock_getcpuclockid.c: Define __clock_getcpuclockid as an alias.
* sysdeps/unix/sysv/linux/clock_getcpuclockid.c: Likewise.
* rt/clock_getres.c: Define __clock_getres as an alias.
* sysdeps/posix/clock_getres.c: Likewise.
* rt/clock_settime.c: Define __clock_settime as an alias.
* sysdeps/unix/clock_settime.c: Likewise.
* rt/clock_nanosleep.c: Define __clock_nanosleep as an alias.
* sysdeps/unix/clock_nanosleep.c: Likewise.
* sysdeps/unix/sysv/linux/clock_nanosleep.c: Likewise.
* rt/clock-compat.c: New file.
* rt/Makefile (librt-routines): Add clock-compat and move
$(clock-routines) to ...
(routines): ... here, new variable.
* sysdeps/unix/sysv/linux/powerpc/Makefile (sysdep_routines):
Don't add get_clockfreq here.
* rt/Versions (libc: GLIBC_2.17): New version set.
Add clock_* symbols here.
(libc: GLIBC_PRIVATE): New version set. Add __clock_* symbols here.
* sysdeps/unix/sysv/linux/i386/nptl/libc.abilist
(GLIBC_2.17): Add clock_* symbols.
* sysdeps/unix/sysv/linux/sparc/sparc32/nptl/libc.abilist: Likewise.
* sysdeps/unix/sysv/linux/sparc/sparc64/nptl/libc.abilist: Likewise.
* sysdeps/unix/sysv/linux/sh/nptl/libc.abilist: Likewise.
* sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/libc.abilist:
Likewise.
* sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/nptl/libc.abilist:
Likewise.
* sysdeps/unix/sysv/linux/x86_64/64/nptl/libc.abilist: Likewise.
* sysdeps/unix/sysv/linux/x86_64/x32/nptl/libc.abilist: Likewise.
* sysdeps/unix/sysv/linux/s390/s390-64/nptl/libc.abilist: Likewise.
* sysdeps/unix/sysv/linux/s390/s390-32/nptl/libc.abilist: Likewise.
* NEWS: Mention the move.

* sysdeps/unix/sysv/linux/i386/get_clockfreq.c (__get_clockfreq):
Use __open, __read, __close rather than their public counterparts.
* sysdeps/unix/sysv/linux/sparc/sparc64/get_clockfreq.c
(__get_clockfreq_via_cpuinfo): Likewise.
(__get_clockfreq_via_proc_openprom): Likewise, and __getdirentries.
(__get_clockfreq_via_dev_openprom): Likewise, and __ioctl.

* config.h.in (HAVE_IFUNC): New #undef.
* configure.in: Define it if libc_cv_ld_gnu_indirect_function
was successful.
* configure: Regenerated.

2012-10-24 Mike Frysinger <vapier@gentoo.org>

* configure.in: Move READELF check to start of file.
Expand Down
12 changes: 10 additions & 2 deletions NEWS
Expand Up @@ -16,7 +16,8 @@ Version 2.17
14328, 14331, 14336, 14337, 14347, 14349, 14376, 14417, 14459, 14476,
14477, 14505, 14510, 14516, 14518, 14519, 14530, 14532, 14538, 14543,
14544, 14545, 14557, 14562, 14568, 14576, 14579, 14583, 14587, 14602,
14621, 14638, 14645, 14648, 14652, 14660, 14661, 14683, 14694, 14716.
14621, 14638, 14645, 14648, 14652, 14660, 14661, 14683, 14694, 14716,
14743.

* Support for STT_GNU_IFUNC symbols added for s390 and s390x.
Optimized versions of memcpy, memset, and memcmp added for System z10 and
Expand Down Expand Up @@ -54,6 +55,13 @@ Version 2.17
enabled, and fail on encrypted strings using the MD5 or DES algorithm
when the mode is enabled.

* The `clock_*' suite of functions (declared in <time.h>) is now available
directly in the main C library. Previously it was necessary to link with
-lrt to use these functions. This change has the effect that a
single-threaded program that uses a function such as `clock_gettime' (and
is not linked with -lrt) will no longer implicitly load the pthreads
library at runtime and so will not suffer the overheads associated with
multi-thread support in other code such as the C++ runtime library.

Version 2.16

Expand Down Expand Up @@ -81,7 +89,7 @@ Version 2.16
14043, 14044, 14048, 14049, 14050, 14053, 14055, 14059, 14064, 14075,
14080, 14083, 14103, 14104, 14109, 14112, 14117, 14122, 14123, 14134,
14153, 14183, 14188, 14199, 14210, 14218, 14229, 14241, 14273, 14277,
14278,
14278.

* Support for the x32 ABI on x86-64 added. The x32 target is selected by
configuring glibc with:
Expand Down
3 changes: 3 additions & 0 deletions config.h.in
Expand Up @@ -180,6 +180,9 @@
/* Define if the dynamic linker should consult an ld.so.cache file. */
#undef USE_LDCONFIG

/* Define if STT_GNU_IFUNC support actually works. */
#undef HAVE_IFUNC

/*
*/

Expand Down
7 changes: 7 additions & 0 deletions configure
Expand Up @@ -7456,6 +7456,13 @@ if test x$libc_cv_gcc_unwind_find_fde = xyes; then
fi


# A sysdeps configure fragment can reset this if IFUNC is not actually
# usable even though the assembler knows how to generate the symbol type.
if test x"$libc_cv_ld_gnu_indirect_function" = xyes; then
$as_echo "#define HAVE_IFUNC 1" >>confdefs.h

fi

# This is far from the AC_ARG_ENABLE that sets it so that a sysdeps
# configure fragment can override the value to prevent this AC_DEFINE.

Expand Down
6 changes: 6 additions & 0 deletions configure.in
Expand Up @@ -2123,6 +2123,12 @@ if test x$libc_cv_gcc_unwind_find_fde = xyes; then
fi
AC_SUBST(libc_cv_gcc_unwind_find_fde)

# A sysdeps configure fragment can reset this if IFUNC is not actually
# usable even though the assembler knows how to generate the symbol type.
if test x"$libc_cv_ld_gnu_indirect_function" = xyes; then
AC_DEFINE(HAVE_IFUNC)
fi

# This is far from the AC_ARG_ENABLE that sets it so that a sysdeps
# configure fragment can override the value to prevent this AC_DEFINE.
AC_SUBST(use_nscd)
Expand Down
6 changes: 5 additions & 1 deletion include/time.h
Expand Up @@ -19,7 +19,11 @@ libc_hidden_proto (localtime)
libc_hidden_proto (strftime)
libc_hidden_proto (strptime)

librt_hidden_proto (clock_gettime)
extern __typeof (clock_getres) __clock_getres;
extern __typeof (clock_gettime) __clock_gettime;
extern __typeof (clock_settime) __clock_settime;
extern __typeof (clock_nanosleep) __clock_nanosleep;
extern __typeof (clock_getcpuclockid) __clock_getcpuclockid;

/* Now define the internal interfaces. */
struct tm;
Expand Down
7 changes: 7 additions & 0 deletions nptl/ChangeLog
@@ -1,3 +1,10 @@
2012-10-24 Roland McGrath <roland@hack.frob.com>

* Makefile ($(objpfx)tst-cond11, $(objpfx)tst-cond19): Targets removed.
($(objpfx)tst-sem5, $(objpfx)tst-cancel18): Likewise.
((objpfx)tst-cancelx18, $(objpfx)tst-clock2): Likewise.
($(objpfx)tst-rwlock14): Likewise.

2012-10-24 Joseph Myers <joseph@codesourcery.com>

* Makefile (tests): Remove tst-oddstacklimit.
Expand Down
27 changes: 7 additions & 20 deletions nptl/Makefile
Expand Up @@ -484,31 +484,18 @@ $(objpfx)tst-dlsym1: $(libdl) $(shared-thread-library)
$(objpfx)tst-fini1: $(shared-thread-library) $(objpfx)tst-fini1mod.so

ifeq (yes,$(build-shared))
$(objpfx)tst-cond11: $(common-objpfx)rt/librt.so
$(objpfx)tst-cond19: $(common-objpfx)rt/librt.so
$(objpfx)tst-sem5: $(common-objpfx)rt/librt.so
$(objpfx)tst-cancel17: $(common-objpfx)rt/librt.so
$(objpfx)tst-cancelx17: $(common-objpfx)rt/librt.so
$(objpfx)tst-cancel18: $(common-objpfx)rt/librt.so
$(objpfx)tst-cancelx18: $(common-objpfx)rt/librt.so
$(objpfx)tst-clock2: $(common-objpfx)rt/librt.so
$(objpfx)tst-rwlock14: $(common-objpfx)rt/librt.so
librt = $(common-objpfx)rt/librt.so
else
librt = $(common-objpfx)rt/librt.a
endif

$(objpfx)tst-cancel17: $(librt)
$(objpfx)tst-cancelx17: $(librt)
$(objpfx)tst-_res1mod2.so: $(objpfx)tst-_res1mod1.so
LDFLAGS-tst-_res1mod1.so = -Wl,-soname,tst-_res1mod1.so
LDFLAGS-tst-_res1mod2.so = -Wl,-soname,tst-_res1mod2.so
$(objpfx)tst-_res1: $(objpfx)tst-_res1mod1.so $(objpfx)tst-_res1mod2.so \
$(shared-thread-library)
else
$(objpfx)tst-cond11: $(common-objpfx)rt/librt.a
$(objpfx)tst-cond19: $(common-objpfx)rt/librt.a
$(objpfx)tst-sem5: $(common-objpfx)rt/librt.a
$(objpfx)tst-cancel17: $(common-objpfx)rt/librt.a
$(objpfx)tst-cancelx17: $(common-objpfx)rt/librt.a
$(objpfx)tst-cancel18: $(common-objpfx)rt/librt.a
$(objpfx)tst-cancelx18: $(common-objpfx)rt/librt.a
$(objpfx)tst-clock2: $(common-objpfx)rt/librt.a
$(objpfx)tst-rwlock14: $(common-objpfx)rt/librt.a
endif

LDLIBS-tst-cancel24 = $(no-as-needed) -lstdc++
LDLIBS-tst-cancel24-static = $(LDLIBS-tst-cancel24)
Expand Down
6 changes: 2 additions & 4 deletions nscd/Makefile
Expand Up @@ -101,9 +101,7 @@ include $(patsubst %,$(..)cppflags-iterator.mk,$(cpp-srcs-left))
$(objpfx)nscd: $(nscd-modules:%=$(objpfx)%.o)

ifeq ($(build-shared),yes)
$(objpfx)nscd: $(common-objpfx)rt/librt.so $(shared-thread-library) \
$(common-objpfx)nis/libnsl.so
$(objpfx)nscd: $(shared-thread-library) $(common-objpfx)nis/libnsl.so
else
$(objpfx)nscd: $(common-objpfx)rt/librt.a $(static-thread-library) \
$(common-objpfx)nis/libnsl.a
$(objpfx)nscd: $(static-thread-library) $(common-objpfx)nis/libnsl.a
endif
5 changes: 5 additions & 0 deletions ports/ChangeLog.alpha
@@ -1,3 +1,8 @@
2012-10-19 Roland McGrath <roland@hack.frob.com>

* sysdeps/unix/sysv/linux/alpha/nptl/libc.abilist
(GLIBC_2.17): Add clock_* symbols.

2012-10-09 Roland McGrath <roland@hack.frob.com>

* sysdeps/alpha/configure: Regenerated.
Expand Down
5 changes: 5 additions & 0 deletions ports/ChangeLog.arm
@@ -1,3 +1,8 @@
2012-10-22 Roland McGrath <roland@hack.frob.com>

* sysdeps/unix/sysv/linux/arm/nptl/libc.abilist
(GLIBC_2.17): Add clock_* symbols.

2012-10-22 Andreas Jaeger <aj@suse.de>

* ports/sysdeps/unix/sysv/linux/arm/bits/fcntl.h (__O_LARGEFILE):
Expand Down
8 changes: 8 additions & 0 deletions ports/ChangeLog.ia64
@@ -1,3 +1,11 @@
2012-10-19 Roland McGrath <roland@hack.frob.com>

* sysdeps/unix/sysv/linux/ia64/nptl/libc.abilist
(GLIBC_2.17): Add clock_* symbols.

* sysdeps/unix/sysv/linux/ia64/get_clockfreq.c (__get_clockfreq):
Use __open, __read, __close rather than their public counterparts.

2012-10-09 Roland McGrath <roland@hack.frob.com>

* sysdeps/ia64/configure: Regenerated.
Expand Down
6 changes: 6 additions & 0 deletions ports/ChangeLog.m68k
@@ -1,3 +1,9 @@
2012-10-19 Roland McGrath <roland@hack.frob.com>

* sysdeps/unix/sysv/linux/m68k/coldfire/nptl/libc.abilist:
(GLIBC_2.17): Add clock_* symbols.
* sysdeps/unix/sysv/linux/m68k/m680x0/nptl/libc.abilist: Likewise.

2012-10-02 Siddhesh Poyarekar <siddhesh@redhat.com>

* sysdeps/unix/sysv/linux/m68k/nptl/lowlevellock.h: Fix clone
Expand Down
6 changes: 6 additions & 0 deletions ports/ChangeLog.mips
@@ -1,3 +1,9 @@
2012-10-19 Roland McGrath <roland@hack.frob.com>

* sysdeps/unix/sysv/linux/mips/mips32/nptl/libc.abilist
(GLIBC_2.17): Add clock_* symbols.
* sysdeps/unix/sysv/linux/mips/mips64/n64/nptl/libc.abilist: Likewise.

2012-10-24 Andreas Jaeger <aj@suse.de>

* sysdeps/unix/sysv/linux/mips/bits/fcntl.h: Remove all
Expand Down
7 changes: 6 additions & 1 deletion ports/ChangeLog.powerpc
@@ -1,3 +1,8 @@
2012-10-19 Roland McGrath <roland@hack.frob.com>

* sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/nptl/libc.abilist
(GLIBC_2.17): Add clock_* symbols.

2012-09-26 Joseph Myers <joseph@codesourcery.com>

* sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/nptl/libc.abilist:
Expand Down Expand Up @@ -180,7 +185,7 @@
* sysdeps/powerpc/nofpu/Makefile
[subdirs-soft-fp] (sysdep_routines): Remove gcc-quad-routines.
[subdirs-math] (CPPFLAGS): Add -I../soft-fp.
[subdirs-math] (CFLAGS-e_powl.c): Add -fno-builtin-fabsl.
[subdirs-math] (CFLAGS-e_powl.c): Add -fno-builtin-fabsl.
[subdirs-math] (CFLAGS-s_ccoshl.c): Likewise.
[subdirs-math] (CFLAGS-s_csinhl.c): Likewise.
[subdirs-math] (CFLAGS-s_clogl.c): Likewise.
Expand Down
9 changes: 9 additions & 0 deletions ports/ChangeLog.tile
@@ -1,3 +1,12 @@
2012-10-19 Roland McGrath <roland@hack.frob.com>

* sysdeps/unix/sysv/linux/tile/tilepro/nptl/libc.abilist:
(GLIBC_2.17): Add clock_* symbols.
* sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/nptl/libc.abilist:
Likewise.
* sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/nptl/libc.abilist:
Likewise.

2012-10-11 Chris Metcalf <cmetcalf@tilera.com>

* sysdeps/unix/sysv/linux/tile/tilegx/sched_getcpu.c: New file.
Expand Down
5 changes: 5 additions & 0 deletions ports/sysdeps/unix/sysv/linux/alpha/nptl/libc.abilist
Expand Up @@ -1813,6 +1813,11 @@ GLIBC_2.16
timespec_get F
GLIBC_2.17
GLIBC_2.17 A
clock_getcpuclockid F
clock_getres F
clock_gettime F
clock_nanosleep F
clock_settime F
secure_getenv F
GLIBC_2.2
GLIBC_2.2 A
Expand Down
5 changes: 5 additions & 0 deletions ports/sysdeps/unix/sysv/linux/arm/nptl/libc.abilist
Expand Up @@ -80,6 +80,11 @@ GLIBC_2.16
timespec_get F
GLIBC_2.17
GLIBC_2.17 A
clock_getcpuclockid F
clock_getres F
clock_gettime F
clock_nanosleep F
clock_settime F
secure_getenv F
GLIBC_2.4
GLIBC_2.4 A
Expand Down
8 changes: 4 additions & 4 deletions ports/sysdeps/unix/sysv/linux/ia64/get_clockfreq.c
@@ -1,5 +1,5 @@
/* Get frequency of the system processor. IA-64/Linux version.
Copyright (C) 2001 Free Software Foundation, Inc.
Copyright (C) 2001-2012 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
Expand Down Expand Up @@ -37,15 +37,15 @@ __get_clockfreq (void)
if (result != 0)
return result;

fd = open ("/proc/cpuinfo", O_RDONLY);
fd = __open ("/proc/cpuinfo", O_RDONLY);
if (__builtin_expect (fd != -1, 1))
{
/* XXX AFAIK the /proc filesystem can generate "files" only up
to a size of 4096 bytes. */
char buf[4096];
ssize_t n;

n = read (fd, buf, sizeof buf);
n = __read (fd, buf, sizeof buf);
if (__builtin_expect (n, 1) > 0)
{
char *mhz = memmem (buf, n, "itc MHz", 7);
Expand Down Expand Up @@ -81,7 +81,7 @@ __get_clockfreq (void)
}
}

close (fd);
__close (fd);
}

return result;
Expand Down
5 changes: 5 additions & 0 deletions ports/sysdeps/unix/sysv/linux/ia64/nptl/libc.abilist
Expand Up @@ -80,6 +80,11 @@ GLIBC_2.16
timespec_get F
GLIBC_2.17
GLIBC_2.17 A
clock_getcpuclockid F
clock_getres F
clock_gettime F
clock_nanosleep F
clock_settime F
secure_getenv F
GLIBC_2.2
GLIBC_2.2 A
Expand Down
5 changes: 5 additions & 0 deletions ports/sysdeps/unix/sysv/linux/m68k/coldfire/nptl/libc.abilist
Expand Up @@ -81,6 +81,11 @@ GLIBC_2.16
timespec_get F
GLIBC_2.17
GLIBC_2.17 A
clock_getcpuclockid F
clock_getres F
clock_gettime F
clock_nanosleep F
clock_settime F
secure_getenv F
GLIBC_2.4
GLIBC_2.4 A
Expand Down
5 changes: 5 additions & 0 deletions ports/sysdeps/unix/sysv/linux/m68k/m680x0/nptl/libc.abilist
Expand Up @@ -1769,6 +1769,11 @@ GLIBC_2.16
timespec_get F
GLIBC_2.17
GLIBC_2.17 A
clock_getcpuclockid F
clock_getres F
clock_gettime F
clock_nanosleep F
clock_settime F
secure_getenv F
GLIBC_2.2
GLIBC_2.2 A
Expand Down
5 changes: 5 additions & 0 deletions ports/sysdeps/unix/sysv/linux/mips/mips32/nptl/libc.abilist
Expand Up @@ -2244,4 +2244,9 @@ _gp_disp
_gp_disp A
GLIBC_2.17
GLIBC_2.17 A
clock_getcpuclockid F
clock_getres F
clock_gettime F
clock_nanosleep F
clock_settime F
secure_getenv F

0 comments on commit 6e6249d

Please sign in to comment.