From 848fa4a9c0642f6103c86aac7f3ea9786bf34c1f Mon Sep 17 00:00:00 2001 From: Joseph Myers Date: Tue, 30 Mar 2010 16:26:07 +0000 Subject: [PATCH] Update ARM for ABIVERSION changes. --- ChangeLog.arm | 6 +++ sysdeps/arm/dl-machine.h | 12 +---- sysdeps/unix/sysv/linux/arm/ldsodefs.h | 65 ++++++++++++++++++++++++++ 3 files changed, 73 insertions(+), 10 deletions(-) create mode 100644 sysdeps/unix/sysv/linux/arm/ldsodefs.h diff --git a/ChangeLog.arm b/ChangeLog.arm index aa8f2d777b9..d13f4a3c358 100644 --- a/ChangeLog.arm +++ b/ChangeLog.arm @@ -1,3 +1,9 @@ +2010-03-30 Joseph Myers + + * sysdeps/arm/dl-machine.h (VALID_ELF_ABIVERSION, VALID_ELF_OSABI, + VALID_ELF_HEADER): Remove. + * sysdeps/unix/sysv/linux/arm/ldsodefs.h: New. + 2010-03-26 Thomas Schwinge * sysdeps/arm/configure.in: New file. diff --git a/sysdeps/arm/dl-machine.h b/sysdeps/arm/dl-machine.h index f839d97b18f..c55576356a1 100644 --- a/sysdeps/arm/dl-machine.h +++ b/sysdeps/arm/dl-machine.h @@ -1,6 +1,6 @@ /* Machine-dependent ELF dynamic relocation inline functions. ARM version. - Copyright (C) 1995,1996,1997,1998,1999,2000,2001,2002,2003,2004,2005 - Free Software Foundation, Inc. + Copyright (C) 1995,1996,1997,1998,1999,2000,2001,2002,2003,2004,2005, + 2006, 2009, 2010 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 @@ -26,14 +26,6 @@ #include #include -#define VALID_ELF_ABIVERSION(ver) (ver == 0) -#define VALID_ELF_OSABI(osabi) \ - (osabi == ELFOSABI_SYSV || osabi == ELFOSABI_ARM) -#define VALID_ELF_HEADER(hdr,exp,size) \ - memcmp (hdr,exp,size-2) == 0 \ - && VALID_ELF_OSABI (hdr[EI_OSABI]) \ - && VALID_ELF_ABIVERSION (hdr[EI_ABIVERSION]) - #define CLEAR_CACHE(BEG,END) \ INTERNAL_SYSCALL_ARM (cacheflush, , 3, (BEG), (END), 0) diff --git a/sysdeps/unix/sysv/linux/arm/ldsodefs.h b/sysdeps/unix/sysv/linux/arm/ldsodefs.h new file mode 100644 index 00000000000..3747c3b5ae7 --- /dev/null +++ b/sysdeps/unix/sysv/linux/arm/ldsodefs.h @@ -0,0 +1,65 @@ +/* Run-time dynamic linker data structures for loaded ELF shared objects. + Copyright (C) 2010 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, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ + +#ifndef _ARM_LINUX_LDSODEFS_H +#define _ARM_LINUX_LDSODEFS_H 1 + +#include_next + +#undef VALID_ELF_HEADER +#undef VALID_ELF_OSABI + +#ifdef __ARM_EABI__ +#define EXTRA_OSABI ELFOSABI_ARM_AEABI +#else +#define EXTRA_OSABI ELFOSABI_ARM +#endif + +#define VALID_ELF_HEADER(hdr,exp,size) \ + (memcmp (hdr, exp, size) == 0 \ + || memcmp (hdr, expected2, size) == 0 \ + || memcmp (hdr, expected3, size) == 0) +#define VALID_ELF_OSABI(osabi) (osabi == ELFOSABI_SYSV \ + || osabi == EXTRA_OSABI \ + || osabi == ELFOSABI_LINUX) +#define MORE_ELF_HEADER_DATA \ + static const unsigned char expected2[EI_PAD] = \ + { \ + [EI_MAG0] = ELFMAG0, \ + [EI_MAG1] = ELFMAG1, \ + [EI_MAG2] = ELFMAG2, \ + [EI_MAG3] = ELFMAG3, \ + [EI_CLASS] = ELFW(CLASS), \ + [EI_DATA] = byteorder, \ + [EI_VERSION] = EV_CURRENT, \ + [EI_OSABI] = ELFOSABI_LINUX \ + }; \ + static const unsigned char expected3[EI_PAD] = \ + { \ + [EI_MAG0] = ELFMAG0, \ + [EI_MAG1] = ELFMAG1, \ + [EI_MAG2] = ELFMAG2, \ + [EI_MAG3] = ELFMAG3, \ + [EI_CLASS] = ELFW(CLASS), \ + [EI_DATA] = byteorder, \ + [EI_VERSION] = EV_CURRENT, \ + [EI_OSABI] = EXTRA_OSABI \ + } + +#endif -- 2.47.2