mirror of
https://github.com/checkpoint-restore/criu.git
synced 2026-01-23 10:16:41 +00:00
pie: relocs -- Fix compilation on ARM
Otherwise getting | parasite-syscall.c: In function ‘parasite_infect_seized’: | parasite-syscall.c:1222:5: error: ‘elf_relocs’ undeclared (first use in this function) Simply wrap the @elf_relocs_apply with macros. Reported-by: Andrey Vagin <avagin@openvz.org> Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org> Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
This commit is contained in:
parent
c7d646afb3
commit
1998fbfa87
3 changed files with 16 additions and 7 deletions
|
|
@ -2390,9 +2390,7 @@ static int remap_restorer_blob(void *addr)
|
|||
return -1;
|
||||
}
|
||||
|
||||
elf_relocs_apply(addr, addr, sizeof(restorer_blob),
|
||||
restorer_relocs, ARRAY_SIZE(restorer_relocs));
|
||||
|
||||
ELF_RELOCS_APPLY_RESTORER(addr, addr);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1218,8 +1218,7 @@ struct parasite_ctl *parasite_infect_seized(pid_t pid, struct pstree_item *item,
|
|||
pr_info("Putting parasite blob into %p->%p\n", ctl->local_map, ctl->remote_map);
|
||||
memcpy(ctl->local_map, parasite_blob, sizeof(parasite_blob));
|
||||
|
||||
elf_relocs_apply(ctl->local_map, ctl->remote_map, sizeof(parasite_blob),
|
||||
parasite_relocs, ARRAY_SIZE(parasite_relocs));
|
||||
ELF_RELOCS_APPLY_PARASITE(ctl->local_map, ctl->remote_map);
|
||||
|
||||
/* Setup the rest of a control block */
|
||||
ctl->parasite_ip = (unsigned long)parasite_sym(ctl->remote_map, __export_parasite_head_start);
|
||||
|
|
|
|||
|
|
@ -7,11 +7,23 @@
|
|||
#include "config.h"
|
||||
|
||||
#if defined(CONFIG_X86_64) || defined(CONFIG_X86_32) || defined(CONFIG_PPC64)
|
||||
|
||||
extern __maybe_unused void elf_relocs_apply(void *mem, void *vbase, size_t size,
|
||||
elf_reloc_t *elf_relocs, size_t nr_relocs);
|
||||
#define PIE_SIZE(__blob_name) (round_up(sizeof(__blob_name) + nr_gotpcrel * sizeof(long), PAGE_SIZE))
|
||||
extern __maybe_unused void elf_relocs_apply(void *mem, void *vbase, size_t size, elf_reloc_t *elf_relocs, size_t nr_relocs);
|
||||
#define ELF_RELOCS_APPLY_PARASITE(__mem, __vbase) \
|
||||
elf_relocs_apply(__mem, __vbase, sizeof(parasite_blob), \
|
||||
parasite_relocs, ARRAY_SIZE(parasite_relocs))
|
||||
#define ELF_RELOCS_APPLY_RESTORER(__mem, __vbase) \
|
||||
elf_relocs_apply(__mem, __vbase, sizeof(restorer_blob), \
|
||||
restorer_relocs, ARRAY_SIZE(restorer_relocs))
|
||||
|
||||
#else
|
||||
|
||||
#define PIE_SIZE(__blob_name) (round_up(sizeof(__blob_name), PAGE_SIZE))
|
||||
static always_inline void elf_relocs_apply(void *mem, void *vbase, size_t size, elf_reloc_t *elf_relocs, size_t nr_relocs) { }
|
||||
#define ELF_RELOCS_APPLY_PARASITE(__mem, __vbase)
|
||||
#define ELF_RELOCS_APPLY_RESTORER(__mem, __vbase)
|
||||
|
||||
#endif
|
||||
|
||||
#endif /* __PIE_RELOCS_H__ */
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue