_exit in libc is now __sys_exit not __sys__exit.
Add another check for thread library initialization (jdp, we really need a way to get _thread_init called at program start before any constructors are run).
This commit is contained in:
parent
ca55abf319
commit
c3dd7e380e
@ -1281,8 +1281,8 @@ void _thread_enter_cancellation_point(void);
|
||||
void _thread_leave_cancellation_point(void);
|
||||
void _thread_cancellation_point(void);
|
||||
|
||||
/* #include <aio.h> */
|
||||
#ifdef _AIO_H_
|
||||
/* #include <sys/aio.h> */
|
||||
#ifdef _SYS_AIO_H_
|
||||
int __sys_aio_suspend(const struct aiocb **, int, const struct timespec);
|
||||
#endif
|
||||
|
||||
@ -1349,7 +1349,7 @@ int __sys_select(int, fd_set *, fd_set *, fd_set *, struct timeval *);
|
||||
long __sys_fpathconf(int, int);
|
||||
ssize_t __sys_read(int, void *, size_t);
|
||||
ssize_t __sys_write(int, const void *, size_t);
|
||||
void __sys__exit(int);
|
||||
void __sys_exit(int);
|
||||
#endif
|
||||
|
||||
/* #include <fcntl.h> */
|
||||
|
@ -43,10 +43,9 @@
|
||||
#define FLAGS_IN_SCHEDQ \
|
||||
(PTHREAD_FLAGS_IN_PRIOQ|PTHREAD_FLAGS_IN_WAITQ|PTHREAD_FLAGS_IN_WORKQ)
|
||||
|
||||
#pragma weak _exit=__exit
|
||||
#pragma weak pthread_exit=_pthread_exit
|
||||
|
||||
void __exit(int status)
|
||||
void _exit(int status)
|
||||
{
|
||||
int flags;
|
||||
int i;
|
||||
@ -79,7 +78,7 @@ void __exit(int status)
|
||||
}
|
||||
|
||||
/* Call the _exit syscall: */
|
||||
__sys__exit(status);
|
||||
__sys_exit(status);
|
||||
}
|
||||
|
||||
void
|
||||
@ -104,7 +103,7 @@ _thread_exit(char *fname, int lineno, char *string)
|
||||
#if defined(_PTHREADS_INVARIANTS)
|
||||
abort();
|
||||
#else
|
||||
_exit(1);
|
||||
__sys_exit(1);
|
||||
#endif
|
||||
}
|
||||
|
||||
|
@ -76,6 +76,9 @@ _thread_fd_table_init(int fd)
|
||||
struct fd_table_entry *entry;
|
||||
int saved_errno;
|
||||
|
||||
if (_thread_initial == NULL)
|
||||
_thread_init();
|
||||
|
||||
/* Check if the file descriptor is out of range: */
|
||||
if (fd < 0 || fd >= _thread_dtablesize) {
|
||||
/* Return a bad file descriptor error: */
|
||||
|
@ -43,10 +43,9 @@
|
||||
#define FLAGS_IN_SCHEDQ \
|
||||
(PTHREAD_FLAGS_IN_PRIOQ|PTHREAD_FLAGS_IN_WAITQ|PTHREAD_FLAGS_IN_WORKQ)
|
||||
|
||||
#pragma weak _exit=__exit
|
||||
#pragma weak pthread_exit=_pthread_exit
|
||||
|
||||
void __exit(int status)
|
||||
void _exit(int status)
|
||||
{
|
||||
int flags;
|
||||
int i;
|
||||
@ -79,7 +78,7 @@ void __exit(int status)
|
||||
}
|
||||
|
||||
/* Call the _exit syscall: */
|
||||
__sys__exit(status);
|
||||
__sys_exit(status);
|
||||
}
|
||||
|
||||
void
|
||||
@ -104,7 +103,7 @@ _thread_exit(char *fname, int lineno, char *string)
|
||||
#if defined(_PTHREADS_INVARIANTS)
|
||||
abort();
|
||||
#else
|
||||
_exit(1);
|
||||
__sys_exit(1);
|
||||
#endif
|
||||
}
|
||||
|
||||
|
@ -1281,8 +1281,8 @@ void _thread_enter_cancellation_point(void);
|
||||
void _thread_leave_cancellation_point(void);
|
||||
void _thread_cancellation_point(void);
|
||||
|
||||
/* #include <aio.h> */
|
||||
#ifdef _AIO_H_
|
||||
/* #include <sys/aio.h> */
|
||||
#ifdef _SYS_AIO_H_
|
||||
int __sys_aio_suspend(const struct aiocb **, int, const struct timespec);
|
||||
#endif
|
||||
|
||||
@ -1349,7 +1349,7 @@ int __sys_select(int, fd_set *, fd_set *, fd_set *, struct timeval *);
|
||||
long __sys_fpathconf(int, int);
|
||||
ssize_t __sys_read(int, void *, size_t);
|
||||
ssize_t __sys_write(int, const void *, size_t);
|
||||
void __sys__exit(int);
|
||||
void __sys_exit(int);
|
||||
#endif
|
||||
|
||||
/* #include <fcntl.h> */
|
||||
|
@ -43,10 +43,9 @@
|
||||
#define FLAGS_IN_SCHEDQ \
|
||||
(PTHREAD_FLAGS_IN_PRIOQ|PTHREAD_FLAGS_IN_WAITQ|PTHREAD_FLAGS_IN_WORKQ)
|
||||
|
||||
#pragma weak _exit=__exit
|
||||
#pragma weak pthread_exit=_pthread_exit
|
||||
|
||||
void __exit(int status)
|
||||
void _exit(int status)
|
||||
{
|
||||
int flags;
|
||||
int i;
|
||||
@ -79,7 +78,7 @@ void __exit(int status)
|
||||
}
|
||||
|
||||
/* Call the _exit syscall: */
|
||||
__sys__exit(status);
|
||||
__sys_exit(status);
|
||||
}
|
||||
|
||||
void
|
||||
@ -104,7 +103,7 @@ _thread_exit(char *fname, int lineno, char *string)
|
||||
#if defined(_PTHREADS_INVARIANTS)
|
||||
abort();
|
||||
#else
|
||||
_exit(1);
|
||||
__sys_exit(1);
|
||||
#endif
|
||||
}
|
||||
|
||||
|
@ -1281,8 +1281,8 @@ void _thread_enter_cancellation_point(void);
|
||||
void _thread_leave_cancellation_point(void);
|
||||
void _thread_cancellation_point(void);
|
||||
|
||||
/* #include <aio.h> */
|
||||
#ifdef _AIO_H_
|
||||
/* #include <sys/aio.h> */
|
||||
#ifdef _SYS_AIO_H_
|
||||
int __sys_aio_suspend(const struct aiocb **, int, const struct timespec);
|
||||
#endif
|
||||
|
||||
@ -1349,7 +1349,7 @@ int __sys_select(int, fd_set *, fd_set *, fd_set *, struct timeval *);
|
||||
long __sys_fpathconf(int, int);
|
||||
ssize_t __sys_read(int, void *, size_t);
|
||||
ssize_t __sys_write(int, const void *, size_t);
|
||||
void __sys__exit(int);
|
||||
void __sys_exit(int);
|
||||
#endif
|
||||
|
||||
/* #include <fcntl.h> */
|
||||
|
Loading…
x
Reference in New Issue
Block a user