[1/3] nptl: Move nanosleep implementation to libc
Commit Message
Checked on x86_64-linux-gnu and powerpc64le-linux-gnu. I also
did a smoke check with check-abi on affected ABIs.
---
nptl/Makefile | 3 +--
nptl/Versions | 7 +------
sysdeps/unix/sysv/linux/aarch64/libpthread.abilist | 2 --
sysdeps/unix/sysv/linux/alpha/libpthread.abilist | 2 --
sysdeps/unix/sysv/linux/arm/be/libpthread.abilist | 2 --
sysdeps/unix/sysv/linux/arm/le/libpthread.abilist | 2 --
sysdeps/unix/sysv/linux/csky/libpthread.abilist | 2 --
sysdeps/unix/sysv/linux/hppa/libpthread.abilist | 2 --
sysdeps/unix/sysv/linux/i386/libpthread.abilist | 2 --
sysdeps/unix/sysv/linux/ia64/libpthread.abilist | 2 --
sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist | 2 --
sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist | 2 --
sysdeps/unix/sysv/linux/microblaze/be/libpthread.abilist | 2 --
sysdeps/unix/sysv/linux/microblaze/le/libpthread.abilist | 2 --
sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist | 2 --
sysdeps/unix/sysv/linux/mips/mips64/libpthread.abilist | 2 --
sysdeps/unix/sysv/linux/nios2/libpthread.abilist | 2 --
.../unix/sysv/linux/powerpc/powerpc32/libpthread.abilist | 2 --
.../sysv/linux/powerpc/powerpc64/be/libpthread.abilist | 2 --
.../sysv/linux/powerpc/powerpc64/le/libpthread.abilist | 2 --
sysdeps/unix/sysv/linux/riscv/rv64/libpthread.abilist | 2 --
sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist | 2 --
sysdeps/unix/sysv/linux/s390/s390-64/libpthread.abilist | 2 --
sysdeps/unix/sysv/linux/sh/be/libpthread.abilist | 2 --
sysdeps/unix/sysv/linux/sh/le/libpthread.abilist | 2 --
sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist | 2 --
sysdeps/unix/sysv/linux/sparc/sparc64/libpthread.abilist | 2 --
sysdeps/unix/sysv/linux/x86_64/64/libpthread.abilist | 2 --
sysdeps/unix/sysv/linux/x86_64/x32/libpthread.abilist | 2 --
time/Makefile | 1 +
30 files changed, 3 insertions(+), 62 deletions(-)
Comments
* Adhemerval Zanella:
> diff --git a/nptl/Versions b/nptl/Versions
> index adbd4fa589..92291bf49e 100644
> --- a/nptl/Versions
> +++ b/nptl/Versions
> - GLIBC_2.2.6 {
> - # Cancellation wrapper
> - __nanosleep;
> - }
Sorry, this change is not correct because it removes the GLIBC_2.2.6
symbol version. Old programs will fail to load as a result, not due to
the missing __nanosleep@@GLIBC_2.2.6 (we removed that check, and the
symbol in libc is sufficient), but due to the overall GLIBC_2.2.6 check
for libpthread. You can use __libpthread_version_placeholder as a stub
symbol to keep that version alive.
Thanks,
Florian
On 06/11/2019 10:04, Florian Weimer wrote:
> * Adhemerval Zanella:
>
>> diff --git a/nptl/Versions b/nptl/Versions
>> index adbd4fa589..92291bf49e 100644
>> --- a/nptl/Versions
>> +++ b/nptl/Versions
>
>> - GLIBC_2.2.6 {
>> - # Cancellation wrapper
>> - __nanosleep;
>> - }
>
> Sorry, this change is not correct because it removes the GLIBC_2.2.6
> symbol version. Old programs will fail to load as a result, not due to
> the missing __nanosleep@@GLIBC_2.2.6 (we removed that check, and the
> symbol in libc is sufficient), but due to the overall GLIBC_2.2.6 check
> for libpthread. You can use __libpthread_version_placeholder as a stub
> symbol to keep that version alive.
>
> Thanks,
> Florian
>
Indeed, I forgot about the absolute GLIBC_2.2.6 mark. I changed it to use
GLIBC_2.2.6 {
__libpthread_version_placeholder;
}
And added a commit message comment.
* Adhemerval Zanella:
> On 06/11/2019 10:04, Florian Weimer wrote:
>> * Adhemerval Zanella:
>>
>>> diff --git a/nptl/Versions b/nptl/Versions
>>> index adbd4fa589..92291bf49e 100644
>>> --- a/nptl/Versions
>>> +++ b/nptl/Versions
>>
>>> - GLIBC_2.2.6 {
>>> - # Cancellation wrapper
>>> - __nanosleep;
>>> - }
>>
>> Sorry, this change is not correct because it removes the GLIBC_2.2.6
>> symbol version. Old programs will fail to load as a result, not due to
>> the missing __nanosleep@@GLIBC_2.2.6 (we removed that check, and the
>> symbol in libc is sufficient), but due to the overall GLIBC_2.2.6 check
>> for libpthread. You can use __libpthread_version_placeholder as a stub
>> symbol to keep that version alive.
>>
>> Thanks,
>> Florian
>>
>
> Indeed, I forgot about the absolute GLIBC_2.2.6 mark. I changed it to use
>
> GLIBC_2.2.6 {
> __libpthread_version_placeholder;
> }
>
> And added a commit message comment.
I think you also need to update nptl/libpthread-compat.c, so that there
is actually a symbol at that version.
Thanks,
Florian
On 06/11/2019 10:24, Florian Weimer wrote:
> * Adhemerval Zanella:
>
>> On 06/11/2019 10:04, Florian Weimer wrote:
>>> * Adhemerval Zanella:
>>>
>>>> diff --git a/nptl/Versions b/nptl/Versions
>>>> index adbd4fa589..92291bf49e 100644
>>>> --- a/nptl/Versions
>>>> +++ b/nptl/Versions
>>>
>>>> - GLIBC_2.2.6 {
>>>> - # Cancellation wrapper
>>>> - __nanosleep;
>>>> - }
>>>
>>> Sorry, this change is not correct because it removes the GLIBC_2.2.6
>>> symbol version. Old programs will fail to load as a result, not due to
>>> the missing __nanosleep@@GLIBC_2.2.6 (we removed that check, and the
>>> symbol in libc is sufficient), but due to the overall GLIBC_2.2.6 check
>>> for libpthread. You can use __libpthread_version_placeholder as a stub
>>> symbol to keep that version alive.
>>>
>>> Thanks,
>>> Florian
>>>
>>
>> Indeed, I forgot about the absolute GLIBC_2.2.6 mark. I changed it to use
>>
>> GLIBC_2.2.6 {
>> __libpthread_version_placeholder;
>> }
>>
>> And added a commit message comment.
>
> I think you also need to update nptl/libpthread-compat.c, so that there
> is actually a symbol at that version.
I will check for all affected ABI, but I think there is no need. In fact
I am not sure if Joseph rationale at b289cd9db8286fa6c670104dd5dfcfc68d5d00d6
is currently true, we now need at least one absolute ABI symbol in at least
one library.
* Adhemerval Zanella:
> I will check for all affected ABI, but I think there is no need. In fact
> I am not sure if Joseph rationale at b289cd9db8286fa6c670104dd5dfcfc68d5d00d6
> is currently true, we now need at least one absolute ABI symbol in at least
> one library.
Hah, I thought I had broken the ABI test.
I don't think the symbol matters, so that part is actually true, but we
do need to check the presence of the .gnu.version_d entry in a test
because that's what the loader expects (and as discussed, we do not want
to change that, at least not for lazy binding).
Thanks,
Florian
On 06/11/2019 11:13, Florian Weimer wrote:
> * Adhemerval Zanella:
>
>> I will check for all affected ABI, but I think there is no need. In fact
>> I am not sure if Joseph rationale at b289cd9db8286fa6c670104dd5dfcfc68d5d00d6
>> is currently true, we now need at least one absolute ABI symbol in at least
>> one library.
>
> Hah, I thought I had broken the ABI test.
>
> I don't think the symbol matters, so that part is actually true, but we
> do need to check the presence of the .gnu.version_d entry in a test
> because that's what the loader expects (and as discussed, we do not want
> to change that, at least not for lazy binding).
>
> Thanks,
> Florian
>
Right, I checked the libpthread.so .gnu.version_d entries for every ABI
affected and all of them contains the required versions (including for
architectures which exports __nanosleep with a different version).
* Adhemerval Zanella:
> On 06/11/2019 11:13, Florian Weimer wrote:
>> * Adhemerval Zanella:
>>
>>> I will check for all affected ABI, but I think there is no need. In fact
>>> I am not sure if Joseph rationale at b289cd9db8286fa6c670104dd5dfcfc68d5d00d6
>>> is currently true, we now need at least one absolute ABI symbol in at least
>>> one library.
>>
>> Hah, I thought I had broken the ABI test.
>>
>> I don't think the symbol matters, so that part is actually true, but we
>> do need to check the presence of the .gnu.version_d entry in a test
>> because that's what the loader expects (and as discussed, we do not want
>> to change that, at least not for lazy binding).
>>
>> Thanks,
>> Florian
>>
>
> Right, I checked the libpthread.so .gnu.version_d entries for every ABI
> affected and all of them contains the required versions (including for
> architectures which exports __nanosleep with a different version).
Good to know, thanks.
Florian
On 06/11/2019 14:17, Florian Weimer wrote:
> * Adhemerval Zanella:
>
>> On 06/11/2019 11:13, Florian Weimer wrote:
>>> * Adhemerval Zanella:
>>>
>>>> I will check for all affected ABI, but I think there is no need. In fact
>>>> I am not sure if Joseph rationale at b289cd9db8286fa6c670104dd5dfcfc68d5d00d6
>>>> is currently true, we now need at least one absolute ABI symbol in at least
>>>> one library.
>>>
>>> Hah, I thought I had broken the ABI test.
>>>
>>> I don't think the symbol matters, so that part is actually true, but we
>>> do need to check the presence of the .gnu.version_d entry in a test
>>> because that's what the loader expects (and as discussed, we do not want
>>> to change that, at least not for lazy binding).
>>>
>>> Thanks,
>>> Florian
>>>
>>
>> Right, I checked the libpthread.so .gnu.version_d entries for every ABI
>> affected and all of them contains the required versions (including for
>> architectures which exports __nanosleep with a different version).
>
> Good to know, thanks.
>
> Florian
>
Ok with the __libpthread_version_placeholder change? As a side note I will
try to see if there is way to improve the .gnu.version_d entry with an
automated test.
* Adhemerval Zanella:
> On 06/11/2019 14:17, Florian Weimer wrote:
>> * Adhemerval Zanella:
>>
>>> On 06/11/2019 11:13, Florian Weimer wrote:
>>>> * Adhemerval Zanella:
>>>>
>>>>> I will check for all affected ABI, but I think there is no need. In fact
>>>>> I am not sure if Joseph rationale at b289cd9db8286fa6c670104dd5dfcfc68d5d00d6
>>>>> is currently true, we now need at least one absolute ABI symbol in at least
>>>>> one library.
>>>>
>>>> Hah, I thought I had broken the ABI test.
>>>>
>>>> I don't think the symbol matters, so that part is actually true, but we
>>>> do need to check the presence of the .gnu.version_d entry in a test
>>>> because that's what the loader expects (and as discussed, we do not want
>>>> to change that, at least not for lazy binding).
>>>>
>>>> Thanks,
>>>> Florian
>>>>
>>>
>>> Right, I checked the libpthread.so .gnu.version_d entries for every ABI
>>> affected and all of them contains the required versions (including for
>>> architectures which exports __nanosleep with a different version).
>>
>> Good to know, thanks.
>>
>> Florian
>>
>
> Ok with the __libpthread_version_placeholder change?
Yes, I think this is okay of the generated DSO looks reasonable.
> As a side note I will try to see if there is way to improve the
> .gnu.version_d entry with an automated test.
That would be nice!
Florian
On Wed, 6 Nov 2019, Adhemerval Zanella wrote:
> Ok with the __libpthread_version_placeholder change? As a side note I will
> try to see if there is way to improve the .gnu.version_d entry with an
> automated test.
I'm seeing nptl/check-abi-libpthread test failures on many architectures,
of the form:
+GLIBC_2.2.5 __libpthread_version_placeholder F
(i.e. missing baseline updates for the new symbol).
https://sourceware.org/ml/libc-testresults/2019-q4/msg00185.html
On 06/11/2019 22:07, Joseph Myers wrote:
> On Wed, 6 Nov 2019, Adhemerval Zanella wrote:
>
>> Ok with the __libpthread_version_placeholder change? As a side note I will
>> try to see if there is way to improve the .gnu.version_d entry with an
>> automated test.
>
> I'm seeing nptl/check-abi-libpthread test failures on many architectures,
> of the form:
>
> +GLIBC_2.2.5 __libpthread_version_placeholder F
>
> (i.e. missing baseline updates for the new symbol).
>
> https://sourceware.org/ml/libc-testresults/2019-q4/msg00185.html
>
Right, I will sort this out.
@@ -44,7 +44,7 @@ pthread-compat-wrappers = \
write read close accept \
connect recv recvfrom send \
sendto fsync lseek lseek64 \
- msync nanosleep open open64 pause \
+ msync open open64 pause \
pread pread64 pwrite pwrite64 \
tcdrain wait waitpid msgrcv msgsnd \
sigwait sigsuspend \
@@ -225,7 +225,6 @@ CFLAGS-sendmsg.c += -fexceptions -fasynchronous-unwind-tables
CFLAGS-close.c += -fexceptions -fasynchronous-unwind-tables
CFLAGS-read.c += -fexceptions -fasynchronous-unwind-tables
CFLAGS-write.c += -fexceptions -fasynchronous-unwind-tables
-CFLAGS-nanosleep.c += -fexceptions -fasynchronous-unwind-tables
CFLAGS-sigsuspend.c += -fexceptions -fasynchronous-unwind-tables
CFLAGS-msync.c += -fexceptions -fasynchronous-unwind-tables
CFLAGS-fdatasync.c += -fexceptions -fasynchronous-unwind-tables
@@ -98,7 +98,7 @@ libpthread {
# Cancellation points.
close; __close; fcntl; __fcntl; read; __read; write; __write; accept;
connect; __connect; recv; recvfrom; recvmsg; send; __send; sendmsg; sendto;
- fsync; lseek; __lseek; msync; nanosleep; open; __open; pause; tcdrain;
+ fsync; lseek; __lseek; msync; open; __open; pause; tcdrain;
system; wait; __wait; waitpid;
# Hidden entry point (through macros).
@@ -192,11 +192,6 @@ libpthread {
pthread_getattr_np;
}
- GLIBC_2.2.6 {
- # Cancellation wrapper
- __nanosleep;
- }
-
GLIBC_2.3.2 {
# Changed pthread_cond_t.
pthread_cond_init; pthread_cond_destroy;
@@ -11,7 +11,6 @@ GLIBC_2.17 __libc_allocate_rtsig F
GLIBC_2.17 __libc_current_sigrtmax F
GLIBC_2.17 __libc_current_sigrtmin F
GLIBC_2.17 __lseek F
-GLIBC_2.17 __nanosleep F
GLIBC_2.17 __open F
GLIBC_2.17 __open64 F
GLIBC_2.17 __pread64 F
@@ -64,7 +63,6 @@ GLIBC_2.17 longjmp F
GLIBC_2.17 lseek F
GLIBC_2.17 lseek64 F
GLIBC_2.17 msync F
-GLIBC_2.17 nanosleep F
GLIBC_2.17 open F
GLIBC_2.17 open64 F
GLIBC_2.17 pause F
@@ -42,7 +42,6 @@ GLIBC_2.0 funlockfile F
GLIBC_2.0 longjmp F
GLIBC_2.0 lseek F
GLIBC_2.0 msync F
-GLIBC_2.0 nanosleep F
GLIBC_2.0 open F
GLIBC_2.0 pause F
GLIBC_2.0 pthread_atfork F
@@ -193,7 +192,6 @@ GLIBC_2.2 pwrite F
GLIBC_2.2 pwrite64 F
GLIBC_2.2 sem_timedwait F
GLIBC_2.2.3 pthread_getattr_np F
-GLIBC_2.2.6 __nanosleep F
GLIBC_2.28 call_once F
GLIBC_2.28 cnd_broadcast F
GLIBC_2.28 cnd_destroy F
@@ -46,7 +46,6 @@ GLIBC_2.4 __libc_allocate_rtsig F
GLIBC_2.4 __libc_current_sigrtmax F
GLIBC_2.4 __libc_current_sigrtmin F
GLIBC_2.4 __lseek F
-GLIBC_2.4 __nanosleep F
GLIBC_2.4 __open F
GLIBC_2.4 __open64 F
GLIBC_2.4 __pread64 F
@@ -99,7 +98,6 @@ GLIBC_2.4 longjmp F
GLIBC_2.4 lseek F
GLIBC_2.4 lseek64 F
GLIBC_2.4 msync F
-GLIBC_2.4 nanosleep F
GLIBC_2.4 open F
GLIBC_2.4 open64 F
GLIBC_2.4 pause F
@@ -46,7 +46,6 @@ GLIBC_2.4 __libc_allocate_rtsig F
GLIBC_2.4 __libc_current_sigrtmax F
GLIBC_2.4 __libc_current_sigrtmin F
GLIBC_2.4 __lseek F
-GLIBC_2.4 __nanosleep F
GLIBC_2.4 __open F
GLIBC_2.4 __open64 F
GLIBC_2.4 __pread64 F
@@ -99,7 +98,6 @@ GLIBC_2.4 longjmp F
GLIBC_2.4 lseek F
GLIBC_2.4 lseek64 F
GLIBC_2.4 msync F
-GLIBC_2.4 nanosleep F
GLIBC_2.4 open F
GLIBC_2.4 open64 F
GLIBC_2.4 pause F
@@ -9,7 +9,6 @@ GLIBC_2.29 __libc_allocate_rtsig F
GLIBC_2.29 __libc_current_sigrtmax F
GLIBC_2.29 __libc_current_sigrtmin F
GLIBC_2.29 __lseek F
-GLIBC_2.29 __nanosleep F
GLIBC_2.29 __open F
GLIBC_2.29 __open64 F
GLIBC_2.29 __pread64 F
@@ -72,7 +71,6 @@ GLIBC_2.29 mtx_lock F
GLIBC_2.29 mtx_timedlock F
GLIBC_2.29 mtx_trylock F
GLIBC_2.29 mtx_unlock F
-GLIBC_2.29 nanosleep F
GLIBC_2.29 open F
GLIBC_2.29 open64 F
GLIBC_2.29 pause F
@@ -65,7 +65,6 @@ GLIBC_2.2 longjmp F
GLIBC_2.2 lseek F
GLIBC_2.2 lseek64 F
GLIBC_2.2 msync F
-GLIBC_2.2 nanosleep F
GLIBC_2.2 open F
GLIBC_2.2 open64 F
GLIBC_2.2 pause F
@@ -185,7 +184,6 @@ GLIBC_2.2 wait F
GLIBC_2.2 waitpid F
GLIBC_2.2 write F
GLIBC_2.2.3 pthread_getattr_np F
-GLIBC_2.2.6 __nanosleep F
GLIBC_2.28 call_once F
GLIBC_2.28 cnd_broadcast F
GLIBC_2.28 cnd_destroy F
@@ -42,7 +42,6 @@ GLIBC_2.0 funlockfile F
GLIBC_2.0 longjmp F
GLIBC_2.0 lseek F
GLIBC_2.0 msync F
-GLIBC_2.0 nanosleep F
GLIBC_2.0 open F
GLIBC_2.0 pause F
GLIBC_2.0 pthread_atfork F
@@ -193,7 +192,6 @@ GLIBC_2.2 pwrite F
GLIBC_2.2 pwrite64 F
GLIBC_2.2 sem_timedwait F
GLIBC_2.2.3 pthread_getattr_np F
-GLIBC_2.2.6 __nanosleep F
GLIBC_2.28 call_once F
GLIBC_2.28 cnd_broadcast F
GLIBC_2.28 cnd_destroy F
@@ -65,7 +65,6 @@ GLIBC_2.2 longjmp F
GLIBC_2.2 lseek F
GLIBC_2.2 lseek64 F
GLIBC_2.2 msync F
-GLIBC_2.2 nanosleep F
GLIBC_2.2 open F
GLIBC_2.2 open64 F
GLIBC_2.2 pause F
@@ -185,7 +184,6 @@ GLIBC_2.2 wait F
GLIBC_2.2 waitpid F
GLIBC_2.2 write F
GLIBC_2.2.3 pthread_getattr_np F
-GLIBC_2.2.6 __nanosleep F
GLIBC_2.28 call_once F
GLIBC_2.28 cnd_broadcast F
GLIBC_2.28 cnd_destroy F
@@ -46,7 +46,6 @@ GLIBC_2.4 __libc_allocate_rtsig F
GLIBC_2.4 __libc_current_sigrtmax F
GLIBC_2.4 __libc_current_sigrtmin F
GLIBC_2.4 __lseek F
-GLIBC_2.4 __nanosleep F
GLIBC_2.4 __open F
GLIBC_2.4 __open64 F
GLIBC_2.4 __pread64 F
@@ -99,7 +98,6 @@ GLIBC_2.4 longjmp F
GLIBC_2.4 lseek F
GLIBC_2.4 lseek64 F
GLIBC_2.4 msync F
-GLIBC_2.4 nanosleep F
GLIBC_2.4 open F
GLIBC_2.4 open64 F
GLIBC_2.4 pause F
@@ -42,7 +42,6 @@ GLIBC_2.0 funlockfile F
GLIBC_2.0 longjmp F
GLIBC_2.0 lseek F
GLIBC_2.0 msync F
-GLIBC_2.0 nanosleep F
GLIBC_2.0 open F
GLIBC_2.0 pause F
GLIBC_2.0 pthread_atfork F
@@ -193,7 +192,6 @@ GLIBC_2.2 pwrite F
GLIBC_2.2 pwrite64 F
GLIBC_2.2 sem_timedwait F
GLIBC_2.2.3 pthread_getattr_np F
-GLIBC_2.2.6 __nanosleep F
GLIBC_2.28 call_once F
GLIBC_2.28 cnd_broadcast F
GLIBC_2.28 cnd_destroy F
@@ -11,7 +11,6 @@ GLIBC_2.18 __libc_allocate_rtsig F
GLIBC_2.18 __libc_current_sigrtmax F
GLIBC_2.18 __libc_current_sigrtmin F
GLIBC_2.18 __lseek F
-GLIBC_2.18 __nanosleep F
GLIBC_2.18 __open F
GLIBC_2.18 __open64 F
GLIBC_2.18 __pread64 F
@@ -64,7 +63,6 @@ GLIBC_2.18 longjmp F
GLIBC_2.18 lseek F
GLIBC_2.18 lseek64 F
GLIBC_2.18 msync F
-GLIBC_2.18 nanosleep F
GLIBC_2.18 open F
GLIBC_2.18 open64 F
GLIBC_2.18 pause F
@@ -11,7 +11,6 @@ GLIBC_2.18 __libc_allocate_rtsig F
GLIBC_2.18 __libc_current_sigrtmax F
GLIBC_2.18 __libc_current_sigrtmin F
GLIBC_2.18 __lseek F
-GLIBC_2.18 __nanosleep F
GLIBC_2.18 __open F
GLIBC_2.18 __open64 F
GLIBC_2.18 __pread64 F
@@ -64,7 +63,6 @@ GLIBC_2.18 longjmp F
GLIBC_2.18 lseek F
GLIBC_2.18 lseek64 F
GLIBC_2.18 msync F
-GLIBC_2.18 nanosleep F
GLIBC_2.18 open F
GLIBC_2.18 open64 F
GLIBC_2.18 pause F
@@ -42,7 +42,6 @@ GLIBC_2.0 funlockfile F
GLIBC_2.0 longjmp F
GLIBC_2.0 lseek F
GLIBC_2.0 msync F
-GLIBC_2.0 nanosleep F
GLIBC_2.0 open F
GLIBC_2.0 pause F
GLIBC_2.0 pthread_atfork F
@@ -192,7 +191,6 @@ GLIBC_2.2 sem_trywait F
GLIBC_2.2 sem_unlink F
GLIBC_2.2 sem_wait F
GLIBC_2.2.3 pthread_getattr_np F
-GLIBC_2.2.6 __nanosleep F
GLIBC_2.28 call_once F
GLIBC_2.28 cnd_broadcast F
GLIBC_2.28 cnd_destroy F
@@ -42,7 +42,6 @@ GLIBC_2.0 funlockfile F
GLIBC_2.0 longjmp F
GLIBC_2.0 lseek F
GLIBC_2.0 msync F
-GLIBC_2.0 nanosleep F
GLIBC_2.0 open F
GLIBC_2.0 pause F
GLIBC_2.0 pthread_atfork F
@@ -192,7 +191,6 @@ GLIBC_2.2 sem_trywait F
GLIBC_2.2 sem_unlink F
GLIBC_2.2 sem_wait F
GLIBC_2.2.3 pthread_getattr_np F
-GLIBC_2.2.6 __nanosleep F
GLIBC_2.28 call_once F
GLIBC_2.28 cnd_broadcast F
GLIBC_2.28 cnd_destroy F
@@ -11,7 +11,6 @@ GLIBC_2.21 __libc_allocate_rtsig F
GLIBC_2.21 __libc_current_sigrtmax F
GLIBC_2.21 __libc_current_sigrtmin F
GLIBC_2.21 __lseek F
-GLIBC_2.21 __nanosleep F
GLIBC_2.21 __open F
GLIBC_2.21 __open64 F
GLIBC_2.21 __pread64 F
@@ -64,7 +63,6 @@ GLIBC_2.21 longjmp F
GLIBC_2.21 lseek F
GLIBC_2.21 lseek64 F
GLIBC_2.21 msync F
-GLIBC_2.21 nanosleep F
GLIBC_2.21 open F
GLIBC_2.21 open64 F
GLIBC_2.21 pause F
@@ -42,7 +42,6 @@ GLIBC_2.0 funlockfile F
GLIBC_2.0 longjmp F
GLIBC_2.0 lseek F
GLIBC_2.0 msync F
-GLIBC_2.0 nanosleep F
GLIBC_2.0 open F
GLIBC_2.0 pause F
GLIBC_2.0 pthread_atfork F
@@ -193,7 +192,6 @@ GLIBC_2.2 pwrite F
GLIBC_2.2 pwrite64 F
GLIBC_2.2 sem_timedwait F
GLIBC_2.2.3 pthread_getattr_np F
-GLIBC_2.2.6 __nanosleep F
GLIBC_2.28 call_once F
GLIBC_2.28 cnd_broadcast F
GLIBC_2.28 cnd_destroy F
@@ -40,7 +40,6 @@ GLIBC_2.3 __libc_allocate_rtsig F
GLIBC_2.3 __libc_current_sigrtmax F
GLIBC_2.3 __libc_current_sigrtmin F
GLIBC_2.3 __lseek F
-GLIBC_2.3 __nanosleep F
GLIBC_2.3 __open F
GLIBC_2.3 __open64 F
GLIBC_2.3 __pread64 F
@@ -87,7 +86,6 @@ GLIBC_2.3 longjmp F
GLIBC_2.3 lseek F
GLIBC_2.3 lseek64 F
GLIBC_2.3 msync F
-GLIBC_2.3 nanosleep F
GLIBC_2.3 open F
GLIBC_2.3 open64 F
GLIBC_2.3 pause F
@@ -11,7 +11,6 @@ GLIBC_2.17 __libc_allocate_rtsig F
GLIBC_2.17 __libc_current_sigrtmax F
GLIBC_2.17 __libc_current_sigrtmin F
GLIBC_2.17 __lseek F
-GLIBC_2.17 __nanosleep F
GLIBC_2.17 __open F
GLIBC_2.17 __open64 F
GLIBC_2.17 __pread64 F
@@ -64,7 +63,6 @@ GLIBC_2.17 longjmp F
GLIBC_2.17 lseek F
GLIBC_2.17 lseek64 F
GLIBC_2.17 msync F
-GLIBC_2.17 nanosleep F
GLIBC_2.17 open F
GLIBC_2.17 open64 F
GLIBC_2.17 pause F
@@ -10,7 +10,6 @@ GLIBC_2.27 __libc_allocate_rtsig F
GLIBC_2.27 __libc_current_sigrtmax F
GLIBC_2.27 __libc_current_sigrtmin F
GLIBC_2.27 __lseek F
-GLIBC_2.27 __nanosleep F
GLIBC_2.27 __open F
GLIBC_2.27 __open64 F
GLIBC_2.27 __pread64 F
@@ -61,7 +60,6 @@ GLIBC_2.27 funlockfile F
GLIBC_2.27 lseek F
GLIBC_2.27 lseek64 F
GLIBC_2.27 msync F
-GLIBC_2.27 nanosleep F
GLIBC_2.27 open F
GLIBC_2.27 open64 F
GLIBC_2.27 pause F
@@ -42,7 +42,6 @@ GLIBC_2.0 funlockfile F
GLIBC_2.0 longjmp F
GLIBC_2.0 lseek F
GLIBC_2.0 msync F
-GLIBC_2.0 nanosleep F
GLIBC_2.0 open F
GLIBC_2.0 pause F
GLIBC_2.0 pthread_atfork F
@@ -195,7 +194,6 @@ GLIBC_2.2 pwrite F
GLIBC_2.2 pwrite64 F
GLIBC_2.2 sem_timedwait F
GLIBC_2.2.3 pthread_getattr_np F
-GLIBC_2.2.6 __nanosleep F
GLIBC_2.28 call_once F
GLIBC_2.28 cnd_broadcast F
GLIBC_2.28 cnd_destroy F
@@ -67,7 +67,6 @@ GLIBC_2.2 longjmp F
GLIBC_2.2 lseek F
GLIBC_2.2 lseek64 F
GLIBC_2.2 msync F
-GLIBC_2.2 nanosleep F
GLIBC_2.2 open F
GLIBC_2.2 open64 F
GLIBC_2.2 pause F
@@ -187,7 +186,6 @@ GLIBC_2.2 wait F
GLIBC_2.2 waitpid F
GLIBC_2.2 write F
GLIBC_2.2.3 pthread_getattr_np F
-GLIBC_2.2.6 __nanosleep F
GLIBC_2.28 call_once F
GLIBC_2.28 cnd_broadcast F
GLIBC_2.28 cnd_destroy F
@@ -65,7 +65,6 @@ GLIBC_2.2 longjmp F
GLIBC_2.2 lseek F
GLIBC_2.2 lseek64 F
GLIBC_2.2 msync F
-GLIBC_2.2 nanosleep F
GLIBC_2.2 open F
GLIBC_2.2 open64 F
GLIBC_2.2 pause F
@@ -185,7 +184,6 @@ GLIBC_2.2 wait F
GLIBC_2.2 waitpid F
GLIBC_2.2 write F
GLIBC_2.2.3 pthread_getattr_np F
-GLIBC_2.2.6 __nanosleep F
GLIBC_2.28 call_once F
GLIBC_2.28 cnd_broadcast F
GLIBC_2.28 cnd_destroy F
@@ -65,7 +65,6 @@ GLIBC_2.2 longjmp F
GLIBC_2.2 lseek F
GLIBC_2.2 lseek64 F
GLIBC_2.2 msync F
-GLIBC_2.2 nanosleep F
GLIBC_2.2 open F
GLIBC_2.2 open64 F
GLIBC_2.2 pause F
@@ -185,7 +184,6 @@ GLIBC_2.2 wait F
GLIBC_2.2 waitpid F
GLIBC_2.2 write F
GLIBC_2.2.3 pthread_getattr_np F
-GLIBC_2.2.6 __nanosleep F
GLIBC_2.28 call_once F
GLIBC_2.28 cnd_broadcast F
GLIBC_2.28 cnd_destroy F
@@ -42,7 +42,6 @@ GLIBC_2.0 funlockfile F
GLIBC_2.0 longjmp F
GLIBC_2.0 lseek F
GLIBC_2.0 msync F
-GLIBC_2.0 nanosleep F
GLIBC_2.0 open F
GLIBC_2.0 pause F
GLIBC_2.0 pthread_atfork F
@@ -193,7 +192,6 @@ GLIBC_2.2 pwrite F
GLIBC_2.2 pwrite64 F
GLIBC_2.2 sem_timedwait F
GLIBC_2.2.3 pthread_getattr_np F
-GLIBC_2.2.6 __nanosleep F
GLIBC_2.28 call_once F
GLIBC_2.28 cnd_broadcast F
GLIBC_2.28 cnd_destroy F
@@ -65,7 +65,6 @@ GLIBC_2.2 longjmp F
GLIBC_2.2 lseek F
GLIBC_2.2 lseek64 F
GLIBC_2.2 msync F
-GLIBC_2.2 nanosleep F
GLIBC_2.2 open F
GLIBC_2.2 open64 F
GLIBC_2.2 pause F
@@ -185,7 +184,6 @@ GLIBC_2.2 wait F
GLIBC_2.2 waitpid F
GLIBC_2.2 write F
GLIBC_2.2.3 pthread_getattr_np F
-GLIBC_2.2.6 __nanosleep F
GLIBC_2.28 call_once F
GLIBC_2.28 cnd_broadcast F
GLIBC_2.28 cnd_destroy F
@@ -65,7 +65,6 @@ GLIBC_2.2.5 longjmp F
GLIBC_2.2.5 lseek F
GLIBC_2.2.5 lseek64 F
GLIBC_2.2.5 msync F
-GLIBC_2.2.5 nanosleep F
GLIBC_2.2.5 open F
GLIBC_2.2.5 open64 F
GLIBC_2.2.5 pause F
@@ -185,7 +184,6 @@ GLIBC_2.2.5 tcdrain F
GLIBC_2.2.5 wait F
GLIBC_2.2.5 waitpid F
GLIBC_2.2.5 write F
-GLIBC_2.2.6 __nanosleep F
GLIBC_2.28 call_once F
GLIBC_2.28 cnd_broadcast F
GLIBC_2.28 cnd_destroy F
@@ -11,7 +11,6 @@ GLIBC_2.16 __libc_allocate_rtsig F
GLIBC_2.16 __libc_current_sigrtmax F
GLIBC_2.16 __libc_current_sigrtmin F
GLIBC_2.16 __lseek F
-GLIBC_2.16 __nanosleep F
GLIBC_2.16 __open F
GLIBC_2.16 __open64 F
GLIBC_2.16 __pread64 F
@@ -64,7 +63,6 @@ GLIBC_2.16 longjmp F
GLIBC_2.16 lseek F
GLIBC_2.16 lseek64 F
GLIBC_2.16 msync F
-GLIBC_2.16 nanosleep F
GLIBC_2.16 open F
GLIBC_2.16 open64 F
GLIBC_2.16 pause F
@@ -73,6 +73,7 @@ CFLAGS-tzfile.c += $(tz-cflags)
CFLAGS-tzset.c += $(tz-cflags)
CFLAGS-getdate.c += -fexceptions
CFLAGS-clock_nanosleep.c += -fexceptions -fasynchronous-unwind-tables
+CFLAGS-nanosleep.c += -fexceptions -fasynchronous-unwind-tables
# Don't warn about Y2k problem in strftime format string.
CFLAGS-test_time.c += -Wno-format