On 2/10/2010 3:24 PM, Khem Raj wrote: > > commit: > http://git.uclibc.org/uClibc/commit/?id=ed0915ba70d0ff6ed0a78f45d46822763a580737 > branch: http://git.uclibc.org/uClibc/commit/?id=refs/heads/nptl_glibc_sync > > Signed-off-by: Khem Raj <[email protected]>
Hi Khem, I have limited capabilities to contribute currently due to a healthy issue at my shoulder, I'll ask some engineers in my team to do a lot of tests on sh4. Cheers, Carmelo > --- > libc/sysdeps/linux/common/pause.c | 1 + > libc/sysdeps/linux/sh/sysdep.h | 21 > +++++++++++++++++++- > .../nptl/sysdeps/unix/sysv/linux/Makefile.in | 6 ++-- > .../nptl/sysdeps/unix/sysv/linux/sh/lowlevellock.S | 1 + > .../nptl/sysdeps/unix/sysv/linux/sh/lowlevellock.h | 1 - > .../unix/sysv/linux/sh/lowlevelrobustlock.S | 1 + > .../nptl/sysdeps/unix/sysv/linux/sh/not-cancel.h | 1 - > .../unix/sysv/linux/sh/pthread_cond_broadcast.S | 1 + > .../unix/sysv/linux/sh/pthread_cond_signal.S | 1 + > .../nptl/sysdeps/unix/sysv/linux/sh/pthread_once.S | 1 + > .../unix/sysv/linux/sh/pthread_rwlock_unlock.S | 1 + > libpthread/nptl/sysdeps/unix/sysv/linux/sh/vfork.S | 2 +- > 12 files changed, 31 insertions(+), 7 deletions(-) > delete mode 100644 libpthread/nptl/sysdeps/unix/sysv/linux/sh/not-cancel.h > > diff --git a/libc/sysdeps/linux/common/pause.c > b/libc/sysdeps/linux/common/pause.c > index cd0ea4a..132ffa8 100644 > --- a/libc/sysdeps/linux/common/pause.c > +++ b/libc/sysdeps/linux/common/pause.c > @@ -37,3 +37,4 @@ weak_alias (__libc_pause, pause) > #ifdef __UCLIBC_HAS_THREADS_NATIVE__ > LIBC_CANCEL_HANDLED (); /* sigsuspend handles our cancellation. > */ > #endif > + > diff --git a/libc/sysdeps/linux/sh/sysdep.h b/libc/sysdeps/linux/sh/sysdep.h > index 1d49055..bd62342 100644 > --- a/libc/sysdeps/linux/sh/sysdep.h > +++ b/libc/sysdeps/linux/sh/sysdep.h > @@ -273,5 +273,24 @@ > .align 2; \ > 1: .long SYS_ify (syscall_name); \ > 2: > - > #endif /* __ASSEMBLER__ */ > + > +/* Pointer mangling support. */ > +#if defined NOT_IN_libc && defined IS_IN_rtld > +/* We cannot use the thread descriptor because in ld.so we use setjmp > + earlier than the descriptor is initialized. Using a global variable > + is too complicated here since we have no PC-relative addressing mode. */ > +#else > +# ifdef __ASSEMBLER__ > +# define PTR_MANGLE(reg, tmp) \ > + stc gbr,tmp; mov.l @(POINTER_GUARD,tmp),tmp; xor tmp,reg > +# define PTR_MANGLE2(reg, tmp) xor tmp,reg > +# define PTR_DEMANGLE(reg, tmp) PTR_MANGLE (reg, tmp) > +# define PTR_DEMANGLE2(reg, tmp) PTR_MANGLE2 (reg, tmp) > +# else > +# define PTR_MANGLE(var) \ > + (var) = (void *) ((uintptr_t) (var) ^ THREAD_GET_POINTER_GUARD ()) > +# define PTR_DEMANGLE(var) PTR_MANGLE (var) > +# endif > +#endif > + > diff --git a/libpthread/nptl/sysdeps/unix/sysv/linux/Makefile.in > b/libpthread/nptl/sysdeps/unix/sysv/linux/Makefile.in > index faa8ea5..0b3b771 100644 > --- a/libpthread/nptl/sysdeps/unix/sysv/linux/Makefile.in > +++ b/libpthread/nptl/sysdeps/unix/sysv/linux/Makefile.in > @@ -12,8 +12,7 @@ libpthread_CSRC = pthread_attr_getaffinity.c > \ > pthread_yield.c sem_post.c sem_timedwait.c \ > pthread_sigqueue.c \ > sem_trywait.c sem_wait.c pt-fork.c \ > - sigtimedwait.c sigwaitinfo.c sigwait.c pt-sleep.c \ > - lowlevelrobustlock.c > + sigtimedwait.c sigwaitinfo.c sigwait.c pt-sleep.c > > libpthread_SSRC = #ptw-close.S ptw-open.S ptw-waitid.S ptw-waidpid.S > ptw-write.S > > @@ -37,10 +36,11 @@ endif > > ifeq ($(TARGET_ARCH),arm) > libc_SSRC := $(filter-out waitpid.S,$(libc_SSRC)) > +libpthread_CSRC += lowlevelrobustlock.c > endif > > ifeq ($(TARGET_ARCH),mips) > -libpthread_CSRC += lowlevellock.c > +libpthread_CSRC += lowlevellock.c lowlevelrobustlock.c > libc_CSRC += libc-lowlevellock.c > endif > > diff --git a/libpthread/nptl/sysdeps/unix/sysv/linux/sh/lowlevellock.S > b/libpthread/nptl/sysdeps/unix/sysv/linux/sh/lowlevellock.S > index 6d40364..5428048 100644 > --- a/libpthread/nptl/sysdeps/unix/sysv/linux/sh/lowlevellock.S > +++ b/libpthread/nptl/sysdeps/unix/sysv/linux/sh/lowlevellock.S > @@ -21,6 +21,7 @@ > #include <pthread-errnos.h> > #include <bits/kernel-features.h> > #include <lowlevellock.h> > +#include <tcb-offsets.h> > #include "lowlevel-atomic.h" > > .text > diff --git a/libpthread/nptl/sysdeps/unix/sysv/linux/sh/lowlevellock.h > b/libpthread/nptl/sysdeps/unix/sysv/linux/sh/lowlevellock.h > index d7fada9..19ce7fe 100644 > --- a/libpthread/nptl/sysdeps/unix/sysv/linux/sh/lowlevellock.h > +++ b/libpthread/nptl/sysdeps/unix/sysv/linux/sh/lowlevellock.h > @@ -27,7 +27,6 @@ > #include <bits/kernel-features.h> > #endif > > -#define SYS_futex 240 > #define FUTEX_WAIT 0 > #define FUTEX_WAKE 1 > #define FUTEX_CMP_REQUEUE 4 > diff --git a/libpthread/nptl/sysdeps/unix/sysv/linux/sh/lowlevelrobustlock.S > b/libpthread/nptl/sysdeps/unix/sysv/linux/sh/lowlevelrobustlock.S > index dab1ae4..1e05a56 100644 > --- a/libpthread/nptl/sysdeps/unix/sysv/linux/sh/lowlevelrobustlock.S > +++ b/libpthread/nptl/sysdeps/unix/sysv/linux/sh/lowlevelrobustlock.S > @@ -22,6 +22,7 @@ > #include <lowlevellock.h> > #include <lowlevelrobustlock.h> > #include <bits/kernel-features.h> > +#include <tcb-offsets.h> > #include "lowlevel-atomic.h" > > .text > diff --git a/libpthread/nptl/sysdeps/unix/sysv/linux/sh/not-cancel.h > b/libpthread/nptl/sysdeps/unix/sysv/linux/sh/not-cancel.h > deleted file mode 100644 > index acf1a61..0000000 > --- a/libpthread/nptl/sysdeps/unix/sysv/linux/sh/not-cancel.h > +++ /dev/null > @@ -1 +0,0 @@ > -#include "../i386/not-cancel.h" > diff --git > a/libpthread/nptl/sysdeps/unix/sysv/linux/sh/pthread_cond_broadcast.S > b/libpthread/nptl/sysdeps/unix/sysv/linux/sh/pthread_cond_broadcast.S > index 3825124..1242fc2 100644 > --- a/libpthread/nptl/sysdeps/unix/sysv/linux/sh/pthread_cond_broadcast.S > +++ b/libpthread/nptl/sysdeps/unix/sysv/linux/sh/pthread_cond_broadcast.S > @@ -22,6 +22,7 @@ > #include <bits/kernel-features.h> > #include <pthread-pi-defines.h> > #include <pthread-errnos.h> > +#include <tcb-offsets.h> > #include "lowlevel-atomic.h" > > .text > diff --git a/libpthread/nptl/sysdeps/unix/sysv/linux/sh/pthread_cond_signal.S > b/libpthread/nptl/sysdeps/unix/sysv/linux/sh/pthread_cond_signal.S > index 914a1ba..1c3bacb 100644 > --- a/libpthread/nptl/sysdeps/unix/sysv/linux/sh/pthread_cond_signal.S > +++ b/libpthread/nptl/sysdeps/unix/sysv/linux/sh/pthread_cond_signal.S > @@ -21,6 +21,7 @@ > #include <lowlevelcond.h> > #include <bits/kernel-features.h> > #include <pthread-errnos.h> > +#include <tcb-offsets.h> > #include "lowlevel-atomic.h" > > .text > diff --git a/libpthread/nptl/sysdeps/unix/sysv/linux/sh/pthread_once.S > b/libpthread/nptl/sysdeps/unix/sysv/linux/sh/pthread_once.S > index caebb93..a1477b3 100644 > --- a/libpthread/nptl/sysdeps/unix/sysv/linux/sh/pthread_once.S > +++ b/libpthread/nptl/sysdeps/unix/sysv/linux/sh/pthread_once.S > @@ -20,6 +20,7 @@ > #include <sysdep.h> > #include <bits/kernel-features.h> > #include <lowlevellock.h> > +#include <tcb-offsets.h> > #include "lowlevel-atomic.h" > > > diff --git > a/libpthread/nptl/sysdeps/unix/sysv/linux/sh/pthread_rwlock_unlock.S > b/libpthread/nptl/sysdeps/unix/sysv/linux/sh/pthread_rwlock_unlock.S > index 239090b..bc6c6c2 100644 > --- a/libpthread/nptl/sysdeps/unix/sysv/linux/sh/pthread_rwlock_unlock.S > +++ b/libpthread/nptl/sysdeps/unix/sysv/linux/sh/pthread_rwlock_unlock.S > @@ -20,6 +20,7 @@ > #include <lowlevellock.h> > #include <lowlevelrwlock.h> > #include <bits/kernel-features.h> > +#include <tcb-offsets.h> > #include "lowlevel-atomic.h" > > > diff --git a/libpthread/nptl/sysdeps/unix/sysv/linux/sh/vfork.S > b/libpthread/nptl/sysdeps/unix/sysv/linux/sh/vfork.S > index 5433eac..a45c09f 100644 > --- a/libpthread/nptl/sysdeps/unix/sysv/linux/sh/vfork.S > +++ b/libpthread/nptl/sysdeps/unix/sysv/linux/sh/vfork.S > @@ -66,6 +66,6 @@ ENTRY (__vfork) > .word PID - TLS_PRE_TCB_SIZE > .align 2 > PSEUDO_END (__vfork) > -libc_hidden_def (__vfork) > +hidden_def (vfork) > > weak_alias (__vfork, vfork) _______________________________________________ uClibc mailing list [email protected] http://lists.busybox.net/mailman/listinfo/uclibc
