diff options
author | Ulrich Drepper <drepper@redhat.com> | 2006-01-13 22:11:19 +0000 |
---|---|---|
committer | Ulrich Drepper <drepper@redhat.com> | 2006-01-13 22:11:19 +0000 |
commit | 9adacd8ac9421781c5c76d6826cc06a3a2eeb426 (patch) | |
tree | aca9c270a38b30da1a0bf164af12efc3e756969d /sysdeps | |
parent | 251278c63fb33caa77201a5710d118165e9dd7ab (diff) | |
download | glibc-9adacd8ac9421781c5c76d6826cc06a3a2eeb426.zip glibc-9adacd8ac9421781c5c76d6826cc06a3a2eeb426.tar.gz glibc-9adacd8ac9421781c5c76d6826cc06a3a2eeb426.tar.bz2 |
..
2006-01-13 Richard Henderson <rth@redhat.com>
* sysdeps/unix/sysv/linux/alpha/sysdep.h (PTR_MANGLE, PTR_MANGLE2,
PTR_DEMANGLE, PTR_DEMANGLE2): Move ...
* sysdeps/unix/alpha/sysdep.h: ... here.
* sysdeps/unix/sysv/linux/alpha/fxstatat.c: Define __GI___fxstatat64.
Diffstat (limited to 'sysdeps')
-rw-r--r-- | sysdeps/alpha/setjmp.S | 2 | ||||
-rw-r--r-- | sysdeps/unix/alpha/sysdep.h | 40 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/alpha/fxstatat.c | 5 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/alpha/sysdep.h | 37 |
4 files changed, 43 insertions, 41 deletions
diff --git a/sysdeps/alpha/setjmp.S b/sysdeps/alpha/setjmp.S index b8e30f8..bc5da0f 100644 --- a/sysdeps/alpha/setjmp.S +++ b/sysdeps/alpha/setjmp.S @@ -28,7 +28,7 @@ __sigsetjmp: $sigsetjmp_local: #ifndef PIC -#define FRAME 16 +#define FRAME 16 subq sp, FRAME, sp .frame sp, FRAME, ra, 0 stq ra, 0(sp) diff --git a/sysdeps/unix/alpha/sysdep.h b/sysdeps/unix/alpha/sysdep.h index a154db8..2260ec5 100644 --- a/sysdeps/unix/alpha/sysdep.h +++ b/sysdeps/unix/alpha/sysdep.h @@ -1,4 +1,4 @@ -/* Copyright (C) 1992, 1995, 1996, 2000, 2003, 2004 +/* Copyright (C) 1992, 1995, 1996, 2000, 2003, 2004, 2006 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Brendan Kehoe (brendan@zen.org). @@ -397,4 +397,42 @@ __LABEL(name) \ _sc_ret = _sc_0, _sc_err = _sc_19; \ } +/* Pointer mangling support. Note that tls access is slow enough that + we don't deoptimize things by placing the pointer check value there. */ + +#include <stdint.h> + +#if defined NOT_IN_libc && defined IS_IN_rtld +# ifdef __ASSEMBLER__ +# define PTR_MANGLE(dst, src, tmp) \ + ldah tmp, __pointer_chk_guard_local($29) !gprelhigh; \ + ldq tmp, __pointer_chk_guard_local(tmp) !gprellow; \ + xor src, tmp, dst +# define PTR_MANGLE2(dst, src, tmp) \ + xor src, tmp, dst +# define PTR_DEMANGLE(dst, tmp) PTR_MANGLE(dst, dst, tmp) +# define PTR_DEMANGLE2(dst, tmp) PTR_MANGLE2(dst, dst, tmp) +# else +extern uintptr_t __pointer_chk_guard_local attribute_relro attribute_hidden; +# define PTR_MANGLE(var) \ + (var) = (void *) ((uintptr_t) (var) ^ __pointer_chk_guard_local) +# define PTR_DEMANGLE(var) PTR_MANGLE(var) +# endif +#elif defined PIC +# ifdef __ASSEMBLER__ +# define PTR_MANGLE(dst, src, tmp) \ + ldq tmp, __pointer_chk_guard; \ + xor src, tmp, dst +# define PTR_MANGLE2(dst, src, tmp) \ + xor src, tmp, dst +# define PTR_DEMANGLE(dst, tmp) PTR_MANGLE(dst, dst, tmp) +# define PTR_DEMANGLE2(dst, tmp) PTR_MANGLE2(dst, dst, tmp) +# else +extern uintptr_t __pointer_chk_guard attribute_relro; +# define PTR_MANGLE(var) \ + (var) = (void *) ((uintptr_t) (var) ^ __pointer_chk_guard) +# define PTR_DEMANGLE(var) PTR_MANGLE(var) +# endif +#endif + #endif /* ASSEMBLER */ diff --git a/sysdeps/unix/sysv/linux/alpha/fxstatat.c b/sysdeps/unix/sysv/linux/alpha/fxstatat.c index 127f7f3..4cb304c 100644 --- a/sysdeps/unix/sysv/linux/alpha/fxstatat.c +++ b/sysdeps/unix/sysv/linux/alpha/fxstatat.c @@ -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. The GNU C Library is free software; you can redistribute it and/or @@ -94,4 +94,5 @@ __fxstatat (int vers, int fd, const char *file, struct stat *st, int flag) return -1; } -strong_alias (__fxstatat, __fxstatat64); +strong_alias (__fxstatat, __fxstatat64) +strong_alias (__fxstatat64, __GI___fxstatat64) diff --git a/sysdeps/unix/sysv/linux/alpha/sysdep.h b/sysdeps/unix/sysv/linux/alpha/sysdep.h index ccbce81..a22da71 100644 --- a/sysdeps/unix/sysv/linux/alpha/sysdep.h +++ b/sysdeps/unix/sysv/linux/alpha/sysdep.h @@ -24,8 +24,6 @@ #ifdef __ASSEMBLER__ #include <asm/pal.h> #include <alpha/regdef.h> -#else -#include <stdint.h> #endif /* There is some commonality. */ @@ -98,39 +96,4 @@ INTERNAL_SYSCALL1(name, err_out, nr, args); \ }) -/* Pointer mangling support. Note that tls access is slow enough that - we don't deoptimize things by placing the pointer check value there. */ -#if defined NOT_IN_libc && defined IS_IN_rtld -# ifdef __ASSEMBLER__ -# define PTR_MANGLE(dst, src, tmp) \ - ldah tmp, __pointer_chk_guard_local($29) !gprelhigh; \ - ldq tmp, __pointer_chk_guard_local(tmp) !gprellow; \ - xor src, tmp, dst -# define PTR_MANGLE2(dst, src, tmp) \ - xor src, tmp, dst -# define PTR_DEMANGLE(dst, tmp) PTR_MANGLE(dst, dst, tmp) -# define PTR_DEMANGLE2(dst, tmp) PTR_MANGLE2(dst, dst, tmp) -# else -extern uintptr_t __pointer_chk_guard_local attribute_relro attribute_hidden; -# define PTR_MANGLE(var) \ - (var) = (void *) ((uintptr_t) (var) ^ __pointer_chk_guard_local) -# define PTR_DEMANGLE(var) PTR_MANGLE(var) -# endif -#elif defined PIC -# ifdef __ASSEMBLER__ -# define PTR_MANGLE(dst, src, tmp) \ - ldq tmp, __pointer_chk_guard; \ - xor src, tmp, dst -# define PTR_MANGLE2(dst, src, tmp) \ - xor src, tmp, dst -# define PTR_DEMANGLE(dst, tmp) PTR_MANGLE(dst, dst, tmp) -# define PTR_DEMANGLE2(dst, tmp) PTR_MANGLE2(dst, dst, tmp) -# else -extern uintptr_t __pointer_chk_guard attribute_relro; -# define PTR_MANGLE(var) \ - (var) = (void *) ((uintptr_t) (var) ^ __pointer_chk_guard) -# define PTR_DEMANGLE(var) PTR_MANGLE(var) -# endif -#endif - #endif /* _LINUX_ALPHA_SYSDEP_H */ |