]> git.ipfire.org Git - thirdparty/glibc.git/commitdiff
Update ARM for ABIVERSION changes.
authorJoseph Myers <joseph@codesourcery.com>
Tue, 30 Mar 2010 16:26:07 +0000 (16:26 +0000)
committerJoseph Myers <joseph@codesourcery.com>
Tue, 30 Mar 2010 16:26:07 +0000 (16:26 +0000)
ChangeLog.arm
sysdeps/arm/dl-machine.h
sysdeps/unix/sysv/linux/arm/ldsodefs.h [new file with mode: 0644]

index aa8f2d777b9e577925aa2ac8e3c66de7632b10bf..d13f4a3c3588685f7b3e09d6a33e24e699db9522 100644 (file)
@@ -1,3 +1,9 @@
+2010-03-30  Joseph Myers  <joseph@codesourcery.com>
+
+       * 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  <thomas@codesourcery.com>
 
        * sysdeps/arm/configure.in: New file.
index f839d97b18f5f686885ac8bac6e808384ffa699d..c55576356a1ff3d135e57c64d4d081bf84f0ad6a 100644 (file)
@@ -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
 #include <sys/param.h>
 #include <tls.h>
 
-#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 (file)
index 0000000..3747c3b
--- /dev/null
@@ -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 <ldsodefs.h>
+
+#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