mirror of
https://sourceware.org/git/glibc.git
synced 2025-01-08 00:38:16 +08:00
ARM: Move PTR_MANGLE et al out of Linux-specific file.
This commit is contained in:
parent
a476ac4b45
commit
6f64e7d75f
@ -1,3 +1,10 @@
|
||||
2014-08-01 Roland McGrath <roland@hack.frob.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/arm/sysdep.h (PTR_MANGLE_LOAD, PTR_MANGLE)
|
||||
(PTR_MANGLE2, PTR_DEMANGLE, PTR_DEMANGLE2): Move these macros...
|
||||
* sysdeps/arm/sysdep.h: ... here.
|
||||
[!__ASSEMBLER__]: Include <stdint.h>.
|
||||
|
||||
2014-08-01 Siddhesh Poyarekar <siddhesh@redhat.com>
|
||||
|
||||
* include/libc-symbols.h (HAVE_LIBINTL_H): Define macro.
|
||||
|
@ -19,6 +19,10 @@
|
||||
#include <sysdeps/generic/sysdep.h>
|
||||
#include <features.h>
|
||||
|
||||
#ifndef __ASSEMBLER__
|
||||
# include <stdint.h>
|
||||
#endif
|
||||
|
||||
/* The __ARM_ARCH define is provided by gcc 4.8. Construct it otherwise. */
|
||||
#ifndef __ARM_ARCH
|
||||
# ifdef __ARM_ARCH_2__
|
||||
@ -286,3 +290,47 @@
|
||||
#else
|
||||
# define PC_OFS 8
|
||||
#endif
|
||||
|
||||
/* Pointer mangling support. */
|
||||
#if (defined NOT_IN_libc && defined IS_IN_rtld) || \
|
||||
(!defined SHARED && (!defined NOT_IN_libc || defined IS_IN_libpthread))
|
||||
# ifdef __ASSEMBLER__
|
||||
# define PTR_MANGLE_LOAD(guard, tmp) \
|
||||
LDST_PCREL(ldr, guard, tmp, C_SYMBOL_NAME(__pointer_chk_guard_local));
|
||||
# define PTR_MANGLE(dst, src, guard, tmp) \
|
||||
PTR_MANGLE_LOAD(guard, tmp); \
|
||||
PTR_MANGLE2(dst, src, guard)
|
||||
/* Use PTR_MANGLE2 for efficiency if guard is already loaded. */
|
||||
# define PTR_MANGLE2(dst, src, guard) \
|
||||
eor dst, src, guard
|
||||
# define PTR_DEMANGLE(dst, src, guard, tmp) \
|
||||
PTR_MANGLE (dst, src, guard, tmp)
|
||||
# define PTR_DEMANGLE2(dst, src, guard) \
|
||||
PTR_MANGLE2 (dst, src, guard)
|
||||
# else
|
||||
extern uintptr_t __pointer_chk_guard_local attribute_relro attribute_hidden;
|
||||
# define PTR_MANGLE(var) \
|
||||
(var) = (__typeof (var)) ((uintptr_t) (var) ^ __pointer_chk_guard_local)
|
||||
# define PTR_DEMANGLE(var) PTR_MANGLE (var)
|
||||
# endif
|
||||
#else
|
||||
# ifdef __ASSEMBLER__
|
||||
# define PTR_MANGLE_LOAD(guard, tmp) \
|
||||
LDST_GLOBAL(ldr, guard, tmp, C_SYMBOL_NAME(__pointer_chk_guard));
|
||||
# define PTR_MANGLE(dst, src, guard, tmp) \
|
||||
PTR_MANGLE_LOAD(guard, tmp); \
|
||||
PTR_MANGLE2(dst, src, guard)
|
||||
/* Use PTR_MANGLE2 for efficiency if guard is already loaded. */
|
||||
# define PTR_MANGLE2(dst, src, guard) \
|
||||
eor dst, src, guard
|
||||
# define PTR_DEMANGLE(dst, src, guard, tmp) \
|
||||
PTR_MANGLE (dst, src, guard, tmp)
|
||||
# define PTR_DEMANGLE2(dst, src, guard) \
|
||||
PTR_MANGLE2 (dst, src, guard)
|
||||
# else
|
||||
extern uintptr_t __pointer_chk_guard attribute_relro;
|
||||
# define PTR_MANGLE(var) \
|
||||
(var) = (__typeof (var)) ((uintptr_t) (var) ^ __pointer_chk_guard)
|
||||
# define PTR_DEMANGLE(var) PTR_MANGLE (var)
|
||||
# endif
|
||||
#endif
|
||||
|
@ -435,48 +435,4 @@ __local_syscall_error: \
|
||||
|
||||
#endif /* __ASSEMBLER__ */
|
||||
|
||||
/* Pointer mangling support. */
|
||||
#if (defined NOT_IN_libc && defined IS_IN_rtld) || \
|
||||
(!defined SHARED && (!defined NOT_IN_libc || defined IS_IN_libpthread))
|
||||
# ifdef __ASSEMBLER__
|
||||
# define PTR_MANGLE_LOAD(guard, tmp) \
|
||||
LDST_PCREL(ldr, guard, tmp, C_SYMBOL_NAME(__pointer_chk_guard_local));
|
||||
# define PTR_MANGLE(dst, src, guard, tmp) \
|
||||
PTR_MANGLE_LOAD(guard, tmp); \
|
||||
PTR_MANGLE2(dst, src, guard)
|
||||
/* Use PTR_MANGLE2 for efficiency if guard is already loaded. */
|
||||
# define PTR_MANGLE2(dst, src, guard) \
|
||||
eor dst, src, guard
|
||||
# define PTR_DEMANGLE(dst, src, guard, tmp) \
|
||||
PTR_MANGLE (dst, src, guard, tmp)
|
||||
# define PTR_DEMANGLE2(dst, src, guard) \
|
||||
PTR_MANGLE2 (dst, src, guard)
|
||||
# else
|
||||
extern uintptr_t __pointer_chk_guard_local attribute_relro attribute_hidden;
|
||||
# define PTR_MANGLE(var) \
|
||||
(var) = (__typeof (var)) ((uintptr_t) (var) ^ __pointer_chk_guard_local)
|
||||
# define PTR_DEMANGLE(var) PTR_MANGLE (var)
|
||||
# endif
|
||||
#else
|
||||
# ifdef __ASSEMBLER__
|
||||
# define PTR_MANGLE_LOAD(guard, tmp) \
|
||||
LDST_GLOBAL(ldr, guard, tmp, C_SYMBOL_NAME(__pointer_chk_guard));
|
||||
# define PTR_MANGLE(dst, src, guard, tmp) \
|
||||
PTR_MANGLE_LOAD(guard, tmp); \
|
||||
PTR_MANGLE2(dst, src, guard)
|
||||
/* Use PTR_MANGLE2 for efficiency if guard is already loaded. */
|
||||
# define PTR_MANGLE2(dst, src, guard) \
|
||||
eor dst, src, guard
|
||||
# define PTR_DEMANGLE(dst, src, guard, tmp) \
|
||||
PTR_MANGLE (dst, src, guard, tmp)
|
||||
# define PTR_DEMANGLE2(dst, src, guard) \
|
||||
PTR_MANGLE2 (dst, src, guard)
|
||||
# else
|
||||
extern uintptr_t __pointer_chk_guard attribute_relro;
|
||||
# define PTR_MANGLE(var) \
|
||||
(var) = (__typeof (var)) ((uintptr_t) (var) ^ __pointer_chk_guard)
|
||||
# define PTR_DEMANGLE(var) PTR_MANGLE (var)
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#endif /* linux/arm/sysdep.h */
|
||||
|
Loading…
Reference in New Issue
Block a user