Logic specific to ia64 used to live in the main tree in common files.
Now that we can't do that (with #ifdef and such), we need to add that
logic into dedicated overriding files.
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
+2012-04-27 Mike Frysinger <vapier@gentoo.org>
+
+ * sysdeps/ia64/elf/stackguard-macros.h: New stub include file.
+ * sysdeps/ia64/ldsodefs.h: Move ia64 logic from
+ sysdeps/generic/ldsodefs.h.
+ * sysdeps/ia64/nptl/shlib-versions: Move ia64 logic from
+ nptl/shlib-versions.
+ * sysdeps/ia64/preconfigure: Move ia64 logic from configure.in.
+ * sysdeps/ia64/shlib-versions: Move ia64 logic from shlib-versions.
+ * sysdeps/ia64/stackguard-macros.h: Move ia64 logic from
+ elf/stackguard-macros.h.
+ * sysdeps/ia64/tls-macros.h: Move ia64 logic from elf/tls-macros.h.
+ * sysdeps/ia64/tst-audit.h: Move ia64 logic from elf/tst-auditmod1.c.
+ * sysdeps/unix/sysv/linux/ia64/configure.in: Move ia64 logic from
+ sysdeps/unix/sysv/linux/configure.
+ * sysdeps/unix/sysv/linux/ia64/configure: Generate.
+ * sysdeps/unix/sysv/linux/ia64/kernel-features.h: Move ia64 logic
+ from sysdeps/unix/sysv/linux/kernel-features.h.
+
2012-04-27 Mike Frysinger <vapier@gentoo.org>
* sysdeps/ia64/backtrace.c: Replace all contents with a single
--- /dev/null
+/* Tests in nptl/ look for <elf/stackguard-macros.h> while tests
+ in elf/ look for <stackguard-macros.h>. Provide both. */
+#include "../stackguard-macros.h"
--- /dev/null
+/* Run-time dynamic linker data structures for loaded ELF shared objects.
+ Copyright (C) 2012 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
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library. If not, see
+ <http://www.gnu.org/licenses/>. */
+
+#ifndef __LDSODEFS_H
+
+#include <elf.h>
+
+struct La_ia64_regs;
+struct La_ia64_retval;
+
+#define ARCH_PLTENTER_MEMBERS \
+ Elf64_Addr (*ia64_gnu_pltenter) (Elf64_Sym *, unsigned int, \
+ uintptr_t *, uintptr_t *, \
+ const struct La_ia64_regs *, \
+ unsigned int *, const char *name, \
+ long int *framesizep);
+
+#define ARCH_PLTEXIT_MEMBERS \
+ unsigned int (*ia64_gnu_pltexit) (Elf64_Sym *, unsigned int, \
+ uintptr_t *, uintptr_t *, \
+ const struct La_ia64_regs *, \
+ struct La_ia64_retval *, \
+ const char *);
+
+#include_next <ldsodefs.h>
+
+#endif
--- /dev/null
+ia64.*-.*-linux.* libpthread=0 GLIBC_2.2
--- /dev/null
+case "$machine" in
+ia64*) libc_commonpagesize=0x4000 ;;
+esac
--- /dev/null
+ia64-.*-linux.* libc=6.1 GLIBC_2.2
+ia64-.*-linux.* libm=6.1 GLIBC_2.2
+
+ia64-.*-linux.* ld=ld-linux-ia64.so.2 GLIBC_2.2
+
+ia64-.*-.* libBrokenLocale=1 GLIBC_2.2
--- /dev/null
+#include <stdint.h>
+
+#define STACK_CHK_GUARD \
+ ({ uintptr_t x; asm ("adds %0 = -8, r13;; ld8 %0 = [%0]" : "=r" (x)); x; })
--- /dev/null
+/* Macros to support TLS testing in times of missing compiler support. */
+
+extern void *__tls_get_addr (void *);
+
+# define TLS_LE(x) \
+ ({ void *__l; \
+ asm ("mov r2=r13\n\t" \
+ ";;\n\t" \
+ "addl %0=@tprel(" #x "),r2\n\t" \
+ : "=r" (__l) : : "r2" ); __l; })
+
+# define TLS_IE(x) \
+ ({ void *__l; \
+ register long __gp asm ("gp"); \
+ asm (";;\n\t" \
+ "addl r16=@ltoff(@tprel(" #x ")),gp\n\t" \
+ ";;\n\t" \
+ "ld8 r17=[r16]\n\t" \
+ ";;\n\t" \
+ "add %0=r13,r17\n\t" \
+ ";;\n\t" \
+ : "=r" (__l) : "r" (__gp) : "r16", "r17" ); __l; })
+
+# define __TLS_CALL_CLOBBERS \
+ "r2", "r3", "r8", "r9", "r10", "r11", "r14", "r15", "r16", "r17", \
+ "r18", "r19", "r20", "r21", "r22", "r23", "r24", "r25", "r26", \
+ "r27", "r28", "r29", "r30", "r31", \
+ "p6", "p7", "p8", "p9", "p10", "p11", "p12", "p13", "p14", "p15", \
+ "f6", "f7", "f8", "f9", "f10", "f11", "f12", "f13", "f14", "f15", \
+ "b6", "b7", \
+ "out0", "out1", "out2", "out3", "out4", "out5", "out6", "out7"
+
+# define TLS_LD(x) \
+ ({ void *__l; \
+ register long __gp asm ("gp"); \
+ asm (";;\n\t" \
+ "mov loc0=gp\n\t" \
+ "addl r16=@ltoff(@dtpmod(" #x ")),gp\n\t" \
+ "addl out1=@dtprel(" #x "),r0\n\t" \
+ ";;\n\t" \
+ "ld8 out0=[r16]\n\t" \
+ "br.call.sptk.many b0=__tls_get_addr" \
+ ";;\n\t" \
+ "mov gp=loc0\n\t" \
+ "mov %0=r8\n\t" \
+ ";;\n\t" \
+ : "=r" (__l) : "r" (__gp) : "loc0", __TLS_CALL_CLOBBERS); \
+ __l; })
+
+# define TLS_GD(x) \
+ ({ void *__l; \
+ register long __gp asm ("gp"); \
+ asm (";;\n\t" \
+ "mov loc0=gp\n\t" \
+ "addl r16=@ltoff(@dtpmod(" #x ")),gp\n\t" \
+ "addl r17=@ltoff(@dtprel(" #x ")),gp\n\t" \
+ ";;\n\t" \
+ "ld8 out0=[r16]\n\t" \
+ "ld8 out1=[r17]\n\t" \
+ "br.call.sptk.many b0=__tls_get_addr" \
+ ";;\n\t" \
+ "mov gp=loc0\n\t" \
+ "mov %0=r8\n\t" \
+ ";;\n\t" \
+ : "=r" (__l) : "r" (__gp) : "loc0", __TLS_CALL_CLOBBERS); \
+ __l; })
--- /dev/null
+/* Definitions for testing PLT entry/exit auditing. IA64 version.
+
+ Copyright (C) 2012 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
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library. If not, see
+ <http://www.gnu.org/licenses/>. */
+
+#define pltenter la_ia64_gnu_pltenter
+#define pltexit la_ia64_gnu_pltexit
+#define La_regs La_ia64_regs
+#define La_retval La_ia64_retval
+#define int_retval lrv_r8
--- /dev/null
+# This file is generated from configure.in by Autoconf. DO NOT EDIT!
+ # Local configure fragment for sysdeps/unix/sysv/linux/ia64
+
+# There are several bits that no longer compile cleanly without
+# realtime signal support (ver 2.2.0). Given that we also now
+# require TLS (ver 2.6.0), it seems pointless to fix them.
+# ??? Surely this should now be the generic default.
+arch_minimum_kernel=2.6.0
+
+ldd_rewrite_script=$dir/ldd-rewrite.sed
--- /dev/null
+GLIBC_PROVIDES dnl See aclocal.m4 in the top level source directory.
+# Local configure fragment for sysdeps/unix/sysv/linux/ia64
+
+# There are several bits that no longer compile cleanly without
+# realtime signal support (ver 2.2.0). Given that we also now
+# require TLS (ver 2.6.0), it seems pointless to fix them.
+# ??? Surely this should now be the generic default.
+arch_minimum_kernel=2.6.0
+
+ldd_rewrite_script=$dir/ldd-rewrite.sed
--- /dev/null
+/* Set flags signalling availability of kernel features based on given
+ kernel version number.
+ Copyright (C) 2010-2012 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
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library. If not, see
+ <http://www.gnu.org/licenses/>. */
+
+#ifndef _KERNEL_FEATURES_H
+#define _KERNEL_FEATURES_H 1
+
+/* The late 2.5 kernels saw a lot of new CLONE_* flags. Summarize
+ their availability with one define. */
+#if __LINUX_KERNEL_VERSION >= 132416
+# define __ASSUME_CLONE_THREAD_FLAGS 1
+#endif
+
+/* The utimes syscall has been available for some architectures
+ forever. */
+#define __ASSUME_UTIMES 1
+
+/* pselect/ppoll were introduced just after 2.6.16-rc1. Due to the way
+ the kernel versions are advertised we can only rely on 2.6.17 to have
+ the code. */
+#if __LINUX_KERNEL_VERSION >= 0x020616
+# define __ASSUME_PSELECT 1
+# define __ASSUME_PPOLL 1
+#endif
+
+/* Support for various CLOEXEC and NONBLOCK flags was added in 2.6.23. */
+#if __LINUX_KERNEL_VERSION >= 0x020617
+# define __ASSUME_O_CLOEXEC 1
+#endif
+
+/* Support for various CLOEXEC and NONBLOCK flags was added in 2.6.27. */
+#if __LINUX_KERNEL_VERSION >= 0x02061b
+# define __ASSUME_SOCK_CLOEXEC 1
+# define __ASSUME_IN_NONBLOCK 1
+# define __ASSUME_PIPE2 1
+# define __ASSUME_EVENTFD2 1
+# define __ASSUME_SIGNALFD4 1
+# define __ASSUME_DUP3 1
+#endif
+
+#include_next <kernel-features.h>
+
+#endif /* _KERNEL_FEATURES_H */