ia64: add split-out settings into dedicated files

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>
This commit is contained in:
Mike Frysinger 2012-04-16 22:52:56 -04:00
parent 5f870869a6
commit 15be91c2a0
12 changed files with 247 additions and 0 deletions

View File

@ -1,3 +1,22 @@
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

View File

@ -0,0 +1,3 @@
/* Tests in nptl/ look for <elf/stackguard-macros.h> while tests
in elf/ look for <stackguard-macros.h>. Provide both. */
#include "../stackguard-macros.h"

42
sysdeps/ia64/ldsodefs.h Normal file
View File

@ -0,0 +1,42 @@
/* 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

View File

@ -0,0 +1 @@
ia64.*-.*-linux.* libpthread=0 GLIBC_2.2

View File

@ -0,0 +1,3 @@
case "$machine" in
ia64*) libc_commonpagesize=0x4000 ;;
esac

View File

@ -0,0 +1,6 @@
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

View File

@ -0,0 +1,4 @@
#include <stdint.h>
#define STACK_CHK_GUARD \
({ uintptr_t x; asm ("adds %0 = -8, r13;; ld8 %0 = [%0]" : "=r" (x)); x; })

66
sysdeps/ia64/tls-macros.h Normal file
View File

@ -0,0 +1,66 @@
/* 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; })

25
sysdeps/ia64/tst-audit.h Normal file
View File

@ -0,0 +1,25 @@
/* 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

10
sysdeps/unix/sysv/linux/ia64/configure vendored Normal file
View File

@ -0,0 +1,10 @@
# 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

View File

@ -0,0 +1,10 @@
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

View File

@ -0,0 +1,58 @@
/* 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 */