1
0
mirror of https://sourceware.org/git/glibc.git synced 2025-08-01 10:06:57 +03:00

* elf/dl-load.c (open_verify): In case VALID_ELF_HEADER is

defined, allow additional data to be added using the optional
	MORE_ELF_HEADER_DATA macro.
	* sysdeps/unix/sysv/linux/ldsodefs.h (VALID_ELF_HEADER,
	VALID_ELF_OSABI, VALID_ELF_ABIVERSION, MORE_ELF_HEADER_DATA): Define.
This commit is contained in:
Ulrich Drepper
2009-02-10 17:21:29 +00:00
parent 6c03cd11e9
commit 40e2fc8b70
3 changed files with 32 additions and 2 deletions

View File

@ -1,5 +1,5 @@
/* Run-time dynamic linker data structures for loaded ELF shared objects.
Copyright (C) 2001, 2002, 2003, 2006 Free Software Foundation, Inc.
Copyright (C) 2001, 2002, 2003, 2006, 2009 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
@ -53,4 +53,24 @@ extern void _dl_non_dynamic_init (void) internal_function;
# define HAVE_AUX_PAGESIZE
#endif
/* Accept binaries which identify the binary as using Linux extensions. */
#define VALID_ELF_HEADER(hdr,exp,size) (memcmp (hdr, exp, size) == 0 \
|| memcmp (hdr, expected2, size) == 0)
#define VALID_ELF_OSABI(osabi) (osabi == ELFOSABI_SYSV \
|| osabi == ELFOSABI_LINUX)
#define VALID_ELF_ABIVERSION(ver) (ver == 0)
#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, \
[EI_ABIVERSION] = 0 \
}
#endif /* ldsodefs.h */