• Dmitry Safonov's avatar
    pie/restorer: add vdso_fill_symtable_compat for 32-bit vdso · f52ea57d
    Dmitry Safonov authored
    While restorering compatible application on x86-64, we need
    to parse 32-bit vDSO. By that reason I need _three_ compiled
    object versions for util-vdso:
    - for native parasite it's util-vdso.o
    - for compatible parasite it's compat/util-vdso.o
    - for restorer it's util-vdso.o and util-vdso-elf32.o
    
    Note, that I can't link compat/util-vdso.o to restorer, as it's
    i386 ELF which ld can't link to x86_64 ELF file.
    
    TODO: maybe I'll need to refactor and introduce generic
    CONFIG_COMPAT instead of those defined(CONFIG_X86_32).
    
    Fixes:
      pie: 27504: vdso: Mapping compatible vDSO at 0x25000
      pie: 27504: Remap 0x7f3de3efa000->0x8048000 len 0x1000
      ...
      pie: 27504: vdso: Parsing at 0xf7776000 0xf7778000
      pie: 27504: Error (pie/util-vdso.c:87): vdso: Elf header magic mismatch
      pie: 27504: Error (pie/restorer.c:1540): Restorer fail 27504
      (00.029188) Error (cr-restore.c:988): 27504 exited, status=1
      (00.033072) Error (cr-restore.c:1870): Restoring FAILED.
    
    Cc: Cyrill Gorcunov <gorcunov@openvz.org>
    Signed-off-by: 's avatarDmitry Safonov <dsafonov@virtuozzo.com>
    Signed-off-by: 's avatarPavel Emelyanov <xemul@virtuozzo.com>
    Signed-off-by: 's avatarAndrei Vagin <avagin@virtuozzo.com>
    f52ea57d
util-vdso-elf32.c 11 Bytes