mirror of git://sourceware.org/git/glibc.git
htl: move __pthread_get_cleanup_stack to libc
This fixes the cleanup call from __qsort_r
This commit is contained in:
parent
b80f108b55
commit
6afece738c
|
@ -35,7 +35,6 @@ libpthread-routines := \
|
|||
pt-initialize \
|
||||
pt-join \
|
||||
pt-spin-inlines \
|
||||
pt-cleanup \
|
||||
pt-testcancel \
|
||||
pt-cancel \
|
||||
pt-mutex-transfer-np \
|
||||
|
@ -143,6 +142,7 @@ routines := \
|
|||
pt-barrierattr-setpshared \
|
||||
pt-block \
|
||||
pt-block-intr \
|
||||
pt-cleanup \
|
||||
pt-cond \
|
||||
pt-cond-brdcast \
|
||||
pt-cond-destroy \
|
||||
|
|
|
@ -2,6 +2,7 @@ libc {
|
|||
|
||||
GLIBC_2.12 {
|
||||
pthread_self;
|
||||
__pthread_get_cleanup_stack;
|
||||
__pthread_key_create;
|
||||
__pthread_self;
|
||||
pthread_attr_getdetachstate;
|
||||
|
@ -242,8 +243,6 @@ libpthread {
|
|||
__errno_location; __h_errno_location;
|
||||
}
|
||||
GLIBC_2.12 {
|
||||
__pthread_get_cleanup_stack;
|
||||
|
||||
__pthread_mutex_transfer_np;
|
||||
|
||||
cthread_detach;
|
||||
|
|
|
@ -57,6 +57,3 @@ name decl \
|
|||
FORWARD_NORETURN (__pthread_exit, void, (void *retval), (retval),
|
||||
exit (EXIT_SUCCESS))
|
||||
strong_alias (__pthread_exit, pthread_exit);
|
||||
|
||||
FORWARD2 (__pthread_get_cleanup_stack, struct __pthread_cancelation_handler **,
|
||||
(void), (), return &__pthread_cleanup_stack);
|
||||
|
|
|
@ -19,10 +19,16 @@
|
|||
#include <pthread.h>
|
||||
|
||||
#include <pt-internal.h>
|
||||
#include <shlib-compat.h>
|
||||
|
||||
struct __pthread_cancelation_handler **
|
||||
__pthread_get_cleanup_stack (void)
|
||||
___pthread_get_cleanup_stack (void)
|
||||
{
|
||||
return &__pthread_cleanup_stack;
|
||||
}
|
||||
hidden_def(__pthread_get_cleanup_stack)
|
||||
versioned_symbol (libc, ___pthread_get_cleanup_stack, __pthread_get_cleanup_stack, GLIBC_2_21);
|
||||
libc_hidden_ver (___pthread_get_cleanup_stack, __pthread_get_cleanup_stack)
|
||||
|
||||
#if OTHER_SHLIB_COMPAT (libpthread, GLIBC_2_12, GLIBC_2_21)
|
||||
compat_symbol (libpthread, ___pthread_get_cleanup_stack, __pthread_get_cleanup_stack, GLIBC_2_12);
|
||||
#endif
|
||||
|
|
|
@ -28,7 +28,6 @@
|
|||
#if IS_IN (libpthread)
|
||||
static const struct pthread_functions pthread_functions = {
|
||||
.ptr___pthread_exit = __pthread_exit,
|
||||
.ptr___pthread_get_cleanup_stack = __pthread_get_cleanup_stack,
|
||||
.ptr__IO_flockfile = _cthreads_flockfile,
|
||||
.ptr__IO_funlockfile = _cthreads_funlockfile,
|
||||
.ptr__IO_ftrylockfile = _cthreads_ftrylockfile,
|
||||
|
|
|
@ -0,0 +1,5 @@
|
|||
#include_next <bits/cancelation.h>
|
||||
|
||||
#ifndef _ISOMAC
|
||||
#include <pthreadP.h>
|
||||
#endif
|
|
@ -37,13 +37,10 @@
|
|||
{ \
|
||||
__handler.__handler = FCT; \
|
||||
__handler.__arg = ARG; \
|
||||
if (__pthread_get_cleanup_stack != NULL) \
|
||||
{ \
|
||||
__handlers = __pthread_get_cleanup_stack (); \
|
||||
__handler.__next = *__handlers; \
|
||||
*__handlers = &__handler; \
|
||||
__registered = 1; \
|
||||
} \
|
||||
__handlers = __pthread_get_cleanup_stack (); \
|
||||
__handler.__next = *__handlers; \
|
||||
*__handlers = &__handler; \
|
||||
__registered = 1; \
|
||||
} \
|
||||
|
||||
#define __libc_cleanup_end(DOIT) \
|
||||
|
@ -59,12 +56,4 @@
|
|||
#define __libc_cleanup_push(fct, arg) __libc_cleanup_region_start (1, fct, arg)
|
||||
#define __libc_cleanup_pop(execute) __libc_cleanup_region_end (execute)
|
||||
|
||||
#if !IS_IN (libpthread)
|
||||
# ifdef weak_extern
|
||||
weak_extern (__pthread_get_cleanup_stack)
|
||||
# else
|
||||
# pragma weak __pthread_get_cleanup_stack
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
|
|
@ -22,7 +22,6 @@
|
|||
#include <pthread.h>
|
||||
|
||||
void __pthread_exit (void *) __attribute__ ((__noreturn__));
|
||||
struct __pthread_cancelation_handler **__pthread_get_cleanup_stack (void);
|
||||
|
||||
void _cthreads_flockfile (FILE *);
|
||||
void _cthreads_funlockfile (FILE *);
|
||||
|
@ -34,7 +33,6 @@ int _cthreads_ftrylockfile (FILE *);
|
|||
struct pthread_functions
|
||||
{
|
||||
void (*ptr___pthread_exit) (void *) __attribute__ ((__noreturn__));
|
||||
struct __pthread_cancelation_handler **(*ptr___pthread_get_cleanup_stack) (void);
|
||||
void (*ptr__IO_flockfile) (FILE *);
|
||||
void (*ptr__IO_funlockfile) (FILE *);
|
||||
int (*ptr__IO_ftrylockfile) (FILE *);
|
||||
|
|
|
@ -216,11 +216,11 @@ int __pthread_condattr_init (pthread_condattr_t *attr);
|
|||
libc_hidden_proto (__pthread_self)
|
||||
libc_hidden_proto (__pthread_attr_init)
|
||||
libc_hidden_proto (__pthread_condattr_init)
|
||||
libc_hidden_proto (__pthread_get_cleanup_stack)
|
||||
|
||||
#if IS_IN (libpthread)
|
||||
hidden_proto (__pthread_create)
|
||||
hidden_proto (__pthread_detach)
|
||||
hidden_proto (__pthread_get_cleanup_stack)
|
||||
#endif
|
||||
|
||||
#if !defined(__NO_WEAK_PTHREAD_ALIASES) && !IS_IN (libpthread)
|
||||
|
|
|
@ -337,7 +337,8 @@ ifeq ($(subdir),stdlib)
|
|||
tests-unsupported += test-bz22786 tst-strtod-overflow
|
||||
# pthread_cleanup_combined_push/pthread_cleanup_combined_pop requires cleanup
|
||||
# support (BZ 32058).
|
||||
test-xfail-tst-qsortx7 = yes
|
||||
test-xfail-tst-qsort7-mem = yes
|
||||
test-xfail-tst-qsortx7-mem = yes
|
||||
endif
|
||||
ifeq ($(subdir),timezone)
|
||||
tests-unsupported += tst-tzset
|
||||
|
|
|
@ -28,6 +28,7 @@ GLIBC_2.11 mkostemps F
|
|||
GLIBC_2.11 mkostemps64 F
|
||||
GLIBC_2.11 mkstemps F
|
||||
GLIBC_2.11 mkstemps64 F
|
||||
GLIBC_2.12 __pthread_get_cleanup_stack F
|
||||
GLIBC_2.12 __pthread_key_create F
|
||||
GLIBC_2.12 __pthread_self F
|
||||
GLIBC_2.12 pthread_attr_destroy F
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
GLIBC_2.12 __mutex_lock_solid F
|
||||
GLIBC_2.12 __mutex_unlock_solid F
|
||||
GLIBC_2.12 __pthread_get_cleanup_stack F
|
||||
GLIBC_2.12 __pthread_kill F
|
||||
GLIBC_2.12 __pthread_mutex_transfer_np F
|
||||
GLIBC_2.12 __pthread_spin_destroy F
|
||||
|
|
|
@ -5,7 +5,6 @@ GLIBC_2.38 __errno_location F
|
|||
GLIBC_2.38 __h_errno_location F
|
||||
GLIBC_2.38 __mutex_lock_solid F
|
||||
GLIBC_2.38 __mutex_unlock_solid F
|
||||
GLIBC_2.38 __pthread_get_cleanup_stack F
|
||||
GLIBC_2.38 __pthread_kill F
|
||||
GLIBC_2.38 __pthread_mutex_transfer_np F
|
||||
GLIBC_2.38 __pthread_spin_destroy F
|
||||
|
|
Loading…
Reference in New Issue