mirror of
git://sourceware.org/git/glibc.git
synced 2025-01-18 12:16:13 +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>
|
2014-08-01 Siddhesh Poyarekar <siddhesh@redhat.com>
|
||||||
|
|
||||||
* include/libc-symbols.h (HAVE_LIBINTL_H): Define macro.
|
* include/libc-symbols.h (HAVE_LIBINTL_H): Define macro.
|
||||||
|
@ -19,6 +19,10 @@
|
|||||||
#include <sysdeps/generic/sysdep.h>
|
#include <sysdeps/generic/sysdep.h>
|
||||||
#include <features.h>
|
#include <features.h>
|
||||||
|
|
||||||
|
#ifndef __ASSEMBLER__
|
||||||
|
# include <stdint.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
/* The __ARM_ARCH define is provided by gcc 4.8. Construct it otherwise. */
|
/* The __ARM_ARCH define is provided by gcc 4.8. Construct it otherwise. */
|
||||||
#ifndef __ARM_ARCH
|
#ifndef __ARM_ARCH
|
||||||
# ifdef __ARM_ARCH_2__
|
# ifdef __ARM_ARCH_2__
|
||||||
@ -286,3 +290,47 @@
|
|||||||
#else
|
#else
|
||||||
# define PC_OFS 8
|
# define PC_OFS 8
|
||||||
#endif
|
#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__ */
|
#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 */
|
#endif /* linux/arm/sysdep.h */
|
||||||
|
Loading…
Reference in New Issue
Block a user