Clean pthread functions namespaces for C11 threads

This patch adds internal definition (through {libc_}hidden_{proto,def}) and
also change some strong to weak alias for symbols that might be used by C11
threads implementations.

The patchset should not change libc/libpthread functional, although object
changes are expected (since now internal symbols are used instead) and final
exported symbols through GLIBC_PRIVATE is also expanded (to cover libpthread
usage of __mmap{64}, __munmap, __mprotect).

Checked with a build for all major ABI (aarch64-linux-gnu, alpha-linux-gnu,
arm-linux-gnueabi, i386-linux-gnu, ia64-linux-gnu, m68k-linux-gnu,
microblaze-linux-gnu [1], mips{64}-linux-gnu, nios2-linux-gnu,
powerpc{64le}-linux-gnu, s390{x}-linux-gnu, sparc{64}-linux-gnu,
tile{pro,gx}-linux-gnu, and x86_64-linux-gnu).

	* include/sched.h (__sched_get_priority_max): Add libc hidden proto.
	(__sched_get_prioriry_min): Likewise.
	* include/sys/mman.h (__mmap): Likewise.
	(__mmap64): Likewise.
	(__munmap): Likewise.
	(__mprotect): Likewise.
	* include/termios.h (__tcsetattr): Likewise.
	* include/time.h (__nanosleep): Use hidden_proto instead of
	libc_hidden_proto.
	* posix/nanosleep.c (__nanosleep): Likewise.
	* misc/Versions (libc): Export __mmap, __munmap, __mprotect,
	__sched_get_priority_min, and __sched_get_priority_max under
	GLIBC_PRIVATE.
	* nptl/allocatestack.c (__free_stacks): Use internal definition for
	libc symbols.
	(change_stack_perm): Likewise.
	(allocate_stack): Likewise.
	* sysdeps/posix/gethostname.c: Likewise.
	* nptl/tpp.c (__init_sched_fifo_prio): Likewise.
	* sysdeps/unix/sysv/linux/i386/smp.h (is_smp_system): Likewise.
	* sysdeps/unix/sysv/linux/powerpc/ioctl.c (__ioctl): Likewise.
	* nptl/pthreadP.h (__pthread_mutex_timedlock): Add definition.
	(__pthread_key_delete): Likewise.
	(__pthread_detach): Likewise.
	(__pthread_cancel): Likewise.
	(__pthread_mutex_trylock): Likewise.
	(__pthread_mutexattr_init): Likewise.
	(__pthread_mutexattr_settype): Likewise.
	* nptl/pthread_cancel.c (pthread_cancel): Change to internal name and
	create alias for exported one.
	* nptl/pthread_join.c (pthread_join): Likewise.
	* nptl/pthread_detach.c (pthread_detach): Likewise.
	* nptl/pthread_key_delete.c (pthread_key_delete): Likewise.
	* nptl/pthread_mutex_timedlock.c (pthread_mutex_timedlock): Likewise.
	* nptl/pthread_create.c: Change static requirements for pthread
	symbols.
	* nptl/pthread_equal.c (__pthread_equal): Change strong alias to weak
	for internal definition.
	* nptl/pthread_exit.c (__pthread_exit): Likewise.
	* nptl/pthread_getspecific.c (__pthread_getspecific): Likewise.
	* nptl/pthread_key_create.c (__pthread_key_create): Likewise.
	* nptl/pthread_mutex_destroy.c (__pthread_mutex_destroy): Likewise.
	* nptl/pthread_mutex_init.c (__pthread_mutex_init): Likewise.
	* nptl/pthread_mutex_lock.c (__pthread_mutex_lock): Likewise.
	* nptl/pthread_mutex_trylock.c (__pthread_mutex_trylock): Likewise.
	* nptl/pthread_mutex_unlock.c (__pthread_mutex_unlock): Likewise.
	* nptl/pthread_mutexattr_init.c (__pthread_mutexattr_init): Likwise.
	* nptl/pthread_mutexattr_settype.c (__pthread_mutexattr_settype):
	Likewise.
	* nptl/pthread_self.c (__pthread_self): Likewise.
	* nptl/pthread_setspecific.c (__pthread_setspecific): Likewise.
	* sysdeps/unix/sysv/linux/tcsetattr.c (tcsetattr): Likewise.
	* misc/mmap.c (__mmap): Add internal symbol definition.
	* misc/mmap.c (__mmap64): Likewise.
	* sysdeps/unix/sysv/linux/mmap.c (__mmap): Likewise.
	* sysdeps/unix/sysv/linux/mmap64.c (__mmap): Likewise.
	(__mmap64): Likewise.
	* sysdeps/unix/sysv/linux/i386/Versions (libc) [GLIBC_PRIVATE):
	Add __uname.
This commit is contained in:
Adhemerval Zanella 2016-12-02 16:32:28 -02:00
parent 06a5b8f799
commit fa872e1b62
39 changed files with 156 additions and 59 deletions

View File

@ -1,3 +1,67 @@
2017-05-23 Adhemerval Zanella <adhemerval.zanella@linaro.org>
Juan Manuel Torres Palma <jmtorrespalma@gmail.com>
* include/sched.h (__sched_get_priority_max): Add libc hidden proto.
(__sched_get_prioriry_min): Likewise.
* include/sys/mman.h (__mmap): Likewise.
(__mmap64): Likewise.
(__munmap): Likewise.
(__mprotect): Likewise.
* include/termios.h (__tcsetattr): Likewise.
* include/time.h (__nanosleep): Use hidden_proto instead of
libc_hidden_proto.
* posix/nanosleep.c (__nanosleep): Likewise.
* misc/Versions (libc): Export __mmap, __munmap, __mprotect,
__sched_get_priority_min, and __sched_get_priority_max under
GLIBC_PRIVATE.
* nptl/allocatestack.c (__free_stacks): Use internal definition for
libc symbols.
(change_stack_perm): Likewise.
(change_stack_perm): Likewise.
(allocate_stack): Likewise.
* sysdeps/posix/gethostname.c: Likewise.
* nptl/tpp.c (__init_sched_fifo_prio): Likewise.
* sysdeps/unix/sysv/linux/i386/smp.h (is_smp_system): Likewise.
* sysdeps/unix/sysv/linux/powerpc/ioctl.c (__ioctl): Likewise.
* nptl/pthreadP.h (__pthread_mutex_timedlock): Add definition.
(__pthread_key_delete): Likewise.
(__pthread_detach): Likewise.
(__pthread_cancel): Likewise.
(__pthread_mutex_trylock): Likewise.
(__pthread_mutexattr_init): Likewise.
(__pthread_mutexattr_settype): Likewise.
* nptl/pthread_cancel.c (pthread_cancel): Change to internal name and
create alias for exported one.
* nptl/pthread_join.c (pthread_join): Likewise.
* nptl/pthread_detach.c (pthread_detach): Likewise.
* nptl/pthread_key_delete.c (pthread_key_delete): Likewise.
* nptl/pthread_mutex_timedlock.c (pthread_mutex_timedlock): Likewise.
* nptl/pthread_create.c: Change static requirements for pthread
symbols.
* nptl/pthread_equal.c (__pthread_equal): Change strong alias to weak
for internal definition.
* nptl/pthread_exit.c (__pthread_exit): Likewise.
* nptl/pthread_getspecific.c (__pthread_getspecific): Likewise.
* nptl/pthread_key_create.c (__pthread_key_create): Likewise.
* nptl/pthread_mutex_destroy.c (__pthread_mutex_destroy): Likewise.
* nptl/pthread_mutex_init.c (__pthread_mutex_init): Likewise.
* nptl/pthread_mutex_lock.c (__pthread_mutex_lock): Likewise.
* nptl/pthread_mutex_trylock.c (__pthread_mutex_trylock): Likewise.
* nptl/pthread_mutex_unlock.c (__pthread_mutex_unlock): Likewise.
* nptl/pthread_mutexattr_init.c (__pthread_mutexattr_init): Likwise.
* nptl/pthread_mutexattr_settype.c (__pthread_mutexattr_settype):
Likewise.
* nptl/pthread_self.c (__pthread_self): Likewise.
* nptl/pthread_setspecific.c (__pthread_setspecific): Likewise.
* sysdeps/unix/sysv/linux/tcsetattr.c (tcsetattr): Likewise.
* misc/mmap.c (__mmap): Add internal symbol definition.
* misc/mmap.c (__mmap64): Likewise.
* sysdeps/unix/sysv/linux/mmap.c (__mmap): Likewise.
* sysdeps/unix/sysv/linux/mmap64.c (__mmap): Likewise.
(__mmap64): Likewise.
* sysdeps/unix/sysv/linux/i386/Versions (libc) [GLIBC_PRIVATE):
Add __uname.
2017-06-23 Joseph Myers <joseph@codesourcery.com> 2017-06-23 Joseph Myers <joseph@codesourcery.com>
* sysdeps/i386/fpu/libm-test-ulps: Update. * sysdeps/i386/fpu/libm-test-ulps: Update.

View File

@ -13,7 +13,9 @@ extern int __sched_getscheduler (__pid_t __pid);
extern int __sched_yield (void); extern int __sched_yield (void);
libc_hidden_proto (__sched_yield) libc_hidden_proto (__sched_yield)
extern int __sched_get_priority_max (int __algorithm); extern int __sched_get_priority_max (int __algorithm);
libc_hidden_proto (__sched_get_priority_max)
extern int __sched_get_priority_min (int __algorithm); extern int __sched_get_priority_min (int __algorithm);
libc_hidden_proto (__sched_get_priority_min)
extern int __sched_rr_get_interval (__pid_t __pid, struct timespec *__t); extern int __sched_rr_get_interval (__pid_t __pid, struct timespec *__t);
/* These are Linux specific. */ /* These are Linux specific. */

View File

@ -5,10 +5,14 @@
/* Now define the internal interfaces. */ /* Now define the internal interfaces. */
extern void *__mmap (void *__addr, size_t __len, int __prot, extern void *__mmap (void *__addr, size_t __len, int __prot,
int __flags, int __fd, __off_t __offset); int __flags, int __fd, __off_t __offset);
libc_hidden_proto (__mmap)
extern void *__mmap64 (void *__addr, size_t __len, int __prot, extern void *__mmap64 (void *__addr, size_t __len, int __prot,
int __flags, int __fd, __off64_t __offset); int __flags, int __fd, __off64_t __offset);
libc_hidden_proto (__mmap64)
extern int __munmap (void *__addr, size_t __len); extern int __munmap (void *__addr, size_t __len);
libc_hidden_proto (__munmap)
extern int __mprotect (void *__addr, size_t __len, int __prot); extern int __mprotect (void *__addr, size_t __len, int __prot);
libc_hidden_proto (__mprotect)
extern int __madvise (void *__addr, size_t __len, int __advice); extern int __madvise (void *__addr, size_t __len, int __advice);
libc_hidden_proto (__madvise) libc_hidden_proto (__madvise)

View File

@ -4,6 +4,8 @@
#ifndef _ISOMAC #ifndef _ISOMAC
/* Now define the internal interfaces. */ /* Now define the internal interfaces. */
extern int __tcgetattr (int __fd, struct termios *__termios_p); extern int __tcgetattr (int __fd, struct termios *__termios_p);
extern int __tcsetattr (int __fd, int __optional_actions,
const struct termios *__termios_p);
extern int __libc_tcdrain (int __fd); extern int __libc_tcdrain (int __fd);

View File

@ -78,7 +78,7 @@ extern struct tm *__tz_convert (const time_t *timer, int use_localtime, struct t
extern int __nanosleep (const struct timespec *__requested_time, extern int __nanosleep (const struct timespec *__requested_time,
struct timespec *__remaining); struct timespec *__remaining);
libc_hidden_proto (__nanosleep) hidden_proto (__nanosleep)
extern int __nanosleep_nocancel (const struct timespec *__requested_time, extern int __nanosleep_nocancel (const struct timespec *__requested_time,
struct timespec *__remaining) struct timespec *__remaining)
attribute_hidden; attribute_hidden;

View File

@ -163,5 +163,7 @@ libc {
__mktemp; __mktemp;
__libc_ifunc_impl_list; __libc_ifunc_impl_list;
__tdelete; __tfind; __tsearch; __twalk; __tdelete; __tfind; __tsearch; __twalk;
__mmap; __munmap; __mprotect;
__sched_get_priority_min; __sched_get_priority_max;
} }
} }

View File

@ -37,3 +37,4 @@ __mmap (__ptr_t addr, size_t len, int prot, int flags, int fd, off_t offset)
stub_warning (mmap) stub_warning (mmap)
weak_alias (__mmap, mmap) weak_alias (__mmap, mmap)
libc_hidden_def (__mmap)

View File

@ -45,3 +45,4 @@ __mmap64 (__ptr_t addr, size_t len, int prot, int flags, int fd,
} }
weak_alias (__mmap64, mmap64) weak_alias (__mmap64, mmap64)
libc_hidden_def (__mmap64)

View File

@ -278,7 +278,7 @@ __free_stacks (size_t limit)
/* Remove this block. This should never fail. If it does /* Remove this block. This should never fail. If it does
something is really wrong. */ something is really wrong. */
if (munmap (curr->stackblock, curr->stackblock_size) != 0) if (__munmap (curr->stackblock, curr->stackblock_size) != 0)
abort (); abort ();
/* Maybe we have freed enough. */ /* Maybe we have freed enough. */
@ -328,7 +328,7 @@ change_stack_perm (struct pthread *pd
#else #else
# error "Define either _STACK_GROWS_DOWN or _STACK_GROWS_UP" # error "Define either _STACK_GROWS_DOWN or _STACK_GROWS_UP"
#endif #endif
if (mprotect (stack, len, PROT_READ | PROT_WRITE | PROT_EXEC) != 0) if (__mprotect (stack, len, PROT_READ | PROT_WRITE | PROT_EXEC) != 0)
return errno; return errno;
return 0; return 0;
@ -359,14 +359,14 @@ setup_stack_prot (char *mem, size_t size, char *guard, size_t guardsize,
#if _STACK_GROWS_DOWN #if _STACK_GROWS_DOWN
/* As defined at guard_position, for architectures with downward stack /* As defined at guard_position, for architectures with downward stack
the guard page is always at start of the allocated area. */ the guard page is always at start of the allocated area. */
if (mprotect (guardend, size - guardsize, prot) != 0) if (__mprotect (guardend, size - guardsize, prot) != 0)
return errno; return errno;
#else #else
size_t mprots1 = (uintptr_t) guard - (uintptr_t) mem; size_t mprots1 = (uintptr_t) guard - (uintptr_t) mem;
if (mprotect (mem, mprots1, prot) != 0) if (__mprotect (mem, mprots1, prot) != 0)
return errno; return errno;
size_t mprots2 = ((uintptr_t) mem + size) - (uintptr_t) guardend; size_t mprots2 = ((uintptr_t) mem + size) - (uintptr_t) guardend;
if (mprotect (guardend, mprots2, prot) != 0) if (__mprotect (guardend, mprots2, prot) != 0)
return errno; return errno;
#endif #endif
return 0; return 0;
@ -530,7 +530,7 @@ allocate_stack (const struct pthread_attr *attr, struct pthread **pdp,
/* If a guard page is required, avoid committing memory by first /* If a guard page is required, avoid committing memory by first
allocate with PROT_NONE and then reserve with required permission allocate with PROT_NONE and then reserve with required permission
excluding the guard page. */ excluding the guard page. */
mem = mmap (NULL, size, (guardsize == 0) ? prot : PROT_NONE, mem = __mmap (NULL, size, (guardsize == 0) ? prot : PROT_NONE,
MAP_PRIVATE | MAP_ANONYMOUS | MAP_STACK, -1, 0); MAP_PRIVATE | MAP_ANONYMOUS | MAP_STACK, -1, 0);
if (__glibc_unlikely (mem == MAP_FAILED)) if (__glibc_unlikely (mem == MAP_FAILED))
@ -557,7 +557,7 @@ allocate_stack (const struct pthread_attr *attr, struct pthread **pdp,
pagesize_m1); pagesize_m1);
if (setup_stack_prot (mem, size, guard, guardsize, prot) != 0) if (setup_stack_prot (mem, size, guard, guardsize, prot) != 0)
{ {
munmap (mem, size); __munmap (mem, size);
return errno; return errno;
} }
} }
@ -600,7 +600,7 @@ allocate_stack (const struct pthread_attr *attr, struct pthread **pdp,
assert (errno == ENOMEM); assert (errno == ENOMEM);
/* Free the stack memory we just allocated. */ /* Free the stack memory we just allocated. */
(void) munmap (mem, size); (void) __munmap (mem, size);
return errno; return errno;
} }
@ -630,7 +630,7 @@ allocate_stack (const struct pthread_attr *attr, struct pthread **pdp,
if (err != 0) if (err != 0)
{ {
/* Free the stack memory we just allocated. */ /* Free the stack memory we just allocated. */
(void) munmap (mem, size); (void) __munmap (mem, size);
return err; return err;
} }
@ -650,7 +650,7 @@ allocate_stack (const struct pthread_attr *attr, struct pthread **pdp,
{ {
char *guard = guard_position (mem, size, guardsize, pd, char *guard = guard_position (mem, size, guardsize, pd,
pagesize_m1); pagesize_m1);
if (mprotect (guard, guardsize, PROT_NONE) != 0) if (__mprotect (guard, guardsize, PROT_NONE) != 0)
{ {
mprot_error: mprot_error:
lll_lock (stack_cache_lock, LLL_PRIVATE); lll_lock (stack_cache_lock, LLL_PRIVATE);
@ -668,7 +668,7 @@ allocate_stack (const struct pthread_attr *attr, struct pthread **pdp,
of memory caused problems we better do not use it of memory caused problems we better do not use it
anymore. Uh, and we ignore possible errors. There anymore. Uh, and we ignore possible errors. There
is nothing we could do. */ is nothing we could do. */
(void) munmap (mem, size); (void) __munmap (mem, size);
return errno; return errno;
} }
@ -685,19 +685,19 @@ allocate_stack (const struct pthread_attr *attr, struct pthread **pdp,
char *oldguard = mem + (((size - pd->guardsize) / 2) & ~pagesize_m1); char *oldguard = mem + (((size - pd->guardsize) / 2) & ~pagesize_m1);
if (oldguard < guard if (oldguard < guard
&& mprotect (oldguard, guard - oldguard, prot) != 0) && __mprotect (oldguard, guard - oldguard, prot) != 0)
goto mprot_error; goto mprot_error;
if (mprotect (guard + guardsize, if (__mprotect (guard + guardsize,
oldguard + pd->guardsize - guard - guardsize, oldguard + pd->guardsize - guard - guardsize,
prot) != 0) prot) != 0)
goto mprot_error; goto mprot_error;
#elif _STACK_GROWS_DOWN #elif _STACK_GROWS_DOWN
if (mprotect ((char *) mem + guardsize, pd->guardsize - guardsize, if (__mprotect ((char *) mem + guardsize, pd->guardsize - guardsize,
prot) != 0) prot) != 0)
goto mprot_error; goto mprot_error;
#elif _STACK_GROWS_UP #elif _STACK_GROWS_UP
if (mprotect ((char *) pd - pd->guardsize, if (__mprotect ((char *) pd - pd->guardsize,
pd->guardsize - guardsize, prot) != 0) pd->guardsize - guardsize, prot) != 0)
goto mprot_error; goto mprot_error;
#endif #endif

View File

@ -428,6 +428,8 @@ extern int __pthread_mutex_init (pthread_mutex_t *__mutex,
extern int __pthread_mutex_destroy (pthread_mutex_t *__mutex); extern int __pthread_mutex_destroy (pthread_mutex_t *__mutex);
extern int __pthread_mutex_trylock (pthread_mutex_t *_mutex); extern int __pthread_mutex_trylock (pthread_mutex_t *_mutex);
extern int __pthread_mutex_lock (pthread_mutex_t *__mutex); extern int __pthread_mutex_lock (pthread_mutex_t *__mutex);
extern int __pthread_mutex_timedlock (pthread_mutex_t *__mutex,
const struct timespec *__abstime);
extern int __pthread_mutex_cond_lock (pthread_mutex_t *__mutex) extern int __pthread_mutex_cond_lock (pthread_mutex_t *__mutex)
attribute_hidden internal_function; attribute_hidden internal_function;
extern void __pthread_mutex_cond_lock_adjust (pthread_mutex_t *__mutex) extern void __pthread_mutex_cond_lock_adjust (pthread_mutex_t *__mutex)
@ -491,6 +493,7 @@ extern int __pthread_cond_timedwait (pthread_cond_t *cond,
extern int __pthread_condattr_destroy (pthread_condattr_t *attr); extern int __pthread_condattr_destroy (pthread_condattr_t *attr);
extern int __pthread_condattr_init (pthread_condattr_t *attr); extern int __pthread_condattr_init (pthread_condattr_t *attr);
extern int __pthread_key_create (pthread_key_t *key, void (*destr) (void *)); extern int __pthread_key_create (pthread_key_t *key, void (*destr) (void *));
extern int __pthread_key_delete (pthread_key_t key);
extern void *__pthread_getspecific (pthread_key_t key); extern void *__pthread_getspecific (pthread_key_t key);
extern int __pthread_setspecific (pthread_key_t key, const void *value); extern int __pthread_setspecific (pthread_key_t key, const void *value);
extern int __pthread_once (pthread_once_t *once_control, extern int __pthread_once (pthread_once_t *once_control,
@ -499,8 +502,11 @@ extern int __pthread_atfork (void (*prepare) (void), void (*parent) (void),
void (*child) (void)); void (*child) (void));
extern pthread_t __pthread_self (void); extern pthread_t __pthread_self (void);
extern int __pthread_equal (pthread_t thread1, pthread_t thread2); extern int __pthread_equal (pthread_t thread1, pthread_t thread2);
extern int __pthread_detach (pthread_t th);
extern int __pthread_cancel (pthread_t th);
extern int __pthread_kill (pthread_t threadid, int signo); extern int __pthread_kill (pthread_t threadid, int signo);
extern void __pthread_exit (void *value) __attribute__ ((__noreturn__)); extern void __pthread_exit (void *value) __attribute__ ((__noreturn__));
extern int __pthread_join (pthread_t threadid, void **thread_return);
extern int __pthread_setcanceltype (int type, int *oldtype); extern int __pthread_setcanceltype (int type, int *oldtype);
extern int __pthread_enable_asynccancel (void) attribute_hidden; extern int __pthread_enable_asynccancel (void) attribute_hidden;
extern void __pthread_disable_asynccancel (int oldtype) extern void __pthread_disable_asynccancel (int oldtype)
@ -511,6 +517,7 @@ extern void __pthread_testcancel (void);
hidden_proto (__pthread_mutex_init) hidden_proto (__pthread_mutex_init)
hidden_proto (__pthread_mutex_destroy) hidden_proto (__pthread_mutex_destroy)
hidden_proto (__pthread_mutex_lock) hidden_proto (__pthread_mutex_lock)
hidden_proto (__pthread_mutex_trylock)
hidden_proto (__pthread_mutex_unlock) hidden_proto (__pthread_mutex_unlock)
hidden_proto (__pthread_rwlock_rdlock) hidden_proto (__pthread_rwlock_rdlock)
hidden_proto (__pthread_rwlock_wrlock) hidden_proto (__pthread_rwlock_wrlock)
@ -521,6 +528,8 @@ hidden_proto (__pthread_setspecific)
hidden_proto (__pthread_once) hidden_proto (__pthread_once)
hidden_proto (__pthread_setcancelstate) hidden_proto (__pthread_setcancelstate)
hidden_proto (__pthread_testcancel) hidden_proto (__pthread_testcancel)
hidden_proto (__pthread_mutexattr_init)
hidden_proto (__pthread_mutexattr_settype)
#endif #endif
extern int __pthread_cond_broadcast_2_0 (pthread_cond_2_0_t *cond); extern int __pthread_cond_broadcast_2_0 (pthread_cond_2_0_t *cond);

View File

@ -25,7 +25,7 @@
#include <unistd.h> #include <unistd.h>
int int
pthread_cancel (pthread_t th) __pthread_cancel (pthread_t th)
{ {
volatile struct pthread *pd = (volatile struct pthread *) th; volatile struct pthread *pd = (volatile struct pthread *) th;
@ -66,7 +66,7 @@ pthread_cancel (pthread_t th)
#ifdef SIGCANCEL #ifdef SIGCANCEL
/* The cancellation handler will take care of marking the /* The cancellation handler will take care of marking the
thread as canceled. */ thread as canceled. */
pid_t pid = getpid (); pid_t pid = __getpid ();
INTERNAL_SYSCALL_DECL (err); INTERNAL_SYSCALL_DECL (err);
int val = INTERNAL_SYSCALL_CALL (tgkill, err, pid, pd->tid, int val = INTERNAL_SYSCALL_CALL (tgkill, err, pid, pd->tid,
@ -99,5 +99,6 @@ pthread_cancel (pthread_t th)
return result; return result;
} }
weak_alias (__pthread_cancel, pthread_cancel)
PTHREAD_STATIC_FN_REQUIRE (pthread_create) PTHREAD_STATIC_FN_REQUIRE (__pthread_create)

View File

@ -920,14 +920,14 @@ compat_symbol (libpthread, __pthread_create_2_0, pthread_create,
/* If pthread_create is present, libgcc_eh.a and libsupc++.a expects some other POSIX thread /* If pthread_create is present, libgcc_eh.a and libsupc++.a expects some other POSIX thread
functions to be present as well. */ functions to be present as well. */
PTHREAD_STATIC_FN_REQUIRE (pthread_mutex_lock) PTHREAD_STATIC_FN_REQUIRE (__pthread_mutex_lock)
PTHREAD_STATIC_FN_REQUIRE (pthread_mutex_trylock) PTHREAD_STATIC_FN_REQUIRE (__pthread_mutex_trylock)
PTHREAD_STATIC_FN_REQUIRE (pthread_mutex_unlock) PTHREAD_STATIC_FN_REQUIRE (__pthread_mutex_unlock)
PTHREAD_STATIC_FN_REQUIRE (pthread_once) PTHREAD_STATIC_FN_REQUIRE (__pthread_once)
PTHREAD_STATIC_FN_REQUIRE (pthread_cancel) PTHREAD_STATIC_FN_REQUIRE (__pthread_cancel)
PTHREAD_STATIC_FN_REQUIRE (pthread_key_create) PTHREAD_STATIC_FN_REQUIRE (__pthread_key_create)
PTHREAD_STATIC_FN_REQUIRE (pthread_key_delete) PTHREAD_STATIC_FN_REQUIRE (__pthread_key_delete)
PTHREAD_STATIC_FN_REQUIRE (pthread_setspecific) PTHREAD_STATIC_FN_REQUIRE (__pthread_setspecific)
PTHREAD_STATIC_FN_REQUIRE (pthread_getspecific) PTHREAD_STATIC_FN_REQUIRE (__pthread_getspecific)

View File

@ -22,7 +22,7 @@
int int
pthread_detach (pthread_t th) __pthread_detach (pthread_t th)
{ {
struct pthread *pd = (struct pthread *) th; struct pthread *pd = (struct pthread *) th;
@ -53,3 +53,4 @@ pthread_detach (pthread_t th)
return result; return result;
} }
weak_alias (__pthread_detach, pthread_detach)

View File

@ -24,4 +24,4 @@ __pthread_equal (pthread_t thread1, pthread_t thread2)
{ {
return thread1 == thread2; return thread1 == thread2;
} }
strong_alias (__pthread_equal, pthread_equal) weak_alias (__pthread_equal, pthread_equal)

View File

@ -27,8 +27,8 @@ __pthread_exit (void *value)
__do_cancel (); __do_cancel ();
} }
strong_alias (__pthread_exit, pthread_exit) weak_alias (__pthread_exit, pthread_exit)
/* After a thread terminates, __libc_start_main decrements /* After a thread terminates, __libc_start_main decrements
__nptl_nthreads defined in pthread_create.c. */ __nptl_nthreads defined in pthread_create.c. */
PTHREAD_STATIC_FN_REQUIRE (pthread_create) PTHREAD_STATIC_FN_REQUIRE (__pthread_create)

View File

@ -63,5 +63,5 @@ __pthread_getspecific (pthread_key_t key)
return result; return result;
} }
strong_alias (__pthread_getspecific, pthread_getspecific) weak_alias (__pthread_getspecific, pthread_getspecific)
hidden_def (__pthread_getspecific) hidden_def (__pthread_getspecific)

View File

@ -37,7 +37,7 @@ cleanup (void *arg)
int int
pthread_join (pthread_t threadid, void **thread_return) __pthread_join (pthread_t threadid, void **thread_return)
{ {
struct pthread *pd = (struct pthread *) threadid; struct pthread *pd = (struct pthread *) threadid;
@ -115,3 +115,4 @@ pthread_join (pthread_t threadid, void **thread_return)
return result; return result;
} }
weak_alias (__pthread_join, pthread_join)

View File

@ -47,5 +47,5 @@ __pthread_key_create (pthread_key_t *key, void (*destr) (void *))
return EAGAIN; return EAGAIN;
} }
strong_alias (__pthread_key_create, pthread_key_create) weak_alias (__pthread_key_create, pthread_key_create)
hidden_def (__pthread_key_create) hidden_def (__pthread_key_create)

View File

@ -22,7 +22,7 @@
int int
pthread_key_delete (pthread_key_t key) __pthread_key_delete (pthread_key_t key)
{ {
int result = EINVAL; int result = EINVAL;
@ -39,3 +39,4 @@ pthread_key_delete (pthread_key_t key)
return result; return result;
} }
weak_alias (__pthread_key_delete, pthread_key_delete)

View File

@ -36,5 +36,5 @@ __pthread_mutex_destroy (pthread_mutex_t *mutex)
return 0; return 0;
} }
strong_alias (__pthread_mutex_destroy, pthread_mutex_destroy) weak_alias (__pthread_mutex_destroy, pthread_mutex_destroy)
hidden_def (__pthread_mutex_destroy) hidden_def (__pthread_mutex_destroy)

View File

@ -144,5 +144,5 @@ __pthread_mutex_init (pthread_mutex_t *mutex,
return 0; return 0;
} }
strong_alias (__pthread_mutex_init, pthread_mutex_init) weak_alias (__pthread_mutex_init, pthread_mutex_init)
hidden_def (__pthread_mutex_init) hidden_def (__pthread_mutex_init)

View File

@ -597,7 +597,7 @@ __pthread_mutex_lock_full (pthread_mutex_t *mutex)
return 0; return 0;
} }
#ifndef __pthread_mutex_lock #ifndef __pthread_mutex_lock
strong_alias (__pthread_mutex_lock, pthread_mutex_lock) weak_alias (__pthread_mutex_lock, pthread_mutex_lock)
hidden_def (__pthread_mutex_lock) hidden_def (__pthread_mutex_lock)
#endif #endif

View File

@ -41,7 +41,7 @@
#endif #endif
int int
pthread_mutex_timedlock (pthread_mutex_t *mutex, __pthread_mutex_timedlock (pthread_mutex_t *mutex,
const struct timespec *abstime) const struct timespec *abstime)
{ {
int oldval; int oldval;
@ -634,3 +634,4 @@ pthread_mutex_timedlock (pthread_mutex_t *mutex,
out: out:
return result; return result;
} }
weak_alias (__pthread_mutex_timedlock, pthread_mutex_timedlock)

View File

@ -403,6 +403,7 @@ __pthread_mutex_trylock (pthread_mutex_t *mutex)
#ifndef __pthread_mutex_trylock #ifndef __pthread_mutex_trylock
#ifndef pthread_mutex_trylock #ifndef pthread_mutex_trylock
strong_alias (__pthread_mutex_trylock, pthread_mutex_trylock) weak_alias (__pthread_mutex_trylock, pthread_mutex_trylock)
hidden_def (__pthread_mutex_trylock)
#endif #endif
#endif #endif

View File

@ -346,5 +346,5 @@ __pthread_mutex_unlock (pthread_mutex_t *mutex)
{ {
return __pthread_mutex_unlock_usercnt (mutex, 1); return __pthread_mutex_unlock_usercnt (mutex, 1);
} }
strong_alias (__pthread_mutex_unlock, pthread_mutex_unlock) weak_alias (__pthread_mutex_unlock, pthread_mutex_unlock)
hidden_def (__pthread_mutex_unlock) hidden_def (__pthread_mutex_unlock)

View File

@ -33,4 +33,5 @@ __pthread_mutexattr_init (pthread_mutexattr_t *attr)
return 0; return 0;
} }
strong_alias (__pthread_mutexattr_init, pthread_mutexattr_init) weak_alias (__pthread_mutexattr_init, pthread_mutexattr_init)
hidden_def (__pthread_mutexattr_init)

View File

@ -40,4 +40,5 @@ __pthread_mutexattr_settype (pthread_mutexattr_t *attr, int kind)
return 0; return 0;
} }
weak_alias (__pthread_mutexattr_settype, pthread_mutexattr_setkind_np) weak_alias (__pthread_mutexattr_settype, pthread_mutexattr_setkind_np)
strong_alias (__pthread_mutexattr_settype, pthread_mutexattr_settype) weak_alias (__pthread_mutexattr_settype, pthread_mutexattr_settype)
hidden_def (__pthread_mutexattr_settype)

View File

@ -25,4 +25,4 @@ __pthread_self (void)
{ {
return (pthread_t) THREAD_SELF; return (pthread_t) THREAD_SELF;
} }
strong_alias (__pthread_self, pthread_self) weak_alias (__pthread_self, pthread_self)

View File

@ -89,5 +89,5 @@ __pthread_setspecific (pthread_key_t key, const void *value)
return 0; return 0;
} }
strong_alias (__pthread_setspecific, pthread_setspecific) weak_alias (__pthread_setspecific, pthread_setspecific)
hidden_def (__pthread_setspecific) hidden_def (__pthread_setspecific)

View File

@ -43,9 +43,9 @@ void
__init_sched_fifo_prio (void) __init_sched_fifo_prio (void)
{ {
atomic_store_relaxed (&__sched_fifo_max_prio, atomic_store_relaxed (&__sched_fifo_max_prio,
sched_get_priority_max (SCHED_FIFO)); __sched_get_priority_max (SCHED_FIFO));
atomic_store_relaxed (&__sched_fifo_min_prio, atomic_store_relaxed (&__sched_fifo_min_prio,
sched_get_priority_min (SCHED_FIFO)); __sched_get_priority_min (SCHED_FIFO));
} }
int int

View File

@ -29,5 +29,5 @@ __nanosleep (const struct timespec *requested_time,
} }
stub_warning (nanosleep) stub_warning (nanosleep)
libc_hidden_def (__nanosleep) hidden_def (__nanosleep)
weak_alias (__nanosleep, nanosleep) weak_alias (__nanosleep, nanosleep)

View File

@ -29,7 +29,7 @@ __gethostname (char *name, size_t len)
struct utsname buf; struct utsname buf;
size_t node_len; size_t node_len;
if (uname (&buf)) if (__uname (&buf))
return -1; return -1;
node_len = strlen (buf.nodename) + 1; node_len = strlen (buf.nodename) + 1;

View File

@ -46,6 +46,6 @@ libc {
fallocate64; fallocate64;
} }
GLIBC_PRIVATE { GLIBC_PRIVATE {
__modify_ldt; __modify_ldt; __uname;
} }
} }

View File

@ -36,7 +36,7 @@ is_smp_system (void)
char *cp; char *cp;
/* Try reading the number using `sysctl' first. */ /* Try reading the number using `sysctl' first. */
if (uname (&u.uts) == 0) if (__uname (&u.uts) == 0)
cp = u.uts.version; cp = u.uts.version;
else else
{ {

View File

@ -47,5 +47,6 @@ __mmap (void *addr, size_t len, int prot, int flags, int fd, off_t offset)
#endif #endif
} }
weak_alias (__mmap, mmap) weak_alias (__mmap, mmap)
libc_hidden_def (__mmap)
#endif /* __OFF_T_MATCHES_OFF64_T */ #endif /* __OFF_T_MATCHES_OFF64_T */

View File

@ -53,8 +53,10 @@ __mmap64 (void *addr, size_t len, int prot, int flags, int fd, off64_t offset)
#endif #endif
} }
weak_alias (__mmap64, mmap64) weak_alias (__mmap64, mmap64)
libc_hidden_def (__mmap64)
#ifdef __OFF_T_MATCHES_OFF64_T #ifdef __OFF_T_MATCHES_OFF64_T
weak_alias (__mmap64, mmap) weak_alias (__mmap64, mmap)
weak_alias (__mmap64, __mmap) weak_alias (__mmap64, __mmap)
libc_hidden_def (__mmap)
#endif #endif

View File

@ -26,5 +26,5 @@ __nanosleep (const struct timespec *requested_time,
{ {
return SYSCALL_CANCEL (nanosleep, requested_time, remaining); return SYSCALL_CANCEL (nanosleep, requested_time, remaining);
} }
libc_hidden_def (__nanosleep) hidden_def (__nanosleep)
weak_alias (__nanosleep, nanosleep) weak_alias (__nanosleep, nanosleep)

View File

@ -41,15 +41,15 @@ __ioctl (int fd, unsigned long int request, ...)
break; break;
case TCSETS: case TCSETS:
result = tcsetattr (fd, TCSANOW, (struct termios *) arg); result = __tcsetattr (fd, TCSANOW, (struct termios *) arg);
break; break;
case TCSETSW: case TCSETSW:
result = tcsetattr (fd, TCSADRAIN, (struct termios *) arg); result = __tcsetattr (fd, TCSADRAIN, (struct termios *) arg);
break; break;
case TCSETSF: case TCSETSF:
result = tcsetattr (fd, TCSAFLUSH, (struct termios *) arg); result = __tcsetattr (fd, TCSAFLUSH, (struct termios *) arg);
break; break;
default: default:

View File

@ -41,7 +41,7 @@
/* Set the state of FD to *TERMIOS_P. */ /* Set the state of FD to *TERMIOS_P. */
int int
tcsetattr (int fd, int optional_actions, const struct termios *termios_p) __tcsetattr (int fd, int optional_actions, const struct termios *termios_p)
{ {
struct __kernel_termios k_termios; struct __kernel_termios k_termios;
unsigned long int cmd; unsigned long int cmd;
@ -77,4 +77,5 @@ tcsetattr (int fd, int optional_actions, const struct termios *termios_p)
return INLINE_SYSCALL (ioctl, 3, fd, cmd, &k_termios); return INLINE_SYSCALL (ioctl, 3, fd, cmd, &k_termios);
} }
weak_alias (__tcsetattr, tcsetattr)
libc_hidden_def (tcsetattr) libc_hidden_def (tcsetattr)