aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog31
-rw-r--r--sysdeps/generic/ldsodefs.h108
-rw-r--r--sysdeps/i386/ldsodefs.h40
-rw-r--r--sysdeps/powerpc/ldsodefs.h54
-rw-r--r--sysdeps/s390/ldsodefs.h57
-rw-r--r--sysdeps/sh/ldsodefs.h40
-rw-r--r--sysdeps/sparc/ldsodefs.h55
-rw-r--r--sysdeps/x86_64/ldsodefs.h55
8 files changed, 332 insertions, 108 deletions
diff --git a/ChangeLog b/ChangeLog
index d855526c02..87552c4452 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,34 @@
+2012-07-25 Joseph Myers <joseph@codesourcery.com>
+
+ * sysdeps/generic/ldsodefs.h (struct La_i86_regs): Remove.
+ (struct La_i86_retval): Likewise.
+ (struct La_x86_64_regs): Likewise.
+ (struct La_x86_64_retval): Likewise.
+ (struct La_x32_regs): Likewise.
+ (struct La_x32_retval): Likewise.
+ (struct La_ppc32_regs): Likewise.
+ (struct La_ppc32_retval): Likewise.
+ (struct La_ppc64_regs): Likewise.
+ (struct La_ppc64_retval): Likewise.
+ (struct La_sh_regs): Likewise.
+ (struct La_sh_retval): Likewise.
+ (struct La_s390_32_regs): Likewise.
+ (struct La_s390_32_retval): Likewise.
+ (struct La_s390_64_regs): Likewise.
+ (struct La_s390_64_retval): Likewise.
+ (struct La_sparc32_regs): Likewise.
+ (struct La_sparc32_retval): Likewise.
+ (struct La_sparc64_regs): Likewise.
+ (struct La_sparc64_retval): Likewise.
+ (struct audit_ifaces): Remove architecture-specific pltenter and
+ pltexit members.
+ * sysdeps/i386/ldsodefs.h: New file.
+ * sysdeps/powerpc/ldsodefs.h: Likewise.
+ * sysdeps/s390/ldsodefs.h: Likewise.
+ * sysdeps/sh/ldsodefs.h: Likewise.
+ * sysdeps/sparc/ldsodefs.h: Likewise.
+ * sysdeps/x86_64/ldsodefs.h: Likewise.
+
2012-07-25 Marek Polacek <polacek@redhat.com>
[BZ #6808]
diff --git a/sysdeps/generic/ldsodefs.h b/sysdeps/generic/ldsodefs.h
index 98cc123078..39c633904a 100644
--- a/sysdeps/generic/ldsodefs.h
+++ b/sysdeps/generic/ldsodefs.h
@@ -182,28 +182,6 @@ enum allowmask
};
-/* Type for list of auditing interfaces. */
-struct La_i86_regs;
-struct La_i86_retval;
-struct La_x86_64_regs;
-struct La_x86_64_retval;
-struct La_x32_regs;
-struct La_x32_retval;
-struct La_ppc32_regs;
-struct La_ppc32_retval;
-struct La_ppc64_regs;
-struct La_ppc64_retval;
-struct La_sh_regs;
-struct La_sh_retval;
-struct La_s390_32_regs;
-struct La_s390_32_retval;
-struct La_s390_64_regs;
-struct La_s390_64_retval;
-struct La_sparc32_regs;
-struct La_sparc32_retval;
-struct La_sparc64_regs;
-struct La_sparc64_retval;
-
struct audit_ifaces
{
void (*activity) (uintptr_t *, unsigned int);
@@ -219,98 +197,12 @@ struct audit_ifaces
};
union
{
- Elf32_Addr (*i86_gnu_pltenter) (Elf32_Sym *, unsigned int, uintptr_t *,
- uintptr_t *, struct La_i86_regs *,
- unsigned int *, const char *name,
- long int *framesizep);
- Elf64_Addr (*x86_64_gnu_pltenter) (Elf64_Sym *, unsigned int, uintptr_t *,
- uintptr_t *, struct La_x86_64_regs *,
- unsigned int *, const char *name,
- long int *framesizep);
- Elf32_Addr (*x32_gnu_pltenter) (Elf32_Sym *, unsigned int, uintptr_t *,
- uintptr_t *, struct La_x32_regs *,
- unsigned int *, const char *name,
- long int *framesizep);
- Elf32_Addr (*ppc32_gnu_pltenter) (Elf32_Sym *, unsigned int, uintptr_t *,
- uintptr_t *, struct La_ppc32_regs *,
- unsigned int *, const char *name,
- long int *framesizep);
- Elf64_Addr (*ppc64_gnu_pltenter) (Elf64_Sym *, unsigned int, uintptr_t *,
- uintptr_t *, struct La_ppc64_regs *,
- unsigned int *, const char *name,
- long int *framesizep);
- uintptr_t (*sh_gnu_pltenter) (Elf32_Sym *, unsigned int, uintptr_t *,
- uintptr_t *, const struct La_sh_regs *,
- unsigned int *, const char *name,
- long int *framesizep);
- Elf32_Addr (*s390_32_gnu_pltenter) (Elf32_Sym *, unsigned int, uintptr_t *,
- uintptr_t *, struct La_s390_32_regs *,
- unsigned int *, const char *name,
- long int *framesizep);
- Elf64_Addr (*s390_64_gnu_pltenter) (Elf64_Sym *, unsigned int, uintptr_t *,
- uintptr_t *, struct La_s390_64_regs *,
- unsigned int *, const char *name,
- long int *framesizep);
- Elf32_Addr (*sparc32_gnu_pltenter) (Elf32_Sym *, unsigned int,
- uintptr_t *, uintptr_t *,
- const struct La_sparc32_regs *,
- unsigned int *, const char *name,
- long int *framesizep);
- Elf64_Addr (*sparc64_gnu_pltenter) (Elf64_Sym *, unsigned int,
- uintptr_t *, uintptr_t *,
- const struct La_sparc64_regs *,
- unsigned int *, const char *name,
- long int *framesizep);
#ifdef ARCH_PLTENTER_MEMBERS
ARCH_PLTENTER_MEMBERS;
#endif
};
union
{
- unsigned int (*i86_gnu_pltexit) (Elf32_Sym *, unsigned int, uintptr_t *,
- uintptr_t *, const struct La_i86_regs *,
- struct La_i86_retval *, const char *);
- unsigned int (*x86_64_gnu_pltexit) (Elf64_Sym *, unsigned int, uintptr_t *,
- uintptr_t *,
- const struct La_x86_64_regs *,
- struct La_x86_64_retval *,
- const char *);
- unsigned int (*x32_gnu_pltexit) (Elf32_Sym *, unsigned int, uintptr_t *,
- uintptr_t *,
- const struct La_x32_regs *,
- struct La_x86_64_retval *,
- const char *);
- unsigned int (*ppc32_gnu_pltexit) (Elf32_Sym *, unsigned int, uintptr_t *,
- uintptr_t *,
- const struct La_ppc32_regs *,
- struct La_ppc32_retval *, const char *);
- unsigned int (*ppc64_gnu_pltexit) (Elf64_Sym *, unsigned int, uintptr_t *,
- uintptr_t *,
- const struct La_ppc64_regs *,
- struct La_ppc64_retval *, const char *);
- unsigned int (*sh_gnu_pltexit) (Elf32_Sym *, unsigned int, uintptr_t *,
- uintptr_t *, const struct La_sh_regs *,
- struct La_sh_retval *, const char *);
- unsigned int (*s390_32_gnu_pltexit) (Elf32_Sym *, unsigned int,
- uintptr_t *, uintptr_t *,
- const struct La_s390_32_regs *,
- struct La_s390_32_retval *,
- const char *);
- unsigned int (*s390_64_gnu_pltexit) (Elf64_Sym *, unsigned int,
- uintptr_t *, uintptr_t *,
- const struct La_s390_64_regs *,
- struct La_s390_64_retval *,
- const char *);
- unsigned int (*sparc32_gnu_pltexit) (Elf32_Sym *, unsigned int,
- uintptr_t *, uintptr_t *,
- const struct La_sparc32_regs *,
- struct La_sparc32_retval *,
- const char *);
- unsigned int (*sparc64_gnu_pltexit) (Elf64_Sym *, unsigned int,
- uintptr_t *, uintptr_t *,
- const struct La_sparc32_regs *,
- struct La_sparc32_retval *,
- const char *);
#ifdef ARCH_PLTEXIT_MEMBERS
ARCH_PLTEXIT_MEMBERS;
#endif
diff --git a/sysdeps/i386/ldsodefs.h b/sysdeps/i386/ldsodefs.h
new file mode 100644
index 0000000000..74880e9ebd
--- /dev/null
+++ b/sysdeps/i386/ldsodefs.h
@@ -0,0 +1,40 @@
+/* Run-time dynamic linker data structures for loaded ELF shared objects.
+ Copyright (C) 1995-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 _I386_LDSODEFS_H
+#define _I386_LDSODEFS_H 1
+
+#include <elf.h>
+
+struct La_i86_regs;
+struct La_i86_retval;
+
+#define ARCH_PLTENTER_MEMBERS \
+ Elf32_Addr (*i86_gnu_pltenter) (Elf32_Sym *, unsigned int, uintptr_t *, \
+ uintptr_t *, struct La_i86_regs *, \
+ unsigned int *, const char *name, \
+ long int *framesizep)
+
+#define ARCH_PLTEXIT_MEMBERS \
+ unsigned int (*i86_gnu_pltexit) (Elf32_Sym *, unsigned int, uintptr_t *, \
+ uintptr_t *, const struct La_i86_regs *, \
+ struct La_i86_retval *, const char *)
+
+#include_next <ldsodefs.h>
+
+#endif
diff --git a/sysdeps/powerpc/ldsodefs.h b/sysdeps/powerpc/ldsodefs.h
new file mode 100644
index 0000000000..4a543491af
--- /dev/null
+++ b/sysdeps/powerpc/ldsodefs.h
@@ -0,0 +1,54 @@
+/* Run-time dynamic linker data structures for loaded ELF shared objects.
+ Copyright (C) 1995-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 _POWERPC_LDSODEFS_H
+#define _POWERPC_LDSODEFS_H 1
+
+#include <elf.h>
+
+struct La_ppc32_regs;
+struct La_ppc32_retval;
+struct La_ppc64_regs;
+struct La_ppc64_retval;
+
+#define ARCH_PLTENTER_MEMBERS \
+ Elf32_Addr (*ppc32_gnu_pltenter) (Elf32_Sym *, unsigned int, uintptr_t *, \
+ uintptr_t *, struct La_ppc32_regs *, \
+ unsigned int *, const char *name, \
+ long int *framesizep); \
+ Elf64_Addr (*ppc64_gnu_pltenter) (Elf64_Sym *, unsigned int, uintptr_t *, \
+ uintptr_t *, struct La_ppc64_regs *, \
+ unsigned int *, const char *name, \
+ long int *framesizep)
+
+#define ARCH_PLTEXIT_MEMBERS \
+ unsigned int (*ppc32_gnu_pltexit) (Elf32_Sym *, unsigned int, \
+ uintptr_t *, \
+ uintptr_t *, \
+ const struct La_ppc32_regs *, \
+ struct La_ppc32_retval *, \
+ const char *); \
+ unsigned int (*ppc64_gnu_pltexit) (Elf64_Sym *, unsigned int, \
+ uintptr_t *, \
+ uintptr_t *, \
+ const struct La_ppc64_regs *, \
+ struct La_ppc64_retval *, const char *)
+
+#include_next <ldsodefs.h>
+
+#endif
diff --git a/sysdeps/s390/ldsodefs.h b/sysdeps/s390/ldsodefs.h
new file mode 100644
index 0000000000..e5e3168988
--- /dev/null
+++ b/sysdeps/s390/ldsodefs.h
@@ -0,0 +1,57 @@
+/* Run-time dynamic linker data structures for loaded ELF shared objects.
+ Copyright (C) 1995-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 _S390_LDSODEFS_H
+#define _S390_LDSODEFS_H 1
+
+#include <elf.h>
+
+struct La_s390_32_regs;
+struct La_s390_32_retval;
+struct La_s390_64_regs;
+struct La_s390_64_retval;
+
+#define ARCH_PLTENTER_MEMBERS \
+ Elf32_Addr (*s390_32_gnu_pltenter) (Elf32_Sym *, unsigned int, \
+ uintptr_t *, \
+ uintptr_t *, \
+ struct La_s390_32_regs *, \
+ unsigned int *, const char *name, \
+ long int *framesizep); \
+ Elf64_Addr (*s390_64_gnu_pltenter) (Elf64_Sym *, unsigned int, \
+ uintptr_t *, \
+ uintptr_t *, \
+ struct La_s390_64_regs *, \
+ unsigned int *, const char *name, \
+ long int *framesizep)
+
+#define ARCH_PLTEXIT_MEMBERS \
+ unsigned int (*s390_32_gnu_pltexit) (Elf32_Sym *, unsigned int, \
+ uintptr_t *, uintptr_t *, \
+ const struct La_s390_32_regs *, \
+ struct La_s390_32_retval *, \
+ const char *); \
+ unsigned int (*s390_64_gnu_pltexit) (Elf64_Sym *, unsigned int, \
+ uintptr_t *, uintptr_t *, \
+ const struct La_s390_64_regs *, \
+ struct La_s390_64_retval *, \
+ const char *)
+
+#include_next <ldsodefs.h>
+
+#endif
diff --git a/sysdeps/sh/ldsodefs.h b/sysdeps/sh/ldsodefs.h
new file mode 100644
index 0000000000..66d1e2fbb6
--- /dev/null
+++ b/sysdeps/sh/ldsodefs.h
@@ -0,0 +1,40 @@
+/* Run-time dynamic linker data structures for loaded ELF shared objects.
+ Copyright (C) 1995-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 _SH_LDSODEFS_H
+#define _SH_LDSODEFS_H 1
+
+#include <elf.h>
+
+struct La_sh_regs;
+struct La_sh_retval;
+
+#define ARCH_PLTENTER_MEMBERS \
+ uintptr_t (*sh_gnu_pltenter) (Elf32_Sym *, unsigned int, uintptr_t *, \
+ uintptr_t *, const struct La_sh_regs *, \
+ unsigned int *, const char *name, \
+ long int *framesizep)
+
+#define ARCH_PLTEXIT_MEMBERS \
+ unsigned int (*sh_gnu_pltexit) (Elf32_Sym *, unsigned int, uintptr_t *, \
+ uintptr_t *, const struct La_sh_regs *, \
+ struct La_sh_retval *, const char *)
+
+#include_next <ldsodefs.h>
+
+#endif
diff --git a/sysdeps/sparc/ldsodefs.h b/sysdeps/sparc/ldsodefs.h
new file mode 100644
index 0000000000..2cfdc49f7b
--- /dev/null
+++ b/sysdeps/sparc/ldsodefs.h
@@ -0,0 +1,55 @@
+/* Run-time dynamic linker data structures for loaded ELF shared objects.
+ Copyright (C) 1995-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 _SPARC_LDSODEFS_H
+#define _SPARC_LDSODEFS_H 1
+
+#include <elf.h>
+
+struct La_sparc32_regs;
+struct La_sparc32_retval;
+struct La_sparc64_regs;
+struct La_sparc64_retval;
+
+#define ARCH_PLTENTER_MEMBERS \
+ Elf32_Addr (*sparc32_gnu_pltenter) (Elf32_Sym *, unsigned int, \
+ uintptr_t *, uintptr_t *, \
+ const struct La_sparc32_regs *, \
+ unsigned int *, const char *name, \
+ long int *framesizep); \
+ Elf64_Addr (*sparc64_gnu_pltenter) (Elf64_Sym *, unsigned int, \
+ uintptr_t *, uintptr_t *, \
+ const struct La_sparc64_regs *, \
+ unsigned int *, const char *name, \
+ long int *framesizep)
+
+#define ARCH_PLTEXIT_MEMBERS \
+ unsigned int (*sparc32_gnu_pltexit) (Elf32_Sym *, unsigned int, \
+ uintptr_t *, uintptr_t *, \
+ const struct La_sparc32_regs *, \
+ struct La_sparc32_retval *, \
+ const char *); \
+ unsigned int (*sparc64_gnu_pltexit) (Elf64_Sym *, unsigned int, \
+ uintptr_t *, uintptr_t *, \
+ const struct La_sparc32_regs *, \
+ struct La_sparc32_retval *, \
+ const char *)
+
+#include_next <ldsodefs.h>
+
+#endif
diff --git a/sysdeps/x86_64/ldsodefs.h b/sysdeps/x86_64/ldsodefs.h
new file mode 100644
index 0000000000..bf06837b2d
--- /dev/null
+++ b/sysdeps/x86_64/ldsodefs.h
@@ -0,0 +1,55 @@
+/* Run-time dynamic linker data structures for loaded ELF shared objects.
+ Copyright (C) 1995-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 _X86_64_LDSODEFS_H
+#define _X86_64_LDSODEFS_H 1
+
+#include <elf.h>
+
+struct La_x86_64_regs;
+struct La_x86_64_retval;
+struct La_x32_regs;
+struct La_x32_retval;
+
+#define ARCH_PLTENTER_MEMBERS \
+ Elf64_Addr (*x86_64_gnu_pltenter) (Elf64_Sym *, unsigned int, \
+ uintptr_t *, \
+ uintptr_t *, struct La_x86_64_regs *, \
+ unsigned int *, const char *name, \
+ long int *framesizep); \
+ Elf32_Addr (*x32_gnu_pltenter) (Elf32_Sym *, unsigned int, uintptr_t *, \
+ uintptr_t *, struct La_x32_regs *, \
+ unsigned int *, const char *name, \
+ long int *framesizep)
+
+#define ARCH_PLTEXIT_MEMBERS \
+ unsigned int (*x86_64_gnu_pltexit) (Elf64_Sym *, unsigned int, \
+ uintptr_t *, \
+ uintptr_t *, \
+ const struct La_x86_64_regs *, \
+ struct La_x86_64_retval *, \
+ const char *); \
+ unsigned int (*x32_gnu_pltexit) (Elf32_Sym *, unsigned int, uintptr_t *, \
+ uintptr_t *, \
+ const struct La_x32_regs *, \
+ struct La_x86_64_retval *, \
+ const char *)
+
+#include_next <ldsodefs.h>
+
+#endif