diff options
author | Ulrich Drepper <drepper@redhat.com> | 2006-01-02 20:57:43 +0000 |
---|---|---|
committer | Ulrich Drepper <drepper@redhat.com> | 2006-01-02 20:57:43 +0000 |
commit | 305bb37e1e4d39fe9e515fc5543fefea7c4e9653 (patch) | |
tree | b6ffe62a76de136c56c8c6ca43394bb48546a019 /nptl/sysdeps/sparc | |
parent | cc792128be8ee299212c43b1c34f4433e257a7e6 (diff) | |
download | glibc-305bb37e1e4d39fe9e515fc5543fefea7c4e9653.tar glibc-305bb37e1e4d39fe9e515fc5543fefea7c4e9653.tar.gz glibc-305bb37e1e4d39fe9e515fc5543fefea7c4e9653.tar.bz2 glibc-305bb37e1e4d39fe9e515fc5543fefea7c4e9653.zip |
* sysdeps/unix/sysv/linux/sparc/sparc32/sysdep.h (PTR_MANGLE,cvs/fedora-glibc-20060102T2114
PTR_MANGLE2, PTR_DEMANGLE, PTR_DEMANGLE2): Define.
* sysdeps/unix/sysv/linux/sparc/sparc64/sysdep.h (PTR_MANGLE,
PTR_MANGLE2, PTR_DEMANGLE, PTR_DEMANGLE2): Define.
* sysdeps/unix/sysv/linux/sparc/bits/setjmp.h [__WORDSIZE == 64]
(_JMPBUF_UNWINDS): Don't demangle uc_mcontext.mc_fp.
* sysdeps/sparc/sparc32/setjmp.S (__sigsetjmp): Mangle %fp, %sp
and %o7.
* sysdeps/sparc/sparc32/__longjmp.S (__longjmp): Demangle %fp, %sp
and %o7.
2006-01-02 Jakub Jelinek <jakub@redhat.com>
* sysdeps/unix/sysv/linux/s390/s390-32/sysdep.h (PTR_MANGLE2):
Define.
* sysdeps/unix/sysv/linux/s390/s390-64/sysdep.h (PTR_MANGLE2):
Likewise.
* sysdeps/s390/s390-32/__longjmp.c (__longjmp): Demangle also %r15.
* sysdeps/s390/s390-64/__longjmp.c (__longjmp): Likewise.
* sysdeps/s390/s390-32/setjmp.S (__sigsetjmp): Mangle also %r15.
* sysdeps/s390/s390-32/elf/setjmp.S (__sigsetjmp): Likewise.
* sysdeps/s390/s390-64/setjmp.S (__sigsetjmp): Likewise.
* sysdeps/s390/s390-64/elf/setjmp.S (__sigsetjmp): Likewise.
* sysdeps/s390/bits/setjmp.h (__jmp_buf): Add __s390_jmp_buf
struct tag to make C++ happy.
2006-01-02 Ulrich Drepper <drepper@redhat.com>
* posix/Makefile ($(objpfx)annexc.out): Move -I.. to the end of
the include list.
Diffstat (limited to 'nptl/sysdeps/sparc')
-rw-r--r-- | nptl/sysdeps/sparc/sparc64/jmpbuf-unwind.h | 15 | ||||
-rw-r--r-- | nptl/sysdeps/sparc/tcb-offsets.sym | 1 | ||||
-rw-r--r-- | nptl/sysdeps/sparc/tls.h | 11 |
3 files changed, 13 insertions, 14 deletions
diff --git a/nptl/sysdeps/sparc/sparc64/jmpbuf-unwind.h b/nptl/sysdeps/sparc/sparc64/jmpbuf-unwind.h index 7752fe971e..92c296b0cf 100644 --- a/nptl/sysdeps/sparc/sparc64/jmpbuf-unwind.h +++ b/nptl/sysdeps/sparc/sparc64/jmpbuf-unwind.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2005 Free Software Foundation, Inc. +/* Copyright (C) 2005, 2006 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by David S. Miller <davem@davemloft.net>, 2005. @@ -20,23 +20,12 @@ #include <setjmp.h> #include <stdint.h> #include <unwind.h> -#include <sysdep.h> #define _JMPBUF_CFA_UNWINDS_ADJ(_jmpbuf, _context, _adj) \ _JMPBUF_UNWINDS_ADJ (_jmpbuf, (void *) _Unwind_GetCFA (_context), _adj) -static inline uintptr_t __attribute__ ((unused)) -_jmpbuf_sp (__jmp_buf regs) -{ - uintptr_t sp = regs[0].uc_mcontext.mc_fp; -#ifdef PTR_DEMANGLE - PTR_DEMANGLE (sp); -#endif - return sp; -} - #define _JMPBUF_UNWINDS_ADJ(_jmpbuf, _address, _adj) \ - ((uintptr_t) (_address) - (_adj) < _jmpbuf_sp (_jmpbuf) - (_adj)) + ((uintptr_t) (_address) - (_adj) < (uintptr_t) (_jmpbuf)[0].uc_mcontext.mc_fp - (_adj)) /* We use the normal lobngjmp for unwinding. */ #define __libc_unwind_longjmp(buf, val) __libc_longjmp (buf, val) diff --git a/nptl/sysdeps/sparc/tcb-offsets.sym b/nptl/sysdeps/sparc/tcb-offsets.sym index 237f975b25..923af8a5b7 100644 --- a/nptl/sysdeps/sparc/tcb-offsets.sym +++ b/nptl/sysdeps/sparc/tcb-offsets.sym @@ -2,5 +2,6 @@ #include <tls.h> MULTIPLE_THREADS_OFFSET offsetof (tcbhead_t, multiple_threads) +POINTER_GUARD offsetof (tcbhead_t, pointer_guard) PID offsetof (struct pthread, pid) TID offsetof (struct pthread, tid) diff --git a/nptl/sysdeps/sparc/tls.h b/nptl/sysdeps/sparc/tls.h index ddc4848554..127bbf695f 100644 --- a/nptl/sysdeps/sparc/tls.h +++ b/nptl/sysdeps/sparc/tls.h @@ -1,5 +1,5 @@ /* Definitions for thread-local data handling. NPTL/sparc version. - Copyright (C) 2003, 2005 Free Software Foundation, Inc. + Copyright (C) 2003, 2005, 2006 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -48,6 +48,7 @@ typedef struct int multiple_threads; uintptr_t sysinfo; uintptr_t stack_guard; + uintptr_t pointer_guard; } tcbhead_t; #else /* __ASSEMBLER__ */ @@ -135,6 +136,14 @@ register struct pthread *__thread_self __asm__("%g7"); ((descr)->header.stack_guard \ = THREAD_GETMEM (THREAD_SELF, header.stack_guard)) +/* Get/set the stack guard field in TCB head. */ +#define THREAD_GET_POINTER_GUARD() \ + THREAD_GETMEM (THREAD_SELF, header.pointer_guard) +#define THREAD_SET_POINTER_GUARD(value) \ + THREAD_SETMEM (THREAD_SELF, header.pointer_guard, value) +# define THREAD_COPY_POINTER_GUARD(descr) \ + ((descr)->header.pointer_guard = THREAD_GET_POINTER_GUARD ()) + #endif /* !ASSEMBLER */ #endif /* tls.h */ |