patches/glibc/2.7/210-alpha-ptr_mangle.patch
author Jang, Bongseo <graycells@gmail.com>
Sun Sep 23 11:53:02 2012 +0900 (2012-09-23)
changeset 3059 1e5fe55974bc
parent 744 4bf8448536d5
permissions -rw-r--r--
debug/gdb: fix from upstream with newer glibc(siginfo vs siginfo_t, Gentoo gdb-7.4.1 patch)

This is for when you failed to build gdb-native with the error:

gdb-7.4.1/gdb/linux-nat.h:79:18: error: field 'siginfo' has incomplete type"

This is from mirror://gentoo/distfiles/gdb-7.4.1-patches-2.tar.xz

Signed-off-by: "Jang, Bongseo" <graycells@gmail.com>
[yann.morin.1998@free.fr: refresh ptrace_setsiginfo patch]
Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
Message-ID: <4eef2edec3201c50b420.1348370891@localhost.localdomain>
PatchWork-ID: 186179
     1 --- glibc-2.7.orig/sysdeps/unix/alpha/sysdep.h
     2 +++ glibc-2.7/sysdeps/unix/alpha/sysdep.h
     3 @@ -397,42 +397,4 @@
     4  	_sc_ret = _sc_0, _sc_err = _sc_19;			\
     5  }
     6  
     7 -/* Pointer mangling support.  Note that tls access is slow enough that
     8 -   we don't deoptimize things by placing the pointer check value there.  */
     9 -
    10 -#include <stdint.h>
    11 -
    12 -#if defined NOT_IN_libc && defined IS_IN_rtld
    13 -# ifdef __ASSEMBLER__
    14 -#  define PTR_MANGLE(dst, src, tmp)				\
    15 -	ldah	tmp, __pointer_chk_guard_local($29) !gprelhigh;	\
    16 -	ldq	tmp, __pointer_chk_guard_local(tmp) !gprellow;	\
    17 -	xor	src, tmp, dst
    18 -#  define PTR_MANGLE2(dst, src, tmp)				\
    19 -	xor	src, tmp, dst
    20 -#  define PTR_DEMANGLE(dst, tmp)   PTR_MANGLE(dst, dst, tmp)
    21 -#  define PTR_DEMANGLE2(dst, tmp)  PTR_MANGLE2(dst, dst, tmp)
    22 -# else
    23 -extern uintptr_t __pointer_chk_guard_local attribute_relro attribute_hidden;
    24 -#  define PTR_MANGLE(var)	\
    25 -  (var) = (__typeof (var)) ((uintptr_t) (var) ^ __pointer_chk_guard_local)
    26 -#  define PTR_DEMANGLE(var)  PTR_MANGLE(var)
    27 -# endif
    28 -#elif defined PIC
    29 -# ifdef __ASSEMBLER__
    30 -#  define PTR_MANGLE(dst, src, tmp)		\
    31 -	ldq	tmp, __pointer_chk_guard;	\
    32 -	xor	src, tmp, dst
    33 -#  define PTR_MANGLE2(dst, src, tmp)		\
    34 -	xor	src, tmp, dst
    35 -#  define PTR_DEMANGLE(dst, tmp)   PTR_MANGLE(dst, dst, tmp)
    36 -#  define PTR_DEMANGLE2(dst, tmp)  PTR_MANGLE2(dst, dst, tmp)
    37 -# else
    38 -extern uintptr_t __pointer_chk_guard attribute_relro;
    39 -#  define PTR_MANGLE(var)	\
    40 -	(var) = (void *) ((uintptr_t) (var) ^ __pointer_chk_guard)
    41 -#  define PTR_DEMANGLE(var)  PTR_MANGLE(var)
    42 -# endif
    43 -#endif
    44 -
    45  #endif /* ASSEMBLER */
    46 --- glibc-2.7.orig/sysdeps/unix/sysv/linux/alpha/sysdep.h
    47 +++ glibc-2.7/sysdeps/unix/sysv/linux/alpha/sysdep.h
    48 @@ -98,4 +98,46 @@
    49  	INTERNAL_SYSCALL1(name, err_out, nr, args);			\
    50  })
    51  
    52 +/* Pointer mangling support.  Note that tls access is slow enough that
    53 +   we don't deoptimize things by placing the pointer check value there.  */
    54 +
    55 +#if defined NOT_IN_libc && defined IS_IN_rtld
    56 +# ifdef __ASSEMBLER__
    57 +#  define PTR_MANGLE(dst, src, tmp)				\
    58 +	ldah	tmp, __pointer_chk_guard_local($29) !gprelhigh;	\
    59 +	ldq	tmp, __pointer_chk_guard_local(tmp) !gprellow;	\
    60 +	xor	src, tmp, dst
    61 +#  define PTR_MANGLE2(dst, src, tmp)				\
    62 +	xor	src, tmp, dst
    63 +#  define PTR_DEMANGLE(dst, tmp)   PTR_MANGLE(dst, dst, tmp)
    64 +#  define PTR_DEMANGLE2(dst, tmp)  PTR_MANGLE2(dst, dst, tmp)
    65 +# else
    66 +extern uintptr_t __pointer_chk_guard_local attribute_relro attribute_hidden;
    67 +#  define PTR_MANGLE(var)	\
    68 +  (var) = (__typeof (var)) ((uintptr_t) (var) ^ __pointer_chk_guard_local)
    69 +#  define PTR_DEMANGLE(var)  PTR_MANGLE(var)
    70 +# endif
    71 +#elif defined PIC
    72 +# ifdef __ASSEMBLER__
    73 +#  define PTR_MANGLE(dst, src, tmp)		\
    74 +	ldq	tmp, __pointer_chk_guard;	\
    75 +	xor	src, tmp, dst
    76 +#  define PTR_MANGLE2(dst, src, tmp)		\
    77 +	xor	src, tmp, dst
    78 +#  define PTR_DEMANGLE(dst, tmp)   PTR_MANGLE(dst, dst, tmp)
    79 +#  define PTR_DEMANGLE2(dst, tmp)  PTR_MANGLE2(dst, dst, tmp)
    80 +# else
    81 +extern uintptr_t __pointer_chk_guard attribute_relro;
    82 +#  define PTR_MANGLE(var)	\
    83 +	(var) = (void *) ((uintptr_t) (var) ^ __pointer_chk_guard)
    84 +#  define PTR_DEMANGLE(var)  PTR_MANGLE(var)
    85 +# endif
    86 +#else
    87 +/* Pointer mangling is not yet supported for static libc on alpha.  */
    88 +# ifndef __ASSEMBLER__
    89 +#  define PTR_MANGLE(var)   (void) (var)
    90 +#  define PTR_DEMANGLE(var) (void) (var)
    91 +# endif
    92 +#endif
    93 +
    94  #endif /* _LINUX_ALPHA_SYSDEP_H */