blob: 1ee849d3f5aa5f311ec69d5d691a522e94c955bd [file] [log] [blame]
#ifndef _ROS_LDSODEFS_H
#define _ROS_LDSODEFS_H
#define HAVE_AUX_VECTOR
/* More recent versions of binutils mark SysV objects as Linux objects
* if they use certain GNU extensions (which we do). We could solve
* this problem directly by declaring and using ELFOSABI_AKAROS,
* but that requires changes to all of GCC, BFD, GAS and GLIBC.
* Instead, we take the easy way out: accept all SysV and Linux objects.
* Most importantly, both Kevin and Andrew concur on this matter. */
#define VALID_ELF_HEADER(hdr, exp, size) \
({ \
static const unsigned char ros_expected[EI_NIDENT] = \
{ \
[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 \
}; \
!memcmp(hdr, ros_expected, size) || !memcmp(hdr, exp, size); \
})
#define VALID_ELF_OSABI(osabi) \
((osabi) == ELFOSABI_SYSV || (osabi) == ELFOSABI_LINUX)
#define VALID_ELF_ABIVERSION(osabi,ver) (ver == 0)
#include_next <ldsodefs.h>
#endif