- statically initialize all global spin locks. on hppa, 0 means
the lock is held, so leaving them with the default value doesn't work.
- compare functions pointers using a function-pointer type rather than
an integral type. on hppa, function pointers may be indirect,
so we need to trigger gcc to emit calls to the function-pointer
canonicalization routines in the millicode.
- on hppa the stack grows up, so handle that using the STACK_* macros.
<machine/reg.h> plays dirty naming tricks on sparc64 to allow 32bit
compatibility (reg -> reg64 and the parameter in
PTHREAD_REG_TO_UCONTEXT() is called reg). This probably needs to be
fixed separately, but for now reordering the includes will do.
the proc_regsize() callback to allocate reg and fpreg buffers as part of the
proc state (lazily initialized by the PT_STATE_RUNNING case of
td_thr_suspend()).
Fixes build on sh3 (and probably sh5) platforms.
pthread_spin_t variable (4 bytes) but telling read that they were
reading sizeof(struct pthread_spinlock_st) (12 bytes). This led to
overwriting other things on the stack, like the return address. Oops.
Fix by changing READ call here (and elsewhere, for future safety) to:
READ(,, &variable, sizeof(variable))
instead of
READ(,, &variable, sizeof(type)).
Fixes a crash in gdb when running "thread examine all" reported by
Bill Studenmund.