Remove dead code from x86-32 SSSE3 strncmp.
[glibc.git] / sysdeps / unix / sysv / linux / ldsodefs.h
blob5d5b1b4c06dee5daf1c34b2e223491518cc7f82f
1 /* Run-time dynamic linker data structures for loaded ELF shared objects.
2 Copyright (C) 2001, 2002, 2003, 2006, 2009, 2010 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library; if not, write to the Free
17 Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
18 02111-1307 USA. */
20 #ifndef _LDSODEFS_H
22 #include <libc-abis.h>
23 #include <kernel-features.h>
25 /* Get the real definitions. */
26 #include_next <ldsodefs.h>
28 /* Now define our stuff. */
30 /* We have the auxiliary vector. */
31 #define HAVE_AUX_VECTOR
33 /* Used by static binaries to check the auxiliary vector. */
34 extern void _dl_aux_init (ElfW(auxv_t) *av) internal_function;
36 /* Initialization which is normally done by the dynamic linker. */
37 extern void _dl_non_dynamic_init (void) internal_function;
39 /* We can assume that the kernel always provides the AT_UID, AT_EUID,
40 AT_GID, and AT_EGID values in the auxiliary vector from 2.4.0 or so on. */
41 #if __ASSUME_AT_XID
42 # define HAVE_AUX_XID
43 #endif
45 /* We can assume that the kernel always provides the AT_SECURE value
46 in the auxiliary vector from 2.5.74 or so on. */
47 #if __ASSUME_AT_SECURE
48 # define HAVE_AUX_SECURE
49 #endif
51 /* Starting with one of the 2.4.0 pre-releases the Linux kernel passes
52 up the page size information. */
53 #if __ASSUME_AT_PAGESIZE
54 # define HAVE_AUX_PAGESIZE
55 #endif
57 /* Accept binaries which identify the binary as using Linux extensions. */
58 #define VALID_ELF_HEADER(hdr,exp,size) (memcmp (hdr, exp, size) == 0 \
59 || memcmp (hdr, expected2, size) == 0)
60 #define VALID_ELF_OSABI(osabi) (osabi == ELFOSABI_SYSV \
61 || osabi == ELFOSABI_LINUX)
62 #define VALID_ELF_ABIVERSION(osabi,ver) \
63 (ver == 0 || (osabi == ELFOSABI_LINUX && ver < LIBC_ABI_MAX))
64 #define MORE_ELF_HEADER_DATA \
65 static const unsigned char expected2[EI_PAD] = \
66 { \
67 [EI_MAG0] = ELFMAG0, \
68 [EI_MAG1] = ELFMAG1, \
69 [EI_MAG2] = ELFMAG2, \
70 [EI_MAG3] = ELFMAG3, \
71 [EI_CLASS] = ELFW(CLASS), \
72 [EI_DATA] = byteorder, \
73 [EI_VERSION] = EV_CURRENT, \
74 [EI_OSABI] = ELFOSABI_LINUX \
77 #endif /* ldsodefs.h */