@ -40,15 +40,6 @@
# define TARGET_ARCH_HAS_SIGTRAMP_PAGE 0
# endif
typedef struct {
const uint8_t * image ;
const uint32_t * relocs ;
unsigned image_size ;
unsigned reloc_count ;
unsigned sigreturn_ofs ;
unsigned rt_sigreturn_ofs ;
} VdsoImageInfo ;
# define ELF_OSABI ELFOSABI_SYSV
/* from personality.h */
@ -191,23 +182,6 @@ typedef abi_int target_pid_t;
# define ELF_EXEC_PAGESIZE 4096
# if TARGET_BIG_ENDIAN
# include "elf.h"
# include "vdso-be8.c.inc"
# include "vdso-be32.c.inc"
static const VdsoImageInfo * vdso_image_info ( uint32_t elf_flags )
{
return ( EF_ARM_EABI_VERSION ( elf_flags ) > = EF_ARM_EABI_VER4
& & ( elf_flags & EF_ARM_BE8 )
? & vdso_be8_image_info
: & vdso_be32_image_info ) ;
}
# define vdso_image_info vdso_image_info
# else
# define VDSO_HEADER "vdso-le.c.inc"
# endif
# else
/* 64 bit ARM definitions */
@ -1973,14 +1947,17 @@ static void load_elf_interp(const char *filename, struct image_info *info,
load_elf_image ( filename , & src , info , & ehdr , NULL ) ;
}
# ifndef vdso_image_info
# ifndef HAVE_VDSO_IMAGE_INFO
const VdsoImageInfo * get_vdso_image_info ( uint32_t elf_flags )
{
# ifdef VDSO_HEADER
# include VDSO_HEADER
# define vdso_image_info(flags) &vdso_image_info
return & vdso_image_info ;
# else
# define vdso_image_info(flags) NULL
# endif /* VDSO_HEADER */
# endif /* vdso_image_info */
return NULL ;
# endif
}
# endif /* HAVE_VDSO_IMAGE_INFO */
static void load_elf_vdso ( struct image_info * info , const VdsoImageInfo * vdso )
{
@ -2311,7 +2288,7 @@ int load_elf_binary(struct linux_binprm *bprm, struct image_info *info)
* Load a vdso if available , which will amongst other things contain the
* signal trampolines . Otherwise , allocate a separate page for them .
*/
const VdsoImageInfo * vdso = vdso_image_info ( info - > elf_flags ) ;
const VdsoImageInfo * vdso = get_ vdso_image_info( info - > elf_flags ) ;
if ( vdso ) {
load_elf_vdso ( & vdso_info , vdso ) ;
info - > vdso = vdso_info . load_bias ;