Commit Graph

24 Commits

Author SHA1 Message Date
Carlos O'Donell
3680f14a7d [hppa] Fix incorrect stack frame usage in vfork.
In a multithreaded environment the call to vfork was
incorrectly creating a stack frame. Given that the
child unwinds the stack frame first to call exec, it
will corrupt any values the parent stored in the stack
frame. The solution is to avoid creating a stack frame
unless required to call an error function, in which case
we are assured no child was created.
2010-06-24 12:13:36 -04:00
Andreas Schwab
c14e796ff6 hppa: Update nptl/pthread.h to match generic file 2010-06-07 14:46:19 +02:00
Carlos O'Donell
b80ec53691 Add correct aligment to pthread_*_t structures.
In the switch to NPTL the pthrad_mutex_t, pthread_cond_t,
and pthread_rwlock_t structures were made binary compatible
with the Linuxthread versions. However, their aligment when
embedded in other structures was changed. When rebuilding
libstdc++ this was detected, and the following changes return
the structures to their original Linuxthreads alignments.

2009-11-25  Carlos O'Donell  <carlos@codesourcery.com>

	* sysdeps/unix/sysv/linux/hppa/nptl/bits/pthreadtypes.h:
	Use correct alignment for pthread_mutex_t, pthread_cond_t,
	and pthread_rwlock_t.
2009-11-25 18:18:56 -05:00
Carlos O'Donell
a2ed3d2a8e Remove constants which are now defined in generic file.
Several constants are now defined in a generic file and no longer
need to be defined in the hppa specific file.

2009-11-15  Carlos O'Donell  <carlos@codesourcery.com>

	* sysdeps/unix/sysv/linux/hppa/nptl/lowlevellock.h:
	Remove FUTEX_WAITERS, FUTEX_OWNER_DIED, and FUTEX_TID_MASK.
2009-11-15 14:36:46 -05:00
Carlos O'Donell
8ef75725ce Use LIBGCC_S_SO to override generic version.
[BZ #10920] Use the new generic override to specify the hppa
specific libgcc_s.so.4 version number. Remove the files which
hppa no longer has to duplicate in order to accomplish
overriding libgcc_s.so version number.

2009-11-08  Carlos O'Donell  <carlos@codesourcery.com>

	[BZ #10920]

	* sysdeps/hppa/libgcc_s.h: New file.
	* sysdeps/unix/sysv/linux/hppa/nptl/unwind-forcedunwind.c: Remove.
	* sysdeps/unix/sysv/linux/hppa/nptl/unwind-resume.c: Remove.
2009-11-15 14:19:25 -05:00
Carlos O'Donell
be0f2008ac Implement new NPTL POSIX Threads ABI for HPPA.
This version of the NPTL POSIX thread ABI for hppa does
not break backwards compatibility with the the old
Linuxthreads ABI, and is therefore suitable for release
by distributions.

	sysdeps/unix/sysv/linux/hppa/
	* internaltypes.h: New file.

	sysdeps/unix/sysv/linux/hppa/nptl/
	* pthreadP.h: New file.
	* pthread.h: New file.
	* pthread_cond_broadcast.c: New file.
	* pthread_cond_destroy.c: New file.
	* pthread_cond_init.c: New file.
	* pthread_cond_signal.c: New file.
	* pthread_cond_timedwait.c: New file.
	* pthread_cond_wait.c: New file.
	* bits/pthreadtypes.h: Make pthread_mutex_t,
	pthread_rwlock_t, and pthread_cond_t backwards
	compatible.
2009-09-08 14:32:53 -04:00
Carlos O'Donell
6f5d2fa8aa 2009-02-25 Carlos O'Donell <carlos@codesourcery.com>
* sysdeps/unix/sysv/linux/hppa/nptl/bits/pthreadtypes.h:
	Adjust comment. Sort macros alphabetically. Remove old
	lock comments.
2009-02-26 21:36:13 +00:00
Carlos O'Donell
8ff04e6454 2009-02-25 Carlos O'Donell <carlos@codesourcery.com>
* sysdeps/unix/sysv/linux/hppa/nptl/unwind-forcedunwind.c:
	Update from nptl/sysdeps/pthread/unwind-forcedunwind.c
	* sysdeps/unix/sysv/linux/hppa/nptl/unwind-resume.c:
	Update from nptl/sysdeps/pthread/unwind-resume.c
2009-02-26 21:29:22 +00:00
Carlos O'Donell
cdc618aab4 2009-02-25 Carlos O'Donell <carlos@codesourcery.com>
* sysdeps/unix/sysv/linux/hppa/nptl/lowlevellock.h: Define
	FUTEX_WAIT_BITSET, FUTEX_WAKE_BITSET, FUTEX_CLOCK_REALTIME,
	and FUTEX_BITSET_MATCH_ANY.
2009-02-26 19:46:02 +00:00
Joseph Myers
b3862ba3c8 2009-02-13 Khem Raj <raj.khem@gmail.com>
* sysdeps/unix/sysv/linux/hppa/nptl/unwind-forcedunwind.c
	(libgcc_s_handle): New variable.
	(pthread_cancel_init): Depend in libgcc_s_handle for decision to
	load DSO.  Assign last.
	(__unwind_freeres): New function.
2009-02-13 17:34:30 +00:00
Carlos O'Donell
6f85344ee3 2008-06-17 Guy Martin <gmsoft@tuxicoman.be>
[BZ #5957]
	* sysdeps/unix/sysv/linux/hppa/nptl/lowlevellock.h:
	Use shared futex in lll_wait_tid().
2008-06-17 11:44:25 +00:00
Carlos O'Donell
ad9393f0e1 2008-03-14 Carlos O'Donell <carlos@codesourcery.com>
Guy Martin <gmsoft@tuxicoman.be>

	[BZ #5923]
	* sysdeps/unix/sysv/linux/hppa/nptl/lowlevellock.h: Pass
	timespec and futexp.
2008-03-14 23:40:55 +00:00
Jeff Bailey
9cd7e988d3 2007-12-05 Jeff Bailey <jeffbailey@google.com>
* sysdeps/unix/sysv/linux/hppa/nptl/lowlevellock.h
          (__lll_unlock): Use define instead of inline function.
          (__lll_robust_unlock): Likewise.
2007-12-09 02:20:34 +00:00
Carlos O'Donell
a732ab4917 2007-10-18 Carlos O'Donell <carlos@systemhalted.org>
* sysdeps/unix/sysv/linux/hppa/nptl/lowlevellock.c
	(__lll_lock_wait): Add private argument. Pass private
	to lll_futex_wait. Use atomic_compare_and_exchange_val_acq.
	(__lll_lock_wait_private): New function.
	(__lll_timedlock_wait): Add private argument. Pass private
	to lll_futex_timed_wait.
	* sysdeps/unix/sysv/linux/hppa/nptl/lowlevellock.h:
	Include kernel-features.h and tls.h.
	(FUTEX_WAITERS): Define.
	(FUTEX_OWNER_DIED): Define.
	(FUTEX_TID_MASK): Define.
	(__lll_private_flag): Define.
	(lll_futex_timed_wait): Use __lll_private_flag.
	(lll_futex_wake): Use __lll_private_flag.
	(lll_futex_requeue): Use __lll_private_flag.
	(lll_robust_mutex_dead): Rename to...
	(lll_robust_dead): ... this. Add private argument. Pass private
	to lll_futex_wake.
	(lll_futex_wake_unlock): Use __lll_private_flag.
	(__lll_mutex_trylock): Remove.
	(lll_mutex_tryock): Remove.
	(__lll_robust_mutex_trylock): Rename to...
	(__lll_robust_trylock): ... this.
	(lll_robust_mutex_trylock): Rename to...
	(lll_robust_trylock): ... this. Call __lll_robust_trylock.
	(__lll_mutex_cond_trylock): Rename to...
	(__lll_cond_trylock): ... this.
	(lll_mutex_cond_trylock): Rename to...
	(lll_cond_trylock): ... this. Call __lll_cond_trylock.
	(__lll_mutex_lock): Add private argument.
	(__lll_robust_mutex_lock): Remove.
	(lll_mutex_lock): Define.
	(__lll_robust_lock): Define.
	(lll_robust_mutex_lock): Remove.
	(__lll_mutex_cond_lock): Remove.
	(lll_robust_lock) Define.
	(lll_robust_cond_lock): Define.
	(lll_robust_mutex_cond_lock): Remove.
	(__lll_cond_lock): Define.
	(lll_cond_lock): Define.
	(__lll_mutex_timedlock): Remove.
	(__lll_timedlock): Define.
	(lll_timedlock): Define.
	(lll_robust_mutex_timedlock): Remove.
	(lll_robust_timedlock): Define.
	(__lll_mutex_unlock): Remove.
	(__lll_unlock): Define.
	(__lll_robust_mutex_unlock): Remove.
	(__lll_robust_unlock): Define.
	(lll_robust_mutex_unlock): Remove.
	(lll_robust_unlock): Define.
	(__lll_mutex_unlock_force): Remove.
	(lll_mutex_unlock_force): Remove.
	(lll_islocked): Remove.
	(lll_mutex_islocked): Rename to...
	(lll_islocked): ... this.
	(lll_trylock): Remove.
	(lll_unlock): Remove.
	(lll_wait_tid): Format whitespace.
	(lll_cond_wait): Remove.
	(lll_cond_timedwait): Remove.
	(lll_cond_wake): Remove.
	(lll_cond_broadcast): Remove.
2007-10-19 01:47:47 +00:00
Carlos O'Donell
cd1530839c 2007-09-24 Carlos O'Donell <carlos@systemhalted.org>
* sysdeps/hppa/nptl/tls.h: Fix comment.
	* sysdeps/unix/sysv/linux/hppa/bits/fcntl.h: Fix comment format.
	[__USE_GNU] (O_CLOEXEC): Define.
	* sysdeps/unix/sysv/linux/hppa/nptl/sysdep-cancel.h: Issue error
	if the library is unsupported.
	[ASSEMBLER && IS_IN_librt]: Define CENABLE, CDISABLE, and
	__local_multiple_threads.
2007-09-24 18:28:33 +00:00
Carlos O'Donell
b599860dc8 2007-07-28 Carlos O'Donell <carlos@systemhalted.org>
* sysdeps/unix/sysv/linux/hppa/nptl/internaltypes.h: Remove.
	* sysdeps/unix/sysv/linux/hppa/nptl/bits/pthreadtypes.h
	(pthread_rwlock_t): Split __flags into __pad2, __pad1, __shared,
	and __flags. Update comments. Update copyright.
	* sysdeps/hppa/nptl/tls.h: Define THREAD_GSCOPE_FLAG_UNUSED,
	THREAD_GSCOPE_FLAG_USED, THREAD_GSOPE_FLAG_WAIT,
	THREAD_GSCOPE_RSEET_FLAG, THREAD_GSCOPE_SET_FLAG, THREAD_GSCOPE_WAIT.
	Update copyright.
	* sysdeps/unix/sysv/linux/hppa/nptl/lowlevellock.c: Update copyright.
	(__lll_lock_wait): Call lll_futex_wait with LLL_SHARED.
	(__lll_timedlock_wait): Call lll_futex_timed_wait with LLL_SHARED.
	(lll_unlock_Wake_cb): Use lll_private_futex_wake.
	(___lll_timedwait_tid): Call lll_futex_timed_wait with LLL_SAHRED.
	* sysdeps/unix/sysv/linux/hppa/nptl/lowlevellock.h: Define
	FUTEX_PRIVATE_FLAG, LLL_PRIVATE, LLL_SHARED, lll_private_futex_wait,
	lll_private_futex_timed_wait, lll_private_Futex_wake. Add private
	argument to lll_futex_wait, lll_futex_timed_wait, lll_futex_wake,
	lll_futex_wake_unlock.
	* sysdeps/unix/sysv/linux/hppa/nptl/pthread_once.c: Update copyright.
	(clear_once_control): Use lll_private_futex_wake.
	(__pthread_once): Use lll_private_futex_wait, and
	lll_private_futex_wake.

2007-07-28  Randolph Chung  <tausq@debian.org>

	* sysdeps/hppa/nptl/tls.h (DB_THREAD_SELF): Fix definition.
2007-07-28 21:26:44 +00:00
Jeff Bailey
370d74b5df 2007-06-16 Jeff Bailey <jbailey@raspberryginger.com>
* sysdeps/unix/sysv/linux/hppa/nptl/configure.in: Require
        at least kernel 2.6.9.
        * sysdeps/unix/sysv/linux/hppa/nptl/configure: Rebuilt.
2007-06-16 15:38:21 +00:00
Carlos O'Donell
90e01f41f9 2007-05-17 Carlos O'Donell <carlos@systemhalted.org>
* sysdeps/unix/sysv/linux/hppa/nptl/bits/semaphore.h
	(SEM_VALUE_MAX): Remove.
2007-05-18 02:02:51 +00:00
Carlos O'Donell
d396ccd5ec 2006-11-10 Carlos O'Donell <carlos@systemhalted.org>
* sysdeps/hppa/nptl/pthread_spin_init.c: New file.
	* sysdeps/hppa/nptl/pthread_spin_unlock.c: Remove strong alias
	to pthread_spin_init.
	* sysdeps/unix/sysv/linux/hppa/nptl/sysdep-cancel.h: Define
	RTLD_SINGLE_THREAD_P.

2006-09-20  Carlos O'Donell  <carlos@systemhalted.org>

	* sysdeps/unix/sysv/linux/hppa/bits/fcntl.h (splice): Add offin
	and offout arguments to the prototype.
2006-11-11 14:33:27 +00:00
Carlos O'Donell
7cad09f90b 2006-09-15 Carlos O'Donell <carlos@systemhalted.org>
* sysdeps/hppa/nptl/tcb-offsets.sym: Define TID_THREAD_OFFSET.
	* sysdeps/unix/sysv/linux/hppa/clone.S: Handle RESET_PID, and
	restore r19 before call to _exit.
	* sysdeps/unix/sysv/linux/hppa/nptl/clone.S: New file.
2006-09-16 00:46:19 +00:00
Carlos O'Donell
0daa050021 2006-09-07 Carlos O'Donell <carlos@systemhalted.org>
* sysdeps/hppa/dl-machine.h (elf_machine_fixup_plt): Remove
	lvalue cast.
	* sysdeps/hppa/dl-trampoline.S (_dl_fixup): Correct stack usage.
	(_dl_runtime_profile): LA fixups.
	* sysdeps/unix/sysv/linux/hppa/clone.S: Correct stack usage. Return
	-1 on error. Use branch and link for error handler funciton.
	* sysdeps/unix/sysv/linux/hppa/sysdep.h: Correct stack usage.
	Avoid register shuffling.
	* sysdeps/unix/sysv/linux/hppa/bits/atomic.h (ASM_EAGAIN): Define
	as -EAGAIN.
	* sysdeps/unix/sysv/linux/hppa/bits/mman.h: Adjust definitions to
	match required standards.
	* sysdeps/unix/sysv/linux/hppa/nptl/lowlevellock.h
	(lll_futex_wait): Return __ret.
	(lll_futex_timed_wait): Likewise.
	(lll_futex_wake): Likewise.
	(lll_futex_requeue): Likewise.
	* sysdeps/unix/sysv/linux/hppa/nptl/pt-vfork.S: Correct stack
	usage and adjust error return.
	* sysdeps/unix/sysv/linux/hppa/nptl/sysdep-cancel.h: Adjust
	stack usage for gdb, and avoid extra register loads.
	* sysdeps/unix/sysv/linux/hppa/nptl/unwind-forcedunwind.c: Copy
	nptl/sysdeps/pthread/unwind-forcedunwind.c.
	(LIBGCC_SO): Define and use.
	* sysdeps/unix/sysv/linux/hppa/nptl/unwind-resume.c: Copy
	nptl/sysdeps/pthread/unwind-resume.c.
	(LIBGCC_SO): Define and use.
2006-09-07 16:34:43 +00:00
Carlos O'Donell
6e0b72525b 2006-08-13 Carlos O'Donell <carlos@systemhalted.org>
* sysdeps/unix/sysv/linux/hppa/nptl/lowlevellock.h (FUTEX_LOCK_PI,
	FUTEX_UNLOCK_PI, FUTEX_TRYLOCK_PI): Define.
2006-08-13 18:26:45 +00:00
Carlos O'Donell
259437280c 2006-07-24 Carlos O'Donell <carlos@systemhalted.org>
* sysdeps/unix/sysv/linux/hppa/nptl/bits/pthreadtypes.h:
	__SIZEOF_PTHREAD_COND_T is 64 bytes. Remove __PAD_ATOMIC_LOCK_T.
2006-07-25 01:58:10 +00:00
Carlos O'Donell
da1ea0f056 2006-07-13 Carlos O'Donell <carlos@systemhalted.org>
* sysdeps/unix/sysv/linux/hppa/xstat.c: New file.
	* sysdeps/unix/sysv/linux/hppa/lxstat.c: Likewise.
	* sysdeps/unix/sysv/linux/hppa/fxstat.c: Likewise.
	* sysdeps/unix/sysv/linux/hppa/fxstatat.c: Likewise.

2006-07-13  Carlos O'Donell  <carlos@systemhalted.org>

	* sysdeps/hppa/nptl/Makefile: New file
	* sysdeps/hppa/nptl/jmpbuf-unwind.h: Likewise
	* sysdeps/hppa/nptl/pthread_spin_lock.c: Likewise
	* sysdeps/hppa/nptl/pthread_spin_trylock.c: Likewise
	* sysdeps/hppa/nptl/pthread_spin_unlock.c: Likewise
	* sysdeps/hppa/nptl/pthreaddef.h: Likewise
	* sysdeps/hppa/nptl/tcb-offsets.sym: Likewise
	* sysdeps/hppa/nptl/tls.h: Likewise
	* sysdeps/unix/sysv/linux/hppa/nptl/bits: Likewise
	* sysdeps/unix/sysv/linux/hppa/nptl/createthread.c: Likewise
	* sysdeps/unix/sysv/linux/hppa/nptl/fork.c: Likewise
	* sysdeps/unix/sysv/linux/hppa/nptl/internaltypes.h: Likewise
	* sysdeps/unix/sysv/linux/hppa/nptl/libc-lowlevellock.c: Likewise
	* sysdeps/unix/sysv/linux/hppa/nptl/lowlevellock.c: Likewise
	* sysdeps/unix/sysv/linux/hppa/nptl/lowlevellock.h: Likewise
	* sysdeps/unix/sysv/linux/hppa/nptl/pt-initfini.c: Likewise
	* sysdeps/unix/sysv/linux/hppa/nptl/pt-vfork.S: Likewise
	* sysdeps/unix/sysv/linux/hppa/nptl/pthread_once.c: Likewise
	* sysdeps/unix/sysv/linux/hppa/nptl/sysdep-cancel.h: Likewise
	* sysdeps/unix/sysv/linux/hppa/nptl/unwind-forcedunwind.c: Likewise
	* sysdeps/unix/sysv/linux/hppa/nptl/unwind-resume.c: Likewise
2006-07-14 13:51:24 +00:00