diff options
Diffstat (limited to 'libpthread/nptl/sysdeps/unix')
-rw-r--r-- | libpthread/nptl/sysdeps/unix/sysv/linux/Makefile.in | 6 | ||||
-rw-r--r-- | libpthread/nptl/sysdeps/unix/sysv/linux/arm/unwind-resume.c | 9 |
2 files changed, 12 insertions, 3 deletions
diff --git a/libpthread/nptl/sysdeps/unix/sysv/linux/Makefile.in b/libpthread/nptl/sysdeps/unix/sysv/linux/Makefile.in index 06ef1a77f..472e63614 100644 --- a/libpthread/nptl/sysdeps/unix/sysv/linux/Makefile.in +++ b/libpthread/nptl/sysdeps/unix/sysv/linux/Makefile.in @@ -20,7 +20,11 @@ libc_CSRC = libc_pthread_init.c libc_multiple_threads.c \ raise.c sleep.c jmp-unwind.c # These provide both a cancellable and a not cancellable implementation -libc_SSRC = close.S open.S waitpid.S write.S read.S +libc_SSRC = close.S open.S write.S read.S + +ifneq ($(TARGET_ARCH),arm) +libc_SSRC += waitpid.S +endif librt_CSRC := mq_notify.c timer_create.c timer_delete.c \ timer_getoverr.c timer_gettime.c timer_routines.c \ diff --git a/libpthread/nptl/sysdeps/unix/sysv/linux/arm/unwind-resume.c b/libpthread/nptl/sysdeps/unix/sysv/linux/arm/unwind-resume.c index e01b52801..344f80535 100644 --- a/libpthread/nptl/sysdeps/unix/sysv/linux/arm/unwind-resume.c +++ b/libpthread/nptl/sysdeps/unix/sysv/linux/arm/unwind-resume.c @@ -21,6 +21,9 @@ #include <stdio.h> #include <unwind.h> +#define __libc_dlopen(x) dlopen(x, (RTLD_LOCAL | RTLD_LAZY)) +#define __libc_dlsym dlsym + static void (*libgcc_s_resume) (struct _Unwind_Exception *exc); static _Unwind_Reason_Code (*libgcc_s_personality) (_Unwind_State, struct _Unwind_Exception *, struct _Unwind_Context *); @@ -37,8 +40,10 @@ init (void) if (handle == NULL || (resume = __libc_dlsym (handle, "_Unwind_Resume")) == NULL - || (personality = __libc_dlsym (handle, "__gcc_personality_v0")) == NULL) - __libc_fatal ("libgcc_s.so.1 must be installed for pthread_cancel to work\n"); + || (personality = __libc_dlsym (handle, "__gcc_personality_v0")) == NULL) { + fprintf(stderr, "libgcc_s.so.1 must be installed for pthread_cancel to work\n"); + abort (); + } libgcc_s_resume = resume; libgcc_s_personality = personality; |