[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Commits] r20182 - in /fsf/trunk/libc: ./ bits/ elf/ inet/ nptl/ nptl/sysdeps/unix/sysv/linux/ nptl/sysdeps/unix/sysv/linux/i386/i486/...
- To: commits@xxxxxxxxxx
- Subject: [Commits] r20182 - in /fsf/trunk/libc: ./ bits/ elf/ inet/ nptl/ nptl/sysdeps/unix/sysv/linux/ nptl/sysdeps/unix/sysv/linux/i386/i486/...
- From: eglibc@xxxxxxxxxx
- Date: Fri, 17 Aug 2012 00:01:46 -0000
Author: eglibc
Date: Fri Aug 17 00:01:45 2012
New Revision: 20182
Log:
Import glibc-mainline for 2012-08-17
Modified:
fsf/trunk/libc/ChangeLog
fsf/trunk/libc/bits/libc-lock.h
fsf/trunk/libc/elf/dl-load.c
fsf/trunk/libc/elf/dl-sym.c
fsf/trunk/libc/inet/getnetgrent_r.c
fsf/trunk/libc/inet/netgroup.h
fsf/trunk/libc/nptl/ChangeLog
fsf/trunk/libc/nptl/pthread_cond_timedwait.c
fsf/trunk/libc/nptl/pthread_condattr_setclock.c
fsf/trunk/libc/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S
fsf/trunk/libc/nptl/sysdeps/unix/sysv/linux/pthread_getcpuclockid.c
fsf/trunk/libc/nptl/sysdeps/unix/sysv/linux/sh/pthread_cond_timedwait.S
fsf/trunk/libc/nptl/sysdeps/unix/sysv/linux/timer_create.c
fsf/trunk/libc/nptl/sysdeps/unix/sysv/linux/timer_delete.c
fsf/trunk/libc/nptl/sysdeps/unix/sysv/linux/timer_getoverr.c
fsf/trunk/libc/nptl/sysdeps/unix/sysv/linux/timer_gettime.c
fsf/trunk/libc/nptl/sysdeps/unix/sysv/linux/timer_routines.c
fsf/trunk/libc/nptl/sysdeps/unix/sysv/linux/timer_settime.c
fsf/trunk/libc/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S
fsf/trunk/libc/ports/ChangeLog.alpha
fsf/trunk/libc/ports/ChangeLog.ia64
fsf/trunk/libc/ports/ChangeLog.mips
fsf/trunk/libc/ports/sysdeps/alpha/ldsodefs.h
fsf/trunk/libc/ports/sysdeps/ia64/ldsodefs.h
fsf/trunk/libc/ports/sysdeps/mips/ldsodefs.h
fsf/trunk/libc/stdio-common/_itoa.c
fsf/trunk/libc/stdio-common/_itowa.c
fsf/trunk/libc/stdlib/divmod_1.c
fsf/trunk/libc/stdlib/gmp-impl.h
fsf/trunk/libc/stdlib/longlong.h
fsf/trunk/libc/stdlib/mod_1.c
fsf/trunk/libc/sysdeps/sh/ldsodefs.h
fsf/trunk/libc/sysdeps/sparc/ldsodefs.h
fsf/trunk/libc/sysdeps/unix/sysv/linux/clock_getcpuclockid.c
fsf/trunk/libc/sysdeps/unix/sysv/linux/clock_getres.c
fsf/trunk/libc/sysdeps/unix/sysv/linux/clock_gettime.c
fsf/trunk/libc/sysdeps/unix/sysv/linux/clock_nanosleep.c
fsf/trunk/libc/sysdeps/unix/sysv/linux/clock_settime.c
fsf/trunk/libc/sysdeps/unix/sysv/linux/kernel-features.h
Modified: fsf/trunk/libc/ChangeLog
==============================================================================
--- fsf/trunk/libc/ChangeLog (original)
+++ fsf/trunk/libc/ChangeLog Fri Aug 17 00:01:45 2012
@@ -1,4 +1,70 @@
+2012-08-16 Roland McGrath <roland@xxxxxxxxxxxxx>
+
+ * inet/getnetgrent_r.c (internal_setnetgrent): Renamed to ...
+ (__internal_setnetgrent): ... this. Add internal_function to
+ definition. Add libc_hidden_def.
+ (setnetgrent): Update caller.
+ (internal_endnetgrent): Renamed to ...
+ (__internal_endnetgrent): ... this. Add internal_function to
+ definition. Add libc_hidden_def.
+ (endnetgrent): Update caller.
+ (internal_getnetgrent_r): Renamed to ...
+ (__internal_getnetgrent_r): ... this. Add internal_function to
+ definition. Add libc_hidden_def.
+ (__getnetgrent_r): Update caller.
+ * inet/netgroup.h: Update declarations. Add libc_hidden_proto uses.
+
+2012-08-16 Joseph Myers <joseph@xxxxxxxxxxxxxxxx>
+
+ * stdlib/longlong.h: Update from GCC.
+
+2012-08-16 Roland McGrath <roland@xxxxxxxxxxxxx>
+
+ * stdlib/gmp-impl.h (udiv_qrnnd_preinv): Use __attribute__ ((unused))
+ on _QL, which is set by umul_ppmm but never used.
+ * stdio-common/_itoa.c (_itoa): Use __attribute__ ((unused)) on DUMMY
+ variables, which are set by GMP macros but never used.
+ * stdio-common/_itowa.c (_itowa): Likewise.
+ * stdlib/divmod_1.c (mpn_divmod_1): Likewise.
+ * stdlib/mod_1.c (mpn_mod_1): Likewise.
+
+2012-08-16 Carlos O'Donell <carlos_odonell@xxxxxxxxxx>
+
+ * sysdeps/sh/ldsodefs.h (ARCH_PLTENTER_MEMBERS) <sh_gnu_pltenter>:
+ struct La_sh_regs is not constant.
+ * sysdeps/sparc/ldsodefs.h (ARCH_PLTENTER_MEMBERS)
+ <sparc32_gnu_pltenter, sparc64_gnu_pltenter>: struct La_sparc32_regs
+ and struct La_sparc64_regs are not constant.
+
+2012-08-16 Joseph Myers <joseph@xxxxxxxxxxxxxxxx>
+
+ * sysdeps/unix/sysv/linux/kernel-features.h
+ (__ASSUME_POSIX_TIMERS): Remove.
+ * sysdeps/unix/sysv/linux/clock_getcpuclockid.c
+ [!__ASSUME_POSIX_TIMERS]: Remove conditional code.
+ * sysdeps/unix/sysv/linux/clock_getres.c [__ASSUME_POSIX_TIMERS]:
+ Make code unconditional.
+ [!__ASSUME_POSIX_TIMERS]: Remove conditional code.
+ * sysdeps/unix/sysv/linux/clock_gettime.c [__ASSUME_POSIX_TIMERS]:
+ Make code unconditional.
+ [!__ASSUME_POSIX_TIMERS]: Remove conditional code.
+ * sysdeps/unix/sysv/linux/clock_nanosleep.c
+ [__ASSUME_POSIX_TIMERS]: Make code unconditional.
+ [!__ASSUME_POSIX_TIMERS]: Remove conditional code.
+ * sysdeps/unix/sysv/linux/clock_settime.c [__ASSUME_POSIX_TIMERS]:
+ Make code unconditional.
+ [!__ASSUME_POSIX_TIMERS]: Remove conditional code.
+ [__ASSUME_POSIX_CPU_TIMERS <= 0 && __NR_clock_settime]
+ (__libc_missing_posix_timers): Remove.
+
2012-08-15 Roland McGrath <roland@xxxxxxxxxxxxx>
+
+ * elf/dl-load.c (_dl_map_object_from_fd) [SHARED]: Conditionalize
+ check of GL(dl_error_catch_tsd) on [_LIBC_REENTRANT].
+
+ * bits/libc-lock.h (__rtld_lock_initialize): New macro.
+
+ * elf/dl-sym.c: Include <stdlib.h>.
* posix/regcomp.c (init_word_char): Use temporaries to hold the 64-bit
constants, which avoids warnings in 32-bit builds.
Modified: fsf/trunk/libc/bits/libc-lock.h
==============================================================================
--- fsf/trunk/libc/bits/libc-lock.h (original)
+++ fsf/trunk/libc/bits/libc-lock.h Fri Aug 17 00:01:45 2012
@@ -44,6 +44,7 @@
/* Initialize the named lock variable, leaving it in a consistent, unlocked
state. */
#define __libc_lock_init(NAME)
+#define __rtld_lock_initialize(NAME)
#define __libc_rwlock_init(NAME)
/* Same as last but this time we initialize a recursive mutex. */
Modified: fsf/trunk/libc/elf/dl-load.c
==============================================================================
--- fsf/trunk/libc/elf/dl-load.c (original)
+++ fsf/trunk/libc/elf/dl-load.c Fri Aug 17 00:01:45 2012
@@ -1194,9 +1194,11 @@
was executed directly. The setup will happen later. */
break;
+# ifdef _LIBC_REENTRANT
/* In a static binary there is no way to tell if we dynamically
loaded libpthread. */
if (GL(dl_error_catch_tsd) == &_dl_initial_error_catch_tsd)
+# endif
#endif
{
/* We have not yet loaded libpthread.
Modified: fsf/trunk/libc/elf/dl-sym.c
==============================================================================
--- fsf/trunk/libc/elf/dl-sym.c (original)
+++ fsf/trunk/libc/elf/dl-sym.c Fri Aug 17 00:01:45 2012
@@ -1,5 +1,5 @@
/* Look up a symbol in a shared object loaded by `dlopen'.
- Copyright (C) 1999-2002,2004,2006,2007,2009 Free Software Foundation, Inc.
+ Copyright (C) 1999-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
@@ -19,6 +19,7 @@
#include <assert.h>
#include <stddef.h>
#include <setjmp.h>
+#include <stdlib.h>
#include <libintl.h>
#include <dlfcn.h>
Modified: fsf/trunk/libc/inet/getnetgrent_r.c
==============================================================================
--- fsf/trunk/libc/inet/getnetgrent_r.c (original)
+++ fsf/trunk/libc/inet/getnetgrent_r.c Fri Aug 17 00:01:45 2012
@@ -171,19 +171,16 @@
return status == NSS_STATUS_SUCCESS;
}
-int internal_setnetgrent (const char *group, struct __netgrent *datap);
-libc_hidden_proto (internal_setnetgrent)
-
int
-internal_setnetgrent (const char *group, struct __netgrent *datap)
+internal_function
+__internal_setnetgrent (const char *group, struct __netgrent *datap)
{
/* Free list of all netgroup names from last run. */
free_memory (datap);
return __internal_setnetgrent_reuse (group, datap, &errno);
}
-libc_hidden_def (internal_setnetgrent)
-strong_alias (internal_setnetgrent, __internal_setnetgrent)
+libc_hidden_def (__internal_setnetgrent)
int
setnetgrent (const char *group)
@@ -204,7 +201,7 @@
goto out;
}
- result = internal_setnetgrent (group, &dataset);
+ result = __internal_setnetgrent (group, &dataset);
out:
__libc_lock_unlock (lock);
@@ -212,18 +209,15 @@
return result;
}
-void internal_endnetgrent (struct __netgrent *datap);
-libc_hidden_proto (internal_endnetgrent)
-
void
-internal_endnetgrent (struct __netgrent *datap)
+internal_function
+__internal_endnetgrent (struct __netgrent *datap)
{
endnetgrent_hook (datap);
/* Now free list of all netgroup names from last run. */
free_memory (datap);
}
-libc_hidden_def (internal_endnetgrent)
-strong_alias (internal_endnetgrent, __internal_endnetgrent)
+libc_hidden_def (__internal_endnetgrent)
void
@@ -231,16 +225,10 @@
{
__libc_lock_lock (lock);
- internal_endnetgrent (&dataset);
+ __internal_endnetgrent (&dataset);
__libc_lock_unlock (lock);
}
-
-
-int internal_getnetgrent_r (char **hostp, char **userp, char **domainp,
- struct __netgrent *datap,
- char *buffer, size_t buflen, int *errnop);
-libc_hidden_proto (internal_getnetgrent_r)
static enum nss_status
@@ -263,7 +251,8 @@
int
-internal_getnetgrent_r (char **hostp, char **userp, char **domainp,
+internal_function
+__internal_getnetgrent_r (char **hostp, char **userp, char **domainp,
struct __netgrent *datap,
char *buffer, size_t buflen, int *errnop)
{
@@ -361,8 +350,7 @@
return status == NSS_STATUS_SUCCESS ? 1 : 0;
}
-libc_hidden_def (internal_getnetgrent_r)
-strong_alias (internal_getnetgrent_r, __internal_getnetgrent_r)
+libc_hidden_def (__internal_getnetgrent_r)
/* The real entry point. */
int
@@ -373,8 +361,8 @@
__libc_lock_lock (lock);
- status = internal_getnetgrent_r (hostp, userp, domainp, &dataset,
- buffer, buflen, &errno);
+ status = __internal_getnetgrent_r (hostp, userp, domainp, &dataset,
+ buffer, buflen, &errno);
__libc_lock_unlock (lock);
Modified: fsf/trunk/libc/inet/netgroup.h
==============================================================================
--- fsf/trunk/libc/inet/netgroup.h (original)
+++ fsf/trunk/libc/inet/netgroup.h Fri Aug 17 00:01:45 2012
@@ -1,5 +1,5 @@
/* Internal header for netgroup related functions.
- Copyright (C) 1996, 1997, 2004 Free Software Foundation, Inc.
+ Copyright (C) 1996-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
@@ -70,10 +70,16 @@
/* The internal netgroup handling functions might be called from outside. */
extern int __internal_setnetgrent (const char *group,
- struct __netgrent *datap);
-extern void __internal_endnetgrent (struct __netgrent *datap);
+ struct __netgrent *datap)
+ internal_function;
+libc_hidden_proto (__internal_setnetgrent)
+extern void __internal_endnetgrent (struct __netgrent *datap)
+ internal_function;
+libc_hidden_proto (__internal_endnetgrent)
extern int __internal_getnetgrent_r (char **hostp, char **userp,
char **domainp, struct __netgrent *datap,
- char *buffer, size_t buflen, int *errnop);
+ char *buffer, size_t buflen, int *errnop)
+ internal_function;
+libc_hidden_proto (__internal_getnetgrent_r)
#endif /* netgroup.h */
Modified: fsf/trunk/libc/nptl/ChangeLog
==============================================================================
--- fsf/trunk/libc/nptl/ChangeLog (original)
+++ fsf/trunk/libc/nptl/ChangeLog Fri Aug 17 00:01:45 2012
@@ -1,3 +1,42 @@
+2012-08-16 Joseph Myers <joseph@xxxxxxxxxxxxxxxx>
+
+ * pthread_cond_timedwait.c (__pthread_cond_timedwait)
+ [!__ASSUME_POSIX_TIMERS]: Remove conditional code.
+ * pthread_condattr_setclock.c (pthread_condattr_setclock)
+ [!__ASSUME_POSIX_TIMERS]: Likewise.
+ * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S
+ (__pthread_cond_timedwait) [!__ASSUME_POSIX_TIMERS]: Likewise.
+ * sysdeps/unix/sysv/linux/pthread_getcpuclockid.c
+ [!__ASSUME_POSIX_TIMERS]: Likewise.
+ * sysdeps/unix/sysv/linux/sh/pthread_cond_timedwait.S
+ (__pthread_cond_timedwait) [!__ASSUME_POSIX_TIMERS]: Likewise.
+ * sysdeps/unix/sysv/linux/timer_create.c [__NR_timer_create]: Make
+ code unconditional.
+ [!__NR-timer_create]: Remove conditional code.
+ (timer_create) [!__ASSUME_POSIX_TIMERS]: Likewise.
+ * sysdeps/unix/sysv/linux/timer_delete.c [__NR_timer_delete]: Make
+ code unconditional.
+ [!__NR_timer_delete]: Remove conditional code.
+ (timer_delete) [!__ASSUME_POSIX_TIMERS]: Likewise.
+ * sysdeps/unix/sysv/linux/timer_getoverr.c
+ [__NR_timer_getoverrun]: Make code unconditional.
+ [!__NR_timer_getoverrun]: Remove conditional code.
+ (timer_getoverrun) [!__ASSUME_POSIX_TIMERS]: Likewise.
+ * sysdeps/unix/sysv/linux/timer_gettime.c [__NR_timer_gettime]:
+ Make code unconditional.
+ [!__NR_timer_gettime]: Remove conditional code.
+ (timer_gettime) [!__ASSUME_POSIX_TIMERS]: Likewise.
+ * sysdeps/unix/sysv/linux/timer_routines.c [__NR_timer_create]:
+ Make code unconditional.
+ [!__ASSUME_POSIX_TIMERS]: Remove conditional code.
+ * sysdeps/unix/sysv/linux/timer_settime.c [__NR_timer_settime]:
+ Make code unconditional.
+ [!__NR_timer_settime]: Remove conditional code.
+ (timer_settime) [!__ASSUME_POSIX_TIMERS]: Likewise.
+ * sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S
+ (__pthread_cond_timedwait) [!__ASSUME_POSIX_TIMERS]: Remove
+ conditional code.
+
2012-08-15 Tom de Vries <vries@xxxxxxxxxxxxxxxx>
Maxim Kuvyrkov <maxim@xxxxxxxxxxxxxxxx>
Modified: fsf/trunk/libc/nptl/pthread_cond_timedwait.c
==============================================================================
--- fsf/trunk/libc/nptl/pthread_cond_timedwait.c (original)
+++ fsf/trunk/libc/nptl/pthread_cond_timedwait.c Fri Aug 17 00:01:45 2012
@@ -1,4 +1,4 @@
-/* Copyright (C) 2003,2004,2007,2010,2011 Free Software Foundation, Inc.
+/* Copyright (C) 2003-2012 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Martin Schwidefsky <schwidefsky@xxxxxxxxxx>, 2003.
@@ -113,23 +113,9 @@
(cond->__data.__nwaiters
& ((1 << COND_NWAITERS_SHIFT) - 1)),
&rt);
-# ifndef __ASSUME_POSIX_TIMERS
- if (__builtin_expect (INTERNAL_SYSCALL_ERROR_P (ret, err), 0))
- {
- struct timeval tv;
- (void) gettimeofday (&tv, NULL);
-
- /* Convert the absolute timeout value to a relative timeout. */
- rt.tv_sec = abstime->tv_sec - tv.tv_sec;
- rt.tv_nsec = abstime->tv_nsec - tv.tv_usec * 1000;
- }
- else
-# endif
- {
- /* Convert the absolute timeout value to a relative timeout. */
- rt.tv_sec = abstime->tv_sec - rt.tv_sec;
- rt.tv_nsec = abstime->tv_nsec - rt.tv_nsec;
- }
+ /* Convert the absolute timeout value to a relative timeout. */
+ rt.tv_sec = abstime->tv_sec - rt.tv_sec;
+ rt.tv_nsec = abstime->tv_nsec - rt.tv_nsec;
#else
/* Get the current time. So far we support only one clock. */
struct timeval tv;
Modified: fsf/trunk/libc/nptl/pthread_condattr_setclock.c
==============================================================================
--- fsf/trunk/libc/nptl/pthread_condattr_setclock.c (original)
+++ fsf/trunk/libc/nptl/pthread_condattr_setclock.c Fri Aug 17 00:01:45 2012
@@ -1,4 +1,4 @@
-/* Copyright (C) 2003, 2004, 2007, 2008 Free Software Foundation, Inc.
+/* Copyright (C) 2003-2012 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@xxxxxxxxxx>, 2003.
@@ -30,32 +30,8 @@
pthread_condattr_t *attr;
clockid_t clock_id;
{
- /* Only a few clocks are allowed. CLOCK_REALTIME is always allowed.
- CLOCK_MONOTONIC only if the kernel has the necessary support. */
- if (clock_id == CLOCK_MONOTONIC)
- {
-#ifndef __ASSUME_POSIX_TIMERS
-# ifdef __NR_clock_getres
- /* Check whether the clock is available. */
- static int avail;
-
- if (avail == 0)
- {
- struct timespec ts;
-
- INTERNAL_SYSCALL_DECL (err);
- int val;
- val = INTERNAL_SYSCALL (clock_getres, err, 2, CLOCK_MONOTONIC, &ts);
- avail = INTERNAL_SYSCALL_ERROR_P (val, err) ? -1 : 1;
- }
-
- if (avail < 0)
-# endif
- /* Not available. */
- return EINVAL;
-#endif
- }
- else if (clock_id != CLOCK_REALTIME)
+ /* Only a few clocks are allowed. */
+ if (clock_id != CLOCK_MONOTONIC && clock_id != CLOCK_REALTIME)
/* If more clocks are allowed some day the storing of the clock ID
in the pthread_cond_t structure needs to be adjusted. */
return EINVAL;
Modified: fsf/trunk/libc/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S
==============================================================================
--- fsf/trunk/libc/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S (original)
+++ fsf/trunk/libc/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S Fri Aug 17 00:01:45 2012
@@ -122,10 +122,6 @@
leal 4(%esp), %ecx
movl $__NR_clock_gettime, %eax
ENTER_KERNEL
-# ifndef __ASSUME_POSIX_TIMERS
- cmpl $-ENOSYS, %eax
- je 19f
-# endif
movl %edx, %ebx
/* Compute relative timeout. */
@@ -482,30 +478,6 @@
call __lll_unlock_wake
jmp 11b
-#if defined __NR_clock_gettime && !defined __ASSUME_POSIX_TIMERS
- /* clock_gettime not available. */
-19: leal 4(%esp), %ebx
- xorl %ecx, %ecx
- movl $__NR_gettimeofday, %eax
- ENTER_KERNEL
- movl %edx, %ebx
-
- /* Compute relative timeout. */
- movl 8(%esp), %eax
- movl $1000, %edx
- mul %edx /* Milli seconds to nano seconds. */
- movl (%ebp), %ecx
- movl 4(%ebp), %edx
- subl 4(%esp), %ecx
- subl %eax, %edx
- jns 20f
- addl $1000000000, %edx
- subl $1, %ecx
-20: testl %ecx, %ecx
- movl $-ETIMEDOUT, %esi
- js 6b
- jmp 21b
-#endif
.size __pthread_cond_timedwait, .-__pthread_cond_timedwait
versioned_symbol (libpthread, __pthread_cond_timedwait, pthread_cond_timedwait,
GLIBC_2_3_2)
Modified: fsf/trunk/libc/nptl/sysdeps/unix/sysv/linux/pthread_getcpuclockid.c
==============================================================================
--- fsf/trunk/libc/nptl/sysdeps/unix/sysv/linux/pthread_getcpuclockid.c (original)
+++ fsf/trunk/libc/nptl/sysdeps/unix/sysv/linux/pthread_getcpuclockid.c Fri Aug 17 00:01:45 2012
@@ -1,5 +1,5 @@
/* pthread_getcpuclockid -- Get POSIX clockid_t for a pthread_t. Linux version
- Copyright (C) 2000,2001,2002,2003,2004,2005 Free Software Foundation, Inc.
+ Copyright (C) 2000-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
@@ -27,9 +27,6 @@
#if !(__ASSUME_POSIX_CPU_TIMERS > 0)
int __libc_missing_posix_cpu_timers attribute_hidden;
#endif
-#if !(__ASSUME_POSIX_TIMERS > 0)
-int __libc_missing_posix_timers attribute_hidden;
-#endif
int
pthread_getcpuclockid (threadid, clockid)
@@ -51,10 +48,6 @@
const clockid_t tidclock = MAKE_THREAD_CPUCLOCK (pd->tid, CPUCLOCK_SCHED);
# if !(__ASSUME_POSIX_CPU_TIMERS > 0)
-# if !(__ASSUME_POSIX_TIMERS > 0)
- if (__libc_missing_posix_timers && !__libc_missing_posix_cpu_timers)
- __libc_missing_posix_cpu_timers = 1;
-# endif
if (!__libc_missing_posix_cpu_timers)
{
INTERNAL_SYSCALL_DECL (err);
@@ -67,20 +60,11 @@
}
# if !(__ASSUME_POSIX_CPU_TIMERS > 0)
-# if !(__ASSUME_POSIX_TIMERS > 0)
- if (INTERNAL_SYSCALL_ERRNO (r, err) == ENOSYS)
+ if (INTERNAL_SYSCALL_ERRNO (r, err) == EINVAL)
{
- /* The kernel doesn't support these calls at all. */
- __libc_missing_posix_timers = 1;
+ /* The kernel doesn't support these clocks at all. */
__libc_missing_posix_cpu_timers = 1;
}
- else
-# endif
- if (INTERNAL_SYSCALL_ERRNO (r, err) == EINVAL)
- {
- /* The kernel doesn't support these clocks at all. */
- __libc_missing_posix_cpu_timers = 1;
- }
else
return INTERNAL_SYSCALL_ERRNO (r, err);
}
Modified: fsf/trunk/libc/nptl/sysdeps/unix/sysv/linux/sh/pthread_cond_timedwait.S
==============================================================================
--- fsf/trunk/libc/nptl/sysdeps/unix/sysv/linux/sh/pthread_cond_timedwait.S (original)
+++ fsf/trunk/libc/nptl/sysdeps/unix/sysv/linux/sh/pthread_cond_timedwait.S Fri Aug 17 00:01:45 2012
@@ -158,10 +158,6 @@
mov.w .L__NR_clock_gettime, r3
trapa #0x12
SYSCALL_INST_PAD
-# ifndef __ASSUME_POSIX_TIMERS
- cmp/eq #-ENOSYS, r0
- bt 19f
-# endif
/* Compute relative timeout. */
mov.l @r13, r2
@@ -172,24 +168,6 @@
.L__NR_clock_gettime:
.word __NR_clock_gettime
-# ifndef __ASSUME_POSIX_TIMERS
-19:
- mov r15, r4
- add #16, r4
- mov #0, r5
- mov #__NR_gettimeofday, r3
- trapa #0x12
- SYSCALL_INST_PAD
-
- /* Compute relative timeout. */
- mov.l @(20,r15), r0
- mov.w .L1k, r1
- dmulu.l r0, r1 /* Micro seconds to nano seconds. */
- mov.l @r13, r2
- mov.l @(4,r13), r3
- mov.l @(16,r15), r0
- sts macl, r1
-#endif
0:
#else
mov r15, r4
Modified: fsf/trunk/libc/nptl/sysdeps/unix/sysv/linux/timer_create.c
==============================================================================
--- fsf/trunk/libc/nptl/sysdeps/unix/sysv/linux/timer_create.c (original)
+++ fsf/trunk/libc/nptl/sysdeps/unix/sysv/linux/timer_create.c Fri Aug 17 00:01:45 2012
@@ -1,4 +1,4 @@
-/* Copyright (C) 2003,2004, 2007, 2009 Free Software Foundation, Inc.
+/* Copyright (C) 2003-2012 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@xxxxxxxxxx>, 2003.
@@ -30,21 +30,9 @@
#include "kernel-posix-cpu-timers.h"
-#ifdef __NR_timer_create
-# ifndef __ASSUME_POSIX_TIMERS
-static int compat_timer_create (clockid_t clock_id, struct sigevent *evp,
- timer_t *timerid);
-# define timer_create static compat_timer_create
-# include <nptl/sysdeps/pthread/timer_create.c>
-# undef timer_create
-
-/* Nonzero if the system calls are not available. */
-int __no_posix_timers attribute_hidden;
-# endif
-
-# ifdef timer_create_alias
-# define timer_create timer_create_alias
-# endif
+#ifdef timer_create_alias
+# define timer_create timer_create_alias
+#endif
int
@@ -53,190 +41,140 @@
struct sigevent *evp;
timer_t *timerid;
{
-# undef timer_create
-# ifndef __ASSUME_POSIX_TIMERS
- if (__no_posix_timers >= 0)
-# endif
- {
- clockid_t syscall_clockid = (clock_id == CLOCK_PROCESS_CPUTIME_ID
- ? MAKE_PROCESS_CPUCLOCK (0, CPUCLOCK_SCHED)
- : clock_id == CLOCK_THREAD_CPUTIME_ID
- ? MAKE_THREAD_CPUCLOCK (0, CPUCLOCK_SCHED)
- : clock_id);
+#undef timer_create
+ {
+ clockid_t syscall_clockid = (clock_id == CLOCK_PROCESS_CPUTIME_ID
+ ? MAKE_PROCESS_CPUCLOCK (0, CPUCLOCK_SCHED)
+ : clock_id == CLOCK_THREAD_CPUTIME_ID
+ ? MAKE_THREAD_CPUCLOCK (0, CPUCLOCK_SCHED)
+ : clock_id);
- /* If the user wants notification via a thread we need to handle
- this special. */
- if (evp == NULL
- || __builtin_expect (evp->sigev_notify != SIGEV_THREAD, 1))
- {
- struct sigevent local_evp;
+ /* If the user wants notification via a thread we need to handle
+ this special. */
+ if (evp == NULL
+ || __builtin_expect (evp->sigev_notify != SIGEV_THREAD, 1))
+ {
+ struct sigevent local_evp;
- /* We avoid allocating too much memory by basically
- using struct timer as a derived class with the
- first two elements being in the superclass. We only
- need these two elements here. */
- struct timer *newp = (struct timer *) malloc (offsetof (struct timer,
- thrfunc));
- if (newp == NULL)
- /* No more memory. */
+ /* We avoid allocating too much memory by basically
+ using struct timer as a derived class with the
+ first two elements being in the superclass. We only
+ need these two elements here. */
+ struct timer *newp = (struct timer *) malloc (offsetof (struct timer,
+ thrfunc));
+ if (newp == NULL)
+ /* No more memory. */
+ return -1;
+
+ if (evp == NULL)
+ {
+ /* The kernel has to pass up the timer ID which is a
+ userlevel object. Therefore we cannot leave it up to
+ the kernel to determine it. */
+ local_evp.sigev_notify = SIGEV_SIGNAL;
+ local_evp.sigev_signo = SIGALRM;
+ local_evp.sigev_value.sival_ptr = newp;
+
+ evp = &local_evp;
+ }
+
+ kernel_timer_t ktimerid;
+ int retval = INLINE_SYSCALL (timer_create, 3, syscall_clockid, evp,
+ &ktimerid);
+
+ if (retval != -1)
+ {
+ newp->sigev_notify = (evp != NULL
+ ? evp->sigev_notify : SIGEV_SIGNAL);
+ newp->ktimerid = ktimerid;
+
+ *timerid = (timer_t) newp;
+ }
+ else
+ {
+ /* Cannot allocate the timer, fail. */
+ free (newp);
+ retval = -1;
+ }
+
+ return retval;
+ }
+ else
+ {
+ /* Create the helper thread. */
+ pthread_once (&__helper_once, __start_helper_thread);
+ if (__helper_tid == 0)
+ {
+ /* No resources to start the helper thread. */
+ __set_errno (EAGAIN);
return -1;
+ }
- if (evp == NULL)
- {
- /* The kernel has to pass up the timer ID which is a
- userlevel object. Therefore we cannot leave it up to
- the kernel to determine it. */
- local_evp.sigev_notify = SIGEV_SIGNAL;
- local_evp.sigev_signo = SIGALRM;
- local_evp.sigev_value.sival_ptr = newp;
+ struct timer *newp;
+ newp = (struct timer *) malloc (sizeof (struct timer));
+ if (newp == NULL)
+ return -1;
- evp = &local_evp;
- }
+ /* Copy the thread parameters the user provided. */
+ newp->sival = evp->sigev_value;
+ newp->thrfunc = evp->sigev_notify_function;
+ newp->sigev_notify = SIGEV_THREAD;
- kernel_timer_t ktimerid;
- int retval = INLINE_SYSCALL (timer_create, 3, syscall_clockid, evp,
- &ktimerid);
+ /* We cannot simply copy the thread attributes since the
+ implementation might keep internal information for
+ each instance. */
+ (void) pthread_attr_init (&newp->attr);
+ if (evp->sigev_notify_attributes != NULL)
+ {
+ struct pthread_attr *nattr;
+ struct pthread_attr *oattr;
-# ifndef __ASSUME_POSIX_TIMERS
- if (retval != -1 || errno != ENOSYS)
-# endif
- {
-# ifndef __ASSUME_POSIX_TIMERS
- __no_posix_timers = 1;
-# endif
+ nattr = (struct pthread_attr *) &newp->attr;
+ oattr = (struct pthread_attr *) evp->sigev_notify_attributes;
- if (retval != -1)
- {
- newp->sigev_notify = (evp != NULL
- ? evp->sigev_notify : SIGEV_SIGNAL);
- newp->ktimerid = ktimerid;
+ nattr->schedparam = oattr->schedparam;
+ nattr->schedpolicy = oattr->schedpolicy;
+ nattr->flags = oattr->flags;
+ nattr->guardsize = oattr->guardsize;
+ nattr->stackaddr = oattr->stackaddr;
+ nattr->stacksize = oattr->stacksize;
+ }
- *timerid = (timer_t) newp;
- }
- else
- {
- /* Cannot allocate the timer, fail. */
- free (newp);
- retval = -1;
- }
+ /* In any case set the detach flag. */
+ (void) pthread_attr_setdetachstate (&newp->attr,
+ PTHREAD_CREATE_DETACHED);
- return retval;
- }
+ /* Create the event structure for the kernel timer. */
+ struct sigevent sev =
+ { .sigev_value.sival_ptr = newp,
+ .sigev_signo = SIGTIMER,
+ .sigev_notify = SIGEV_SIGNAL | SIGEV_THREAD_ID,
+ ._sigev_un = { ._pad = { [0] = __helper_tid } } };
- free (newp);
+ /* Create the timer. */
+ INTERNAL_SYSCALL_DECL (err);
+ int res;
+ res = INTERNAL_SYSCALL (timer_create, err, 3,
+ syscall_clockid, &sev, &newp->ktimerid);
+ if (! INTERNAL_SYSCALL_ERROR_P (res, err))
+ {
+ /* Add to the queue of active timers with thread
+ delivery. */
+ pthread_mutex_lock (&__active_timer_sigev_thread_lock);
+ newp->next = __active_timer_sigev_thread;
+ __active_timer_sigev_thread = newp;
+ pthread_mutex_unlock (&__active_timer_sigev_thread_lock);
-# ifndef __ASSUME_POSIX_TIMERS
- /* When we come here the syscall does not exist. Make sure we
- do not try to use it again. */
- __no_posix_timers = -1;
-# endif
- }
- else
- {
-# ifndef __ASSUME_POSIX_TIMERS
- /* Make sure we have the necessary kernel support. */
- if (__no_posix_timers == 0)
- {
- INTERNAL_SYSCALL_DECL (err);
- struct timespec ts;
- int res;
- res = INTERNAL_SYSCALL (clock_getres, err, 2,
- CLOCK_REALTIME, &ts);
- __no_posix_timers = (INTERNAL_SYSCALL_ERROR_P (res, err)
- ? -1 : 1);
- }
+ *timerid = (timer_t) newp;
+ return 0;
+ }
- if (__no_posix_timers > 0)
-# endif
- {
- /* Create the helper thread. */
- pthread_once (&__helper_once, __start_helper_thread);
- if (__helper_tid == 0)
- {
- /* No resources to start the helper thread. */
- __set_errno (EAGAIN);
- return -1;
- }
+ /* Free the resources. */
+ free (newp);
- struct timer *newp;
- newp = (struct timer *) malloc (sizeof (struct timer));
- if (newp == NULL)
- return -1;
+ __set_errno (INTERNAL_SYSCALL_ERRNO (res, err));
- /* Copy the thread parameters the user provided. */
- newp->sival = evp->sigev_value;
- newp->thrfunc = evp->sigev_notify_function;
- newp->sigev_notify = SIGEV_THREAD;
-
- /* We cannot simply copy the thread attributes since the
- implementation might keep internal information for
- each instance. */
- (void) pthread_attr_init (&newp->attr);
- if (evp->sigev_notify_attributes != NULL)
- {
- struct pthread_attr *nattr;
- struct pthread_attr *oattr;
-
- nattr = (struct pthread_attr *) &newp->attr;
- oattr = (struct pthread_attr *) evp->sigev_notify_attributes;
-
- nattr->schedparam = oattr->schedparam;
- nattr->schedpolicy = oattr->schedpolicy;
- nattr->flags = oattr->flags;
- nattr->guardsize = oattr->guardsize;
- nattr->stackaddr = oattr->stackaddr;
- nattr->stacksize = oattr->stacksize;
- }
-
- /* In any case set the detach flag. */
- (void) pthread_attr_setdetachstate (&newp->attr,
- PTHREAD_CREATE_DETACHED);
-
- /* Create the event structure for the kernel timer. */
- struct sigevent sev =
- { .sigev_value.sival_ptr = newp,
- .sigev_signo = SIGTIMER,
- .sigev_notify = SIGEV_SIGNAL | SIGEV_THREAD_ID,
- ._sigev_un = { ._pad = { [0] = __helper_tid } } };
-
- /* Create the timer. */
- INTERNAL_SYSCALL_DECL (err);
- int res;
- res = INTERNAL_SYSCALL (timer_create, err, 3,
- syscall_clockid, &sev, &newp->ktimerid);
- if (! INTERNAL_SYSCALL_ERROR_P (res, err))
- {
- /* Add to the queue of active timers with thread
- delivery. */
- pthread_mutex_lock (&__active_timer_sigev_thread_lock);
- newp->next = __active_timer_sigev_thread;
- __active_timer_sigev_thread = newp;
- pthread_mutex_unlock (&__active_timer_sigev_thread_lock);
-
- *timerid = (timer_t) newp;
- return 0;
- }
-
- /* Free the resources. */
- free (newp);
-
- __set_errno (INTERNAL_SYSCALL_ERRNO (res, err));
-
- return -1;
- }
- }
- }
-
-# ifndef __ASSUME_POSIX_TIMERS
- /* Compatibility code. */
- return compat_timer_create (clock_id, evp, timerid);
-# endif
+ return -1;
+ }
+ }
}
-#else
-# ifdef timer_create_alias
-# define timer_create timer_create_alias
-# endif
-/* The new system calls are not available. Use the userlevel
- implementation. */
-# include <nptl/sysdeps/pthread/timer_create.c>
-#endif
Modified: fsf/trunk/libc/nptl/sysdeps/unix/sysv/linux/timer_delete.c
==============================================================================
--- fsf/trunk/libc/nptl/sysdeps/unix/sysv/linux/timer_delete.c (original)
+++ fsf/trunk/libc/nptl/sysdeps/unix/sysv/linux/timer_delete.c Fri Aug 17 00:01:45 2012
@@ -1,4 +1,4 @@
-/* Copyright (C) 2003, 2007 Free Software Foundation, Inc.
+/* Copyright (C) 2003-2012 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@xxxxxxxxxx>, 2003.
@@ -24,91 +24,51 @@
#include "kernel-posix-timers.h"
-#ifdef __NR_timer_delete
-# ifndef __ASSUME_POSIX_TIMERS
-static int compat_timer_delete (timer_t timerid);
-# define timer_delete static compat_timer_delete
-# include <nptl/sysdeps/pthread/timer_delete.c>
-# undef timer_delete
-# endif
-
-# ifdef timer_delete_alias
-# define timer_delete timer_delete_alias
-# endif
+#ifdef timer_delete_alias
+# define timer_delete timer_delete_alias
+#endif
int
timer_delete (timerid)
timer_t timerid;
{
-# undef timer_delete
-# ifndef __ASSUME_POSIX_TIMERS
- if (__no_posix_timers >= 0)
-# endif
+#undef timer_delete
+ struct timer *kt = (struct timer *) timerid;
+
+ /* Delete the kernel timer object. */
+ int res = INLINE_SYSCALL (timer_delete, 1, kt->ktimerid);
+
+ if (res == 0)
{
- struct timer *kt = (struct timer *) timerid;
-
- /* Delete the kernel timer object. */
- int res = INLINE_SYSCALL (timer_delete, 1, kt->ktimerid);
-
- if (res == 0)
+ if (kt->sigev_notify == SIGEV_THREAD)
{
- if (kt->sigev_notify == SIGEV_THREAD)
+ /* Remove the timer from the list. */
+ pthread_mutex_lock (&__active_timer_sigev_thread_lock);
+ if (__active_timer_sigev_thread == kt)
+ __active_timer_sigev_thread = kt->next;
+ else
{
- /* Remove the timer from the list. */
- pthread_mutex_lock (&__active_timer_sigev_thread_lock);
- if (__active_timer_sigev_thread == kt)
- __active_timer_sigev_thread = kt->next;
- else
- {
- struct timer *prevp = __active_timer_sigev_thread;
- while (prevp->next != NULL)
- if (prevp->next == kt)
- {
- prevp->next = kt->next;
- break;
- }
- else
- prevp = prevp->next;
- }
- pthread_mutex_unlock (&__active_timer_sigev_thread_lock);
+ struct timer *prevp = __active_timer_sigev_thread;
+ while (prevp->next != NULL)
+ if (prevp->next == kt)
+ {
+ prevp->next = kt->next;
+ break;
+ }
+ else
+ prevp = prevp->next;
}
-
-# ifndef __ASSUME_POSIX_TIMERS
- /* We know the syscall support is available. */
- __no_posix_timers = 1;
-# endif
-
- /* Free the memory. */
- (void) free (kt);
-
- return 0;
+ pthread_mutex_unlock (&__active_timer_sigev_thread_lock);
}
- /* The kernel timer is not known or something else bad happened.
- Return the error. */
-# ifndef __ASSUME_POSIX_TIMERS
- if (errno != ENOSYS)
- {
- __no_posix_timers = 1;
-# endif
- return -1;
-# ifndef __ASSUME_POSIX_TIMERS
- }
+ /* Free the memory. */
+ (void) free (kt);
- __no_posix_timers = -1;
-# endif
+ return 0;
}
-# ifndef __ASSUME_POSIX_TIMERS
- return compat_timer_delete (timerid);
-# endif
+ /* The kernel timer is not known or something else bad happened.
+ Return the error. */
+ return -1;
}
-#else
-# ifdef timer_delete_alias
-# define timer_delete timer_delete_alias
-# endif
-/* The new system calls are not available. Use the userlevel
- implementation. */
-# include <nptl/sysdeps/pthread/timer_delete.c>
-#endif
Modified: fsf/trunk/libc/nptl/sysdeps/unix/sysv/linux/timer_getoverr.c
==============================================================================
--- fsf/trunk/libc/nptl/sysdeps/unix/sysv/linux/timer_getoverr.c (original)
+++ fsf/trunk/libc/nptl/sysdeps/unix/sysv/linux/timer_getoverr.c Fri Aug 17 00:01:45 2012
@@ -1,4 +1,4 @@
-/* Copyright (C) 2003 Free Software Foundation, Inc.
+/* Copyright (C) 2003-2012 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@xxxxxxxxxx>, 2003.
@@ -23,58 +23,20 @@
#include "kernel-posix-timers.h"
-#ifdef __NR_timer_getoverrun
-# ifndef __ASSUME_POSIX_TIMERS
-static int compat_timer_getoverrun (timer_t timerid);
-# define timer_getoverrun static compat_timer_getoverrun
-# include <nptl/sysdeps/pthread/timer_getoverr.c>
-# undef timer_getoverrun
-# endif
-
-# ifdef timer_getoverrun_alias
-# define timer_getoverrun timer_getoverrun_alias
-# endif
+#ifdef timer_getoverrun_alias
+# define timer_getoverrun timer_getoverrun_alias
+#endif
int
timer_getoverrun (timerid)
timer_t timerid;
{
-# undef timer_getoverrun
-# ifndef __ASSUME_POSIX_TIMERS
- if (__no_posix_timers >= 0)
-# endif
- {
- struct timer *kt = (struct timer *) timerid;
+#undef timer_getoverrun
+ struct timer *kt = (struct timer *) timerid;
- /* Get the information from the kernel. */
- int res = INLINE_SYSCALL (timer_getoverrun, 1, kt->ktimerid);
+ /* Get the information from the kernel. */
+ int res = INLINE_SYSCALL (timer_getoverrun, 1, kt->ktimerid);
-# ifndef __ASSUME_POSIX_TIMERS
- if (res != -1 || errno != ENOSYS)
- {
- /* We know the syscall support is available. */
- __no_posix_timers = 1;
-# endif
- return res;
-# ifndef __ASSUME_POSIX_TIMERS
- }
-# endif
-
-# ifndef __ASSUME_POSIX_TIMERS
- __no_posix_timers = -1;
-# endif
- }
-
-# ifndef __ASSUME_POSIX_TIMERS
- return compat_timer_getoverrun (timerid);
-# endif
+ return res;
}
-#else
-# ifdef timer_getoverrun_alias
-# define timer_getoverrun timer_getoverrun_alias
-# endif
-/* The new system calls are not available. Use the userlevel
- implementation. */
-# include <nptl/sysdeps/pthread/timer_getoverr.c>
-#endif
Modified: fsf/trunk/libc/nptl/sysdeps/unix/sysv/linux/timer_gettime.c
==============================================================================
--- fsf/trunk/libc/nptl/sysdeps/unix/sysv/linux/timer_gettime.c (original)
+++ fsf/trunk/libc/nptl/sysdeps/unix/sysv/linux/timer_gettime.c Fri Aug 17 00:01:45 2012
@@ -1,4 +1,4 @@
-/* Copyright (C) 2003 Free Software Foundation, Inc.
+/* Copyright (C) 2003-2012 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@xxxxxxxxxx>, 2003.
@@ -24,17 +24,9 @@
#include "kernel-posix-timers.h"
-#ifdef __NR_timer_gettime
-# ifndef __ASSUME_POSIX_TIMERS
-static int compat_timer_gettime (timer_t timerid, struct itimerspec *value);
-# define timer_gettime static compat_timer_gettime
-# include <nptl/sysdeps/pthread/timer_gettime.c>
-# undef timer_gettime
-# endif
-
-# ifdef timer_gettime_alias
-# define timer_gettime timer_gettime_alias
-# endif
+#ifdef timer_gettime_alias
+# define timer_gettime timer_gettime_alias
+#endif
int
@@ -42,41 +34,11 @@
timer_t timerid;
struct itimerspec *value;
{
-# undef timer_gettime
-# ifndef __ASSUME_POSIX_TIMERS
- if (__no_posix_timers >= 0)
-# endif
- {
- struct timer *kt = (struct timer *) timerid;
+#undef timer_gettime
+ struct timer *kt = (struct timer *) timerid;
- /* Delete the kernel timer object. */
- int res = INLINE_SYSCALL (timer_gettime, 2, kt->ktimerid, value);
+ /* Delete the kernel timer object. */
+ int res = INLINE_SYSCALL (timer_gettime, 2, kt->ktimerid, value);
-# ifndef __ASSUME_POSIX_TIMERS
- if (res != -1 || errno != ENOSYS)
- {
- /* We know the syscall support is available. */
- __no_posix_timers = 1;
-# endif
- return res;
-# ifndef __ASSUME_POSIX_TIMERS
- }
-# endif
-
-# ifndef __ASSUME_POSIX_TIMERS
- __no_posix_timers = -1;
-# endif
- }
-
-# ifndef __ASSUME_POSIX_TIMERS
- return compat_timer_gettime (timerid, value);
-# endif
+ return res;
}
-#else
-# ifdef timer_gettime_alias
-# define timer_gettime timer_gettime_alias
-# endif
-/* The new system calls are not available. Use the userlevel
- implementation. */
-# include <nptl/sysdeps/pthread/timer_gettime.c>
-#endif
Modified: fsf/trunk/libc/nptl/sysdeps/unix/sysv/linux/timer_routines.c
==============================================================================
--- fsf/trunk/libc/nptl/sysdeps/unix/sysv/linux/timer_routines.c (original)
+++ fsf/trunk/libc/nptl/sysdeps/unix/sysv/linux/timer_routines.c Fri Aug 17 00:01:45 2012
@@ -1,4 +1,4 @@
-/* Copyright (C) 2003-2007, 2011 Free Software Foundation, Inc.
+/* Copyright (C) 2003-2012 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@xxxxxxxxxx>, 2003.
@@ -39,7 +39,6 @@
};
-#ifdef __NR_timer_create
/* Helper thread to call the user-provided function. */
static void *
timer_sigev_thread (void *arg)
@@ -196,8 +195,3 @@
be created. */
pthread_atfork (NULL, NULL, reset_helper_control);
}
-#endif
-
-#ifndef __ASSUME_POSIX_TIMERS
-# include <nptl/sysdeps/pthread/timer_routines.c>
-#endif
Modified: fsf/trunk/libc/nptl/sysdeps/unix/sysv/linux/timer_settime.c
==============================================================================
--- fsf/trunk/libc/nptl/sysdeps/unix/sysv/linux/timer_settime.c (original)
+++ fsf/trunk/libc/nptl/sysdeps/unix/sysv/linux/timer_settime.c Fri Aug 17 00:01:45 2012
@@ -1,4 +1,4 @@
-/* Copyright (C) 2003 Free Software Foundation, Inc.
+/* Copyright (C) 2003-2012 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@xxxxxxxxxx>, 2003.
@@ -24,19 +24,9 @@
#include "kernel-posix-timers.h"
-#ifdef __NR_timer_settime
-# ifndef __ASSUME_POSIX_TIMERS
-static int compat_timer_settime (timer_t timerid, int flags,
- const struct itimerspec *value,
- struct itimerspec *ovalue);
-# define timer_settime static compat_timer_settime
-# include <nptl/sysdeps/pthread/timer_settime.c>
-# undef timer_settime
-# endif
-
-# ifdef timer_settime_alias
-# define timer_settime timer_settime_alias
-# endif
+#ifdef timer_settime_alias
+# define timer_settime timer_settime_alias
+#endif
int
@@ -46,42 +36,12 @@
const struct itimerspec *value;
struct itimerspec *ovalue;
{
-# undef timer_settime
-# ifndef __ASSUME_POSIX_TIMERS
- if (__no_posix_timers >= 0)
-# endif
- {
- struct timer *kt = (struct timer *) timerid;
+#undef timer_settime
+ struct timer *kt = (struct timer *) timerid;
- /* Delete the kernel timer object. */
- int res = INLINE_SYSCALL (timer_settime, 4, kt->ktimerid, flags,
- value, ovalue);
+ /* Delete the kernel timer object. */
+ int res = INLINE_SYSCALL (timer_settime, 4, kt->ktimerid, flags,
+ value, ovalue);
-# ifndef __ASSUME_POSIX_TIMERS
- if (res != -1 || errno != ENOSYS)
- {
- /* We know the syscall support is available. */
- __no_posix_timers = 1;
-# endif
- return res;
-# ifndef __ASSUME_POSIX_TIMERS
- }
-# endif
-
-# ifndef __ASSUME_POSIX_TIMERS
- __no_posix_timers = -1;
-# endif
- }
-
-# ifndef __ASSUME_POSIX_TIMERS
- return compat_timer_settime (timerid, flags, value, ovalue);
-# endif
+ return res;
}
-#else
-# ifdef timer_settime_alias
-# define timer_settime timer_settime_alias
-# endif
-/* The new system calls are not available. Use the userlevel
- implementation. */
-# include <nptl/sysdeps/pthread/timer_settime.c>
-#endif
Modified: fsf/trunk/libc/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S
==============================================================================
--- fsf/trunk/libc/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S (original)
+++ fsf/trunk/libc/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S Fri Aug 17 00:01:45 2012
@@ -457,10 +457,6 @@
movl $__NR_clock_gettime, %eax
syscall
# endif
-# ifndef __ASSUME_POSIX_TIMERS
- cmpq $-ENOSYS, %rax
- je 19f
-# endif
/* Compute relative timeout. */
movq (%r13), %rcx
@@ -604,32 +600,6 @@
subq $cond_lock, %rdi
# endif
jmp 6b
-
-# if defined __NR_clock_gettime && !defined __ASSUME_POSIX_TIMERS
- /* clock_gettime not available. */
-19: leaq 32(%rsp), %rdi
- xorl %esi, %esi
- /* This call works because we directly jump to a system call entry
- which preserves all the registers. */
- call JUMPTARGET(__gettimeofday)
-
- /* Compute relative timeout. */
- movq 40(%rsp), %rax
- movl $1000, %edx
- mul %rdx /* Milli seconds to nano seconds. */
- movq (%r13), %rcx
- movq 8(%r13), %rdx
- subq 32(%rsp), %rcx
- subq %rax, %rdx
- jns 20f
- addq $1000000000, %rdx
- decq %rcx
-20: testq %rcx, %rcx
- movq 8(%rsp), %rdi
- movq $-ETIMEDOUT, %r14
- js 6b
- jmp 21b
-# endif
#endif
.size __pthread_cond_timedwait, .-__pthread_cond_timedwait
versioned_symbol (libpthread, __pthread_cond_timedwait, pthread_cond_timedwait,
Modified: fsf/trunk/libc/ports/ChangeLog.alpha
==============================================================================
--- fsf/trunk/libc/ports/ChangeLog.alpha (original)
+++ fsf/trunk/libc/ports/ChangeLog.alpha Fri Aug 17 00:01:45 2012
@@ -1,3 +1,8 @@
+2012-08-16 Carlos O'Donell <carlos_odonell@xxxxxxxxxx>
+
+ * sysdeps/alpha/ldsodefs.h (ARCH_PLTENTER_MEMBERS)
+ <alpha_gnu_pltenter>: struct La_alpha_regs is not const.
+
2012-08-13 Richard Henderson <rth@xxxxxxxxxxx>
* configure.in: Don't test toolchain support for TLS or GPREL.
Modified: fsf/trunk/libc/ports/ChangeLog.ia64
==============================================================================
--- fsf/trunk/libc/ports/ChangeLog.ia64 (original)
+++ fsf/trunk/libc/ports/ChangeLog.ia64 Fri Aug 17 00:01:45 2012
@@ -1,3 +1,8 @@
+2012-08-16 Carlos O'Donell <carlos_odonell@xxxxxxxxxx>
+
+ * sysdeps/ia64/ldsodefs.h (ARCH_PLTENTER_MEMBERS)
+ <ia64_gnu_pltenter>: struct La_ia64_regs is not constant.
+
2012-08-14 Mike Frysinger <vapier@xxxxxxxxxx>
* sysdeps/ia64/configure.in: Remove assembler-with-cpp debug check.
Modified: fsf/trunk/libc/ports/ChangeLog.mips
==============================================================================
--- fsf/trunk/libc/ports/ChangeLog.mips (original)
+++ fsf/trunk/libc/ports/ChangeLog.mips Fri Aug 17 00:01:45 2012
@@ -1,3 +1,9 @@
+2012-08-16 Carlos O'Donell <carlos_odonell@xxxxxxxxxx>
+
+ * sysdeps/mips/ldsodefs.h (ARCH_PLTENTER_MEMBERS)
+ <mips_o32_gnu_pltenter, mips_n32_gnu_pltenter, mips_n64_gnu_pltenter>:
+ struct La_mips_32_regs and struct La_mips_64_regs are not constant.
+
2012-08-15 Tom de Vries <vries@xxxxxxxxxxxxxxxx>
Maxim Kuvyrkov <maxim@xxxxxxxxxxxxxxxx>
Modified: fsf/trunk/libc/ports/sysdeps/alpha/ldsodefs.h
==============================================================================
--- fsf/trunk/libc/ports/sysdeps/alpha/ldsodefs.h (original)
+++ fsf/trunk/libc/ports/sysdeps/alpha/ldsodefs.h Fri Aug 17 00:01:45 2012
@@ -26,7 +26,7 @@
#define ARCH_PLTENTER_MEMBERS \
Elf64_Addr (*alpha_gnu_pltenter) (Elf64_Sym *, unsigned int, \
uintptr_t *, uintptr_t *, \
- const struct La_alpha_regs *, \
+ struct La_alpha_regs *, \
unsigned int *, const char *name, \
long int *framesizep);
Modified: fsf/trunk/libc/ports/sysdeps/ia64/ldsodefs.h
==============================================================================
--- fsf/trunk/libc/ports/sysdeps/ia64/ldsodefs.h (original)
+++ fsf/trunk/libc/ports/sysdeps/ia64/ldsodefs.h Fri Aug 17 00:01:45 2012
@@ -26,7 +26,7 @@
#define ARCH_PLTENTER_MEMBERS \
Elf64_Addr (*ia64_gnu_pltenter) (Elf64_Sym *, unsigned int, \
uintptr_t *, uintptr_t *, \
- const struct La_ia64_regs *, \
+ struct La_ia64_regs *, \
unsigned int *, const char *name, \
long int *framesizep);
Modified: fsf/trunk/libc/ports/sysdeps/mips/ldsodefs.h
==============================================================================
--- fsf/trunk/libc/ports/sysdeps/mips/ldsodefs.h (original)
+++ fsf/trunk/libc/ports/sysdeps/mips/ldsodefs.h Fri Aug 17 00:01:45 2012
@@ -29,17 +29,17 @@
#define ARCH_PLTENTER_MEMBERS \
Elf32_Addr (*mips_o32_gnu_pltenter) (Elf32_Sym *, unsigned int, \
uintptr_t *, uintptr_t *, \
- const struct La_mips_32_regs *, \
+ struct La_mips_32_regs *, \
unsigned int *, const char *name, \
long int *framesizep); \
Elf32_Addr (*mips_n32_gnu_pltenter) (Elf32_Sym *, unsigned int, \
uintptr_t *, uintptr_t *, \
- const struct La_mips_64_regs *, \
+ struct La_mips_64_regs *, \
unsigned int *, const char *name, \
long int *framesizep); \
Elf64_Addr (*mips_n64_gnu_pltenter) (Elf64_Sym *, unsigned int, \
uintptr_t *, uintptr_t *, \
- const struct La_mips_64_regs *, \
+ struct La_mips_64_regs *, \
unsigned int *, const char *name, \
long int *framesizep);
Modified: fsf/trunk/libc/stdio-common/_itoa.c
==============================================================================
--- fsf/trunk/libc/stdio-common/_itoa.c (original)
+++ fsf/trunk/libc/stdio-common/_itoa.c Fri Aug 17 00:01:45 2012
@@ -206,7 +206,7 @@
{
# define RUN_2N(BITS) \
do \
- { \
+ { \
/* `unsigned long long int' always has 64 bits. */ \
mp_limb_t work_hi = value >> (64 - BITS_PER_MP_LIMB); \
\
@@ -264,7 +264,8 @@
if (brec->flag)
while (value != 0)
{
- mp_limb_t quo, rem, x, dummy;
+ mp_limb_t quo, rem, x;
+ mp_limb_t __attribute__ ((unused));
umul_ppmm (x, dummy, value, base_multiplier);
quo = (x + ((value - x) >> 1)) >> (brec->post_shift - 1);
@@ -275,7 +276,8 @@
else
while (value != 0)
{
- mp_limb_t quo, rem, x, dummy;
+ mp_limb_t quo, rem, x;
+ mp_limb_t __attribute__ ((unused));
umul_ppmm (x, dummy, value, base_multiplier);
quo = x >> brec->post_shift;
@@ -401,7 +403,8 @@
if (brec->flag)
while (ti != 0)
{
- mp_limb_t quo, rem, x, dummy;
+ mp_limb_t quo, rem, x;
+ mp_limb_t dummy __attribute__ ((unused));
umul_ppmm (x, dummy, ti, base_multiplier);
quo = (x + ((ti - x) >> 1)) >> (brec->post_shift - 1);
@@ -413,7 +416,8 @@
else
while (ti != 0)
{
- mp_limb_t quo, rem, x, dummy;
+ mp_limb_t quo, rem, x;
+ mp_limb_t dummy __attribute__ ((unused));
umul_ppmm (x, dummy, ti, base_multiplier);
quo = x >> brec->post_shift;
Modified: fsf/trunk/libc/stdio-common/_itowa.c
==============================================================================
--- fsf/trunk/libc/stdio-common/_itowa.c (original)
+++ fsf/trunk/libc/stdio-common/_itowa.c Fri Aug 17 00:01:45 2012
@@ -1,5 +1,5 @@
/* Internal function for converting integers to ASCII.
- Copyright (C) 1994-1996,1999,2000,2002,2007 Free Software Foundation, Inc.
+ Copyright (C) 1994-2012 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Torbjorn Granlund <tege@xxxxxxxxxxxxxxx>
and Ulrich Drepper <drepper@xxxxxxx>.
@@ -102,7 +102,7 @@
{
# define RUN_2N(BITS) \
do \
- { \
+ { \
/* `unsigned long long int' always has 64 bits. */ \
mp_limb_t work_hi = value >> (64 - BITS_PER_MP_LIMB); \
\
@@ -296,7 +296,8 @@
if (brec->flag)
while (ti != 0)
{
- mp_limb_t quo, rem, x, dummy;
+ mp_limb_t quo, rem, x;
+ mp_limb_t dummy __attribute__ ((unused));
umul_ppmm (x, dummy, ti, base_multiplier);
quo = (x + ((ti - x) >> 1)) >> (brec->post_shift - 1);
@@ -308,7 +309,8 @@
else
while (ti != 0)
{
- mp_limb_t quo, rem, x, dummy;
+ mp_limb_t quo, rem, x;
+ mp_limb_t dummy __attribute__ ((unused));
umul_ppmm (x, dummy, ti, base_multiplier);
quo = x >> brec->post_shift;
Modified: fsf/trunk/libc/stdlib/divmod_1.c
==============================================================================
--- fsf/trunk/libc/stdlib/divmod_1.c (original)
+++ fsf/trunk/libc/stdlib/divmod_1.c Fri Aug 17 00:01:45 2012
@@ -6,7 +6,7 @@
QUOT_PTR and DIVIDEND_PTR might point to the same limb.
-Copyright (C) 1991, 1993, 1994, 1996 Free Software Foundation, Inc.
+Copyright (C) 1991-2012 Free Software Foundation, Inc.
This file is part of the GNU MP Library.
@@ -54,7 +54,7 @@
{
mp_size_t i;
mp_limb_t n1, n0, r;
- mp_limb_t dummy;
+ mp_limb_t dummy __attribute__ ((unused));
/* ??? Should this be handled at all? Rely on callers? */
if (dividend_size == 0)
Modified: fsf/trunk/libc/stdlib/gmp-impl.h
==============================================================================
--- fsf/trunk/libc/stdlib/gmp-impl.h (original)
+++ fsf/trunk/libc/stdlib/gmp-impl.h Fri Aug 17 00:01:45 2012
@@ -1,6 +1,6 @@
/* Include file for internal GNU MP types and definitions.
-Copyright (C) 1991, 1993, 1994, 1995, 1996, 2011 Free Software Foundation, Inc.
+Copyright (C) 1991-2012 Free Software Foundation, Inc.
This file is part of the GNU MP Library.
@@ -216,7 +216,8 @@
has to be set. Put the quotient in Q and the remainder in R. */
#define udiv_qrnnd_preinv(q, r, nh, nl, d, di) \
do { \
- mp_limb_t _q, _ql, _r; \
+ mp_limb_t _ql __attribute__ ((unused)); \
+ mp_limb_t _q, _r; \
mp_limb_t _xh, _xl; \
umul_ppmm (_q, _ql, (nh), (di)); \
_q += (nh); /* DI is 2**BITS_PER_MP_LIMB too small */\
Modified: fsf/trunk/libc/stdlib/longlong.h
==============================================================================
--- fsf/trunk/libc/stdlib/longlong.h (original)
+++ fsf/trunk/libc/stdlib/longlong.h Fri Aug 17 00:01:45 2012
@@ -850,8 +850,6 @@
FIXME: What's needed for gcc PowerPC VxWorks? __vxworks__ is not good
enough, since that hits ARM and m68k too. */
#if (defined (_ARCH_PPC) /* AIX */ \
- || defined (_ARCH_PWR) /* AIX */ \
- || defined (_ARCH_COM) /* AIX */ \
|| defined (__powerpc__) /* gcc */ \
|| defined (__POWERPC__) /* BEOS */ \
|| defined (__ppc__) /* Darwin */ \
@@ -862,37 +860,37 @@
#define add_ssaaaa(sh, sl, ah, al, bh, bl) \
do { \
if (__builtin_constant_p (bh) && (bh) == 0) \
- __asm__ ("{a%I4|add%I4c} %1,%3,%4\n\t{aze|addze} %0,%2" \
+ __asm__ ("add%I4c %1,%3,%4\n\taddze %0,%2" \
: "=r" (sh), "=&r" (sl) : "r" (ah), "%r" (al), "rI" (bl));\
else if (__builtin_constant_p (bh) && (bh) == ~(USItype) 0) \
- __asm__ ("{a%I4|add%I4c} %1,%3,%4\n\t{ame|addme} %0,%2" \
+ __asm__ ("add%I4c %1,%3,%4\n\taddme %0,%2" \
: "=r" (sh), "=&r" (sl) : "r" (ah), "%r" (al), "rI" (bl));\
else \
- __asm__ ("{a%I5|add%I5c} %1,%4,%5\n\t{ae|adde} %0,%2,%3" \
+ __asm__ ("add%I5c %1,%4,%5\n\tadde %0,%2,%3" \
: "=r" (sh), "=&r" (sl) \
: "%r" (ah), "r" (bh), "%r" (al), "rI" (bl)); \
} while (0)
#define sub_ddmmss(sh, sl, ah, al, bh, bl) \
do { \
if (__builtin_constant_p (ah) && (ah) == 0) \
- __asm__ ("{sf%I3|subf%I3c} %1,%4,%3\n\t{sfze|subfze} %0,%2" \
+ __asm__ ("subf%I3c %1,%4,%3\n\tsubfze %0,%2" \
: "=r" (sh), "=&r" (sl) : "r" (bh), "rI" (al), "r" (bl));\
else if (__builtin_constant_p (ah) && (ah) == ~(USItype) 0) \
- __asm__ ("{sf%I3|subf%I3c} %1,%4,%3\n\t{sfme|subfme} %0,%2" \
+ __asm__ ("subf%I3c %1,%4,%3\n\tsubfme %0,%2" \
: "=r" (sh), "=&r" (sl) : "r" (bh), "rI" (al), "r" (bl));\
else if (__builtin_constant_p (bh) && (bh) == 0) \
- __asm__ ("{sf%I3|subf%I3c} %1,%4,%3\n\t{ame|addme} %0,%2" \
+ __asm__ ("subf%I3c %1,%4,%3\n\taddme %0,%2" \
: "=r" (sh), "=&r" (sl) : "r" (ah), "rI" (al), "r" (bl));\
else if (__builtin_constant_p (bh) && (bh) == ~(USItype) 0) \
- __asm__ ("{sf%I3|subf%I3c} %1,%4,%3\n\t{aze|addze} %0,%2" \
+ __asm__ ("subf%I3c %1,%4,%3\n\taddze %0,%2" \
: "=r" (sh), "=&r" (sl) : "r" (ah), "rI" (al), "r" (bl));\
else \
- __asm__ ("{sf%I4|subf%I4c} %1,%5,%4\n\t{sfe|subfe} %0,%3,%2" \
+ __asm__ ("subf%I4c %1,%5,%4\n\tsubfe %0,%3,%2" \
: "=r" (sh), "=&r" (sl) \
: "r" (ah), "r" (bh), "rI" (al), "r" (bl)); \
} while (0)
#define count_leading_zeros(count, x) \
- __asm__ ("{cntlz|cntlzw} %0,%1" : "=r" (count) : "r" (x))
+ __asm__ ("cntlzw %0,%1" : "=r" (count) : "r" (x))
#define COUNT_LEADING_ZEROS_0 32
#if defined (_ARCH_PPC) || defined (__powerpc__) || defined (__POWERPC__) \
|| defined (__ppc__) \
@@ -914,14 +912,6 @@
} while (0)
#define SMUL_TIME 14
#define UDIV_TIME 120
-#elif defined (_ARCH_PWR)
-#define UMUL_TIME 8
-#define smul_ppmm(xh, xl, m0, m1) \
- __asm__ ("mul %0,%2,%3" : "=r" (xh), "=q" (xl) : "r" (m0), "r" (m1))
-#define SMUL_TIME 4
-#define sdiv_qrnnd(q, r, nh, nl, d) \
- __asm__ ("div %0,%2,%4" : "=r" (q), "=q" (r) : "r" (nh), "1" (nl), "r" (d))
-#define UDIV_TIME 100
#endif
#endif /* 32-bit POWER architecture variants. */
@@ -931,32 +921,32 @@
#define add_ssaaaa(sh, sl, ah, al, bh, bl) \
do { \
if (__builtin_constant_p (bh) && (bh) == 0) \
- __asm__ ("{a%I4|add%I4c} %1,%3,%4\n\t{aze|addze} %0,%2" \
+ __asm__ ("add%I4c %1,%3,%4\n\taddze %0,%2" \
: "=r" (sh), "=&r" (sl) : "r" (ah), "%r" (al), "rI" (bl));\
else if (__builtin_constant_p (bh) && (bh) == ~(UDItype) 0) \
- __asm__ ("{a%I4|add%I4c} %1,%3,%4\n\t{ame|addme} %0,%2" \
+ __asm__ ("add%I4c %1,%3,%4\n\taddme %0,%2" \
: "=r" (sh), "=&r" (sl) : "r" (ah), "%r" (al), "rI" (bl));\
else \
- __asm__ ("{a%I5|add%I5c} %1,%4,%5\n\t{ae|adde} %0,%2,%3" \
+ __asm__ ("add%I5c %1,%4,%5\n\tadde %0,%2,%3" \
: "=r" (sh), "=&r" (sl) \
: "%r" (ah), "r" (bh), "%r" (al), "rI" (bl)); \
} while (0)
#define sub_ddmmss(sh, sl, ah, al, bh, bl) \
do { \
if (__builtin_constant_p (ah) && (ah) == 0) \
- __asm__ ("{sf%I3|subf%I3c} %1,%4,%3\n\t{sfze|subfze} %0,%2" \
+ __asm__ ("subf%I3c %1,%4,%3\n\tsubfze %0,%2" \
: "=r" (sh), "=&r" (sl) : "r" (bh), "rI" (al), "r" (bl));\
else if (__builtin_constant_p (ah) && (ah) == ~(UDItype) 0) \
- __asm__ ("{sf%I3|subf%I3c} %1,%4,%3\n\t{sfme|subfme} %0,%2" \
+ __asm__ ("subf%I3c %1,%4,%3\n\tsubfme %0,%2" \
: "=r" (sh), "=&r" (sl) : "r" (bh), "rI" (al), "r" (bl));\
else if (__builtin_constant_p (bh) && (bh) == 0) \
- __asm__ ("{sf%I3|subf%I3c} %1,%4,%3\n\t{ame|addme} %0,%2" \
+ __asm__ ("subf%I3c %1,%4,%3\n\taddme %0,%2" \
: "=r" (sh), "=&r" (sl) : "r" (ah), "rI" (al), "r" (bl));\
else if (__builtin_constant_p (bh) && (bh) == ~(UDItype) 0) \
- __asm__ ("{sf%I3|subf%I3c} %1,%4,%3\n\t{aze|addze} %0,%2" \
+ __asm__ ("subf%I3c %1,%4,%3\n\taddze %0,%2" \
: "=r" (sh), "=&r" (sl) : "r" (ah), "rI" (al), "r" (bl));\
else \
- __asm__ ("{sf%I4|subf%I4c} %1,%5,%4\n\t{sfe|subfe} %0,%3,%2" \
+ __asm__ ("subf%I4c %1,%5,%4\n\tsubfe %0,%3,%2" \
: "=r" (sh), "=&r" (sl) \
: "r" (ah), "r" (bh), "rI" (al), "r" (bl)); \
} while (0)
Modified: fsf/trunk/libc/stdlib/mod_1.c
==============================================================================
--- fsf/trunk/libc/stdlib/mod_1.c (original)
+++ fsf/trunk/libc/stdlib/mod_1.c Fri Aug 17 00:01:45 2012
@@ -3,7 +3,7 @@
Return the single-limb remainder.
There are no constraints on the value of the divisor.
-Copyright (C) 1991, 1993, 1994, Free Software Foundation, Inc.
+Copyright (C) 1991-2012 Free Software Foundation, Inc.
This file is part of the GNU MP Library.
@@ -49,7 +49,7 @@
{
mp_size_t i;
mp_limb_t n1, n0, r;
- mp_limb_t dummy;
+ mp_limb_t dummy __attribute__ ((unused));
/* Botch: Should this be handled at all? Rely on callers? */
if (dividend_size == 0)
Modified: fsf/trunk/libc/sysdeps/sh/ldsodefs.h
==============================================================================
--- fsf/trunk/libc/sysdeps/sh/ldsodefs.h (original)
+++ fsf/trunk/libc/sysdeps/sh/ldsodefs.h Fri Aug 17 00:01:45 2012
@@ -26,7 +26,7 @@
#define ARCH_PLTENTER_MEMBERS \
uintptr_t (*sh_gnu_pltenter) (Elf32_Sym *, unsigned int, uintptr_t *, \
- uintptr_t *, const struct La_sh_regs *, \
+ uintptr_t *, struct La_sh_regs *, \
unsigned int *, const char *name, \
long int *framesizep)
Modified: fsf/trunk/libc/sysdeps/sparc/ldsodefs.h
==============================================================================
--- fsf/trunk/libc/sysdeps/sparc/ldsodefs.h (original)
+++ fsf/trunk/libc/sysdeps/sparc/ldsodefs.h Fri Aug 17 00:01:45 2012
@@ -29,12 +29,12 @@
#define ARCH_PLTENTER_MEMBERS \
Elf32_Addr (*sparc32_gnu_pltenter) (Elf32_Sym *, unsigned int, \
uintptr_t *, uintptr_t *, \
- const struct La_sparc32_regs *, \
+ struct La_sparc32_regs *, \
unsigned int *, const char *name, \
long int *framesizep); \
Elf64_Addr (*sparc64_gnu_pltenter) (Elf64_Sym *, unsigned int, \
uintptr_t *, uintptr_t *, \
- const struct La_sparc64_regs *, \
+ struct La_sparc64_regs *, \
unsigned int *, const char *name, \
long int *framesizep)
Modified: fsf/trunk/libc/sysdeps/unix/sysv/linux/clock_getcpuclockid.c
==============================================================================
--- fsf/trunk/libc/sysdeps/unix/sysv/linux/clock_getcpuclockid.c (original)
+++ fsf/trunk/libc/sysdeps/unix/sysv/linux/clock_getcpuclockid.c Fri Aug 17 00:01:45 2012
@@ -1,5 +1,5 @@
/* clock_getcpuclockid -- Get a clockid_t for process CPU time. Linux version.
- Copyright (C) 2004, 2005, 2006 Free Software Foundation, Inc.
+ Copyright (C) 2004-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
@@ -37,11 +37,6 @@
# if !(__ASSUME_POSIX_CPU_TIMERS > 0)
extern int __libc_missing_posix_cpu_timers attribute_hidden;
-# if !(__ASSUME_POSIX_TIMERS > 0)
- extern int __libc_missing_posix_timers attribute_hidden;
- if (__libc_missing_posix_timers && !__libc_missing_posix_cpu_timers)
- __libc_missing_posix_cpu_timers = 1;
-# endif
if (!__libc_missing_posix_cpu_timers)
# endif
{
@@ -53,33 +48,24 @@
return 0;
}
-# if !(__ASSUME_POSIX_TIMERS > 0)
- if (INTERNAL_SYSCALL_ERRNO (r, err) == ENOSYS)
+ if (INTERNAL_SYSCALL_ERRNO (r, err) == EINVAL)
{
- /* The kernel doesn't support these calls at all. */
- __libc_missing_posix_timers = 1;
- __libc_missing_posix_cpu_timers = 1;
+# if !(__ASSUME_POSIX_CPU_TIMERS > 0)
+ if (pidclock == MAKE_PROCESS_CPUCLOCK (0, CPUCLOCK_SCHED)
+ || INTERNAL_SYSCALL_ERROR_P (INTERNAL_SYSCALL
+ (clock_getres, err, 2,
+ MAKE_PROCESS_CPUCLOCK
+ (0, CPUCLOCK_SCHED), NULL),
+ err))
+ /* The kernel doesn't support these clocks at all. */
+ __libc_missing_posix_cpu_timers = 1;
+ else
+# endif
+ /* The clock_getres system call checked the PID for us. */
+ return ESRCH;
}
else
-# endif
- if (INTERNAL_SYSCALL_ERRNO (r, err) == EINVAL)
- {
-# if !(__ASSUME_POSIX_CPU_TIMERS > 0)
- if (pidclock == MAKE_PROCESS_CPUCLOCK (0, CPUCLOCK_SCHED)
- || INTERNAL_SYSCALL_ERROR_P (INTERNAL_SYSCALL
- (clock_getres, err, 2,
- MAKE_PROCESS_CPUCLOCK
- (0, CPUCLOCK_SCHED), NULL),
- err))
- /* The kernel doesn't support these clocks at all. */
- __libc_missing_posix_cpu_timers = 1;
- else
-# endif
- /* The clock_getres system call checked the PID for us. */
- return ESRCH;
- }
- else
- return INTERNAL_SYSCALL_ERRNO (r, err);
+ return INTERNAL_SYSCALL_ERRNO (r, err);
}
#endif
Modified: fsf/trunk/libc/sysdeps/unix/sysv/linux/clock_getres.c
==============================================================================
--- fsf/trunk/libc/sysdeps/unix/sysv/linux/clock_getres.c (original)
+++ fsf/trunk/libc/sysdeps/unix/sysv/linux/clock_getres.c Fri Aug 17 00:01:45 2012
@@ -1,5 +1,5 @@
/* clock_getres -- Get the resolution of a POSIX clockid_t. Linux version.
- Copyright (C) 2003,2004,2005,2006,2008,2010 Free Software Foundation, Inc.
+ Copyright (C) 2003-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
@@ -35,11 +35,9 @@
retval = INLINE_VSYSCALL (clock_getres, 2, clock_id, res); \
break
-#ifdef __ASSUME_POSIX_TIMERS
-
-/* This means the REALTIME and MONOTONIC clock are definitely
- supported in the kernel. */
-# define SYSDEP_GETRES \
+/* The REALTIME and MONOTONIC clock are definitely supported in the
+ kernel. */
+#define SYSDEP_GETRES \
SYSDEP_GETRES_CPUTIME \
case CLOCK_REALTIME: \
case CLOCK_MONOTONIC: \
@@ -47,57 +45,6 @@
case CLOCK_REALTIME_COARSE: \
case CLOCK_MONOTONIC_COARSE: \
SYSCALL_GETRES
-
-# define __libc_missing_posix_timers 0
-#elif defined __NR_clock_getres
-/* Is the syscall known to exist? */
-extern int __libc_missing_posix_timers attribute_hidden;
-
-static inline int
-maybe_syscall_getres (clockid_t clock_id, struct timespec *res)
-{
- int e = EINVAL;
-
- if (!__libc_missing_posix_timers)
- {
- INTERNAL_SYSCALL_DECL (err);
- int r = INTERNAL_VSYSCALL (clock_getres, err, 2, clock_id, res);
- if (!INTERNAL_SYSCALL_ERROR_P (r, err))
- return 0;
-
- e = INTERNAL_SYSCALL_ERRNO (r, err);
- if (e == ENOSYS)
- {
- __libc_missing_posix_timers = 1;
- e = EINVAL;
- }
- }
-
- return e;
-}
-
-/* The REALTIME and MONOTONIC clock might be available. Try the
- syscall first. */
-# define SYSDEP_GETRES \
- SYSDEP_GETRES_CPUTIME \
- case CLOCK_REALTIME: \
- case CLOCK_MONOTONIC: \
- case CLOCK_MONOTONIC_RAW: \
- case CLOCK_REALTIME_COARSE: \
- case CLOCK_MONOTONIC_COARSE: \
- retval = maybe_syscall_getres (clock_id, res); \
- if (retval == 0) \
- break; \
- /* Fallback code. */ \
- if (retval == EINVAL && clock_id == CLOCK_REALTIME) \
- retval = realtime_getres (res); \
- else \
- { \
- __set_errno (retval); \
- retval = -1; \
- } \
- break;
-#endif
#ifdef __NR_clock_getres
/* We handled the REALTIME clock here. */
@@ -126,26 +73,15 @@
return 0;
e = INTERNAL_SYSCALL_ERRNO (r, err);
-# ifndef __ASSUME_POSIX_TIMERS
- if (e == ENOSYS)
+ if (e == EINVAL)
{
- __libc_missing_posix_timers = 1;
- __libc_missing_posix_cpu_timers = 1;
- e = EINVAL;
- }
- else
-# endif
- {
- if (e == EINVAL)
- {
- /* Check whether the kernel supports CPU clocks at all.
- If not, record it for the future. */
- r = INTERNAL_VSYSCALL (clock_getres, err, 2,
- MAKE_PROCESS_CPUCLOCK (0, CPUCLOCK_SCHED),
- NULL);
- if (INTERNAL_SYSCALL_ERROR_P (r, err))
- __libc_missing_posix_cpu_timers = 1;
- }
+ /* Check whether the kernel supports CPU clocks at all.
+ If not, record it for the future. */
+ r = INTERNAL_VSYSCALL (clock_getres, err, 2,
+ MAKE_PROCESS_CPUCLOCK (0, CPUCLOCK_SCHED),
+ NULL);
+ if (INTERNAL_SYSCALL_ERROR_P (r, err))
+ __libc_missing_posix_cpu_timers = 1;
}
}
Modified: fsf/trunk/libc/sysdeps/unix/sysv/linux/clock_gettime.c
==============================================================================
--- fsf/trunk/libc/sysdeps/unix/sysv/linux/clock_gettime.c (original)
+++ fsf/trunk/libc/sysdeps/unix/sysv/linux/clock_gettime.c Fri Aug 17 00:01:45 2012
@@ -1,5 +1,5 @@
/* clock_gettime -- Get current time from a POSIX clockid_t. Linux version.
- Copyright (C) 2003,2004,2005,2006,2007,2010,2011 Free Software Foundation, Inc.
+ Copyright (C) 2003-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
@@ -40,67 +40,14 @@
INTERNAL_VSYSCALL (clock_gettime, err, 2, id, tp)
#endif
-#ifdef __ASSUME_POSIX_TIMERS
-
-/* This means the REALTIME and MONOTONIC clock are definitely
- supported in the kernel. */
-# define SYSDEP_GETTIME \
+/* The REALTIME and MONOTONIC clock are definitely supported in the
+ kernel. */
+#define SYSDEP_GETTIME \
SYSDEP_GETTIME_CPUTIME; \
case CLOCK_REALTIME: \
case CLOCK_MONOTONIC: \
retval = SYSCALL_GETTIME (clock_id, tp); \
break
-
-# define __libc_missing_posix_timers 0
-#elif defined __NR_clock_gettime
-/* Is the syscall known to exist? */
-int __libc_missing_posix_timers attribute_hidden;
-
-static inline int
-maybe_syscall_gettime (clockid_t clock_id, struct timespec *tp)
-{
- int e = EINVAL;
-
- if (!__libc_missing_posix_timers)
- {
- INTERNAL_SYSCALL_DECL (err);
- int r = INTERNAL_GETTIME (clock_id, tp);
- if (!INTERNAL_SYSCALL_ERROR_P (r, err))
- return 0;
-
- e = INTERNAL_SYSCALL_ERRNO (r, err);
- if (e == ENOSYS)
- {
- __libc_missing_posix_timers = 1;
- e = EINVAL;
- }
- }
-
- return e;
-}
-
-/* The REALTIME and MONOTONIC clock might be available. Try the
- syscall first. */
-# define SYSDEP_GETTIME \
- SYSDEP_GETTIME_CPUTIME; \
- case CLOCK_REALTIME: \
- case CLOCK_MONOTONIC: \
- case CLOCK_MONOTONIC_RAW: \
- case CLOCK_REALTIME_COARSE: \
- case CLOCK_MONOTONIC_COARSE: \
- retval = maybe_syscall_gettime (clock_id, tp); \
- if (retval == 0) \
- break; \
- /* Fallback code. */ \
- if (retval == EINVAL && clock_id == CLOCK_REALTIME) \
- retval = realtime_gettime (tp); \
- else \
- { \
- __set_errno (retval); \
- retval = -1; \
- } \
- break
-#endif
#ifdef __NR_clock_gettime
/* We handled the REALTIME clock here. */
@@ -131,34 +78,23 @@
return 0;
e = INTERNAL_SYSCALL_ERRNO (r, err);
-# ifndef __ASSUME_POSIX_TIMERS
- if (e == ENOSYS)
+ if (e == EINVAL)
{
- __libc_missing_posix_timers = 1;
- __libc_missing_posix_cpu_timers = 1;
- e = EINVAL;
- }
- else
+# ifdef HAVE_CLOCK_GETRES_VSYSCALL
+ /* Check whether the kernel supports CPU clocks at all.
+ If not, record it for the future. */
+ r = INTERNAL_VSYSCALL (clock_getres, err, 2,
+ MAKE_PROCESS_CPUCLOCK (0, CPUCLOCK_SCHED),
+ NULL);
+# else
+ /* Check whether the kernel supports CPU clocks at all.
+ If not, record it for the future. */
+ r = INTERNAL_SYSCALL (clock_getres, err, 2,
+ MAKE_PROCESS_CPUCLOCK (0, CPUCLOCK_SCHED),
+ NULL);
# endif
- {
- if (e == EINVAL)
- {
-# ifdef HAVE_CLOCK_GETRES_VSYSCALL
- /* Check whether the kernel supports CPU clocks at all.
- If not, record it for the future. */
- r = INTERNAL_VSYSCALL (clock_getres, err, 2,
- MAKE_PROCESS_CPUCLOCK (0, CPUCLOCK_SCHED),
- NULL);
-# else
- /* Check whether the kernel supports CPU clocks at all.
- If not, record it for the future. */
- r = INTERNAL_SYSCALL (clock_getres, err, 2,
- MAKE_PROCESS_CPUCLOCK (0, CPUCLOCK_SCHED),
- NULL);
-# endif
- if (INTERNAL_SYSCALL_ERROR_P (r, err))
- __libc_missing_posix_cpu_timers = 1;
- }
+ if (INTERNAL_SYSCALL_ERROR_P (r, err))
+ __libc_missing_posix_cpu_timers = 1;
}
}
Modified: fsf/trunk/libc/sysdeps/unix/sysv/linux/clock_nanosleep.c
==============================================================================
--- fsf/trunk/libc/sysdeps/unix/sysv/linux/clock_nanosleep.c (original)
+++ fsf/trunk/libc/sysdeps/unix/sysv/linux/clock_nanosleep.c Fri Aug 17 00:01:45 2012
@@ -1,4 +1,4 @@
-/* Copyright (C) 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+/* Copyright (C) 2003-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
@@ -23,7 +23,6 @@
#include "kernel-posix-cpu-timers.h"
-#ifdef __ASSUME_POSIX_TIMERS
/* We can simply use the syscall. The CPU clocks are not supported
with this function. */
int
@@ -53,43 +52,3 @@
return (INTERNAL_SYSCALL_ERROR_P (r, err)
? INTERNAL_SYSCALL_ERRNO (r, err) : 0);
}
-
-#else
-# ifdef __NR_clock_nanosleep
-/* Is the syscall known to exist? */
-extern int __libc_missing_posix_timers attribute_hidden;
-
-/* The REALTIME and MONOTONIC clock might be available. Try the
- syscall first. */
-# define SYSDEP_NANOSLEEP \
- if (!__libc_missing_posix_timers) \
- { \
- clockid_t syscall_clockid; \
- INTERNAL_SYSCALL_DECL (err); \
- \
- if (clock_id == CLOCK_THREAD_CPUTIME_ID) \
- return EINVAL; \
- if (clock_id == CLOCK_PROCESS_CPUTIME_ID) \
- syscall_clockid = MAKE_PROCESS_CPUCLOCK (0, CPUCLOCK_SCHED); \
- else \
- syscall_clockid = clock_id; \
- \
- int oldstate = LIBC_CANCEL_ASYNC (); \
- \
- int r = INTERNAL_SYSCALL (clock_nanosleep, err, 4, \
- syscall_clockid, flags, req, rem); \
- \
- LIBC_CANCEL_RESET (oldstate); \
- \
- if (!INTERNAL_SYSCALL_ERROR_P (r, err)) \
- return 0; \
- \
- if (INTERNAL_SYSCALL_ERRNO (r, err) != ENOSYS) \
- return INTERNAL_SYSCALL_ERRNO (r, err); \
- \
- __libc_missing_posix_timers = 1; \
- }
-# endif
-
-# include <sysdeps/unix/clock_nanosleep.c>
-#endif
Modified: fsf/trunk/libc/sysdeps/unix/sysv/linux/clock_settime.c
==============================================================================
--- fsf/trunk/libc/sysdeps/unix/sysv/linux/clock_settime.c (original)
+++ fsf/trunk/libc/sysdeps/unix/sysv/linux/clock_settime.c Fri Aug 17 00:01:45 2012
@@ -32,7 +32,6 @@
#endif
#if __ASSUME_POSIX_CPU_TIMERS <= 0 && defined __NR_clock_settime
-extern int __libc_missing_posix_timers attribute_hidden;
extern int __libc_missing_posix_cpu_timers attribute_hidden;
static int
@@ -48,26 +47,15 @@
return 0;
e = INTERNAL_SYSCALL_ERRNO (r, err);
-# ifndef __ASSUME_POSIX_TIMERS
- if (e == ENOSYS)
+ if (e == EINVAL)
{
- __libc_missing_posix_timers = 1;
- __libc_missing_posix_cpu_timers = 1;
- e = EINVAL;
- }
- else
-# endif
- {
- if (e == EINVAL)
- {
- /* Check whether the kernel supports CPU clocks at all.
- If not, record it for the future. */
- r = INTERNAL_VSYSCALL (clock_getres, err, 2,
- MAKE_PROCESS_CPUCLOCK (0, CPUCLOCK_SCHED),
- NULL);
- if (INTERNAL_SYSCALL_ERROR_P (r, err))
- __libc_missing_posix_cpu_timers = 1;
- }
+ /* Check whether the kernel supports CPU clocks at all.
+ If not, record it for the future. */
+ r = INTERNAL_VSYSCALL (clock_getres, err, 2,
+ MAKE_PROCESS_CPUCLOCK (0, CPUCLOCK_SCHED),
+ NULL);
+ if (INTERNAL_SYSCALL_ERROR_P (r, err))
+ __libc_missing_posix_cpu_timers = 1;
}
}
@@ -76,53 +64,11 @@
#endif
-#ifdef __ASSUME_POSIX_TIMERS
-/* This means the REALTIME clock is definitely supported in the
- kernel. */
-# define SYSDEP_SETTIME \
+/* The REALTIME clock is definitely supported in the kernel. */
+#define SYSDEP_SETTIME \
case CLOCK_REALTIME: \
retval = INLINE_SYSCALL (clock_settime, 2, clock_id, tp); \
break
-#elif defined __NR_clock_settime
-/* Is the syscall known to exist? */
-extern int __libc_missing_posix_timers attribute_hidden;
-
-/* The REALTIME clock might be available. Try the syscall first. */
-# define SYSDEP_SETTIME \
- case CLOCK_REALTIME: \
- case CLOCK_REALTIME_COARSE: \
- { \
- int e = EINVAL; \
- \
- if (!__libc_missing_posix_timers) \
- { \
- INTERNAL_SYSCALL_DECL (err); \
- int r = INTERNAL_SYSCALL (clock_settime, err, 2, clock_id, tp); \
- if (!INTERNAL_SYSCALL_ERROR_P (r, err)) \
- { \
- retval = 0; \
- break; \
- } \
- \
- e = INTERNAL_SYSCALL_ERRNO (r, err); \
- if (e == ENOSYS) \
- { \
- __libc_missing_posix_timers = 1; \
- e = EINVAL; \
- } \
- } \
- \
- /* Fallback code. */ \
- if (e == EINVAL && clock_id == CLOCK_REALTIME) \
- HANDLE_REALTIME; \
- else \
- { \
- __set_errno (e); \
- retval = -1; \
- } \
- } \
- break
-#endif
#ifdef __NR_clock_settime
/* We handled the REALTIME clock here. */
Modified: fsf/trunk/libc/sysdeps/unix/sysv/linux/kernel-features.h
==============================================================================
--- fsf/trunk/libc/sysdeps/unix/sysv/linux/kernel-features.h (original)
+++ fsf/trunk/libc/sysdeps/unix/sysv/linux/kernel-features.h Fri Aug 17 00:01:45 2012
@@ -91,10 +91,6 @@
#if defined __powerpc__ && !defined __powerpc64__
# define __ASSUME_MMAP2_SYSCALL 1
#endif
-
-/* Beginning with 2.5.63 support for realtime and monotonic clocks and
- timers based on them is available. */
-#define __ASSUME_POSIX_TIMERS 1
/* Beginning with 2.6.12 the clock and timer supports CPU clocks. */
#define __ASSUME_POSIX_CPU_TIMERS 1
_______________________________________________
Commits mailing list
Commits@xxxxxxxxxx
http://eglibc.org/cgi-bin/mailman/listinfo/commits