mirror of
https://github.com/checkpoint-restore/criu
synced 2025-08-27 20:37:57 +00:00
The objective is to only do parasite code linking once -- when we link parasite objects with compel plugin(s). So, let's use ar (rather than ld) here. This way we'll have a single ld invocation with the proper flags (from compel ldflags) etc. There are two tricks in doing it: 1. The order of objects while linking is important. Therefore, compel plugins should be the last to add to ld command line. 2. Somehow ld doesn't want to include parasite-head.o in the output (probably because no one else references it), so we have to force it in with the modification to our linker scripts. NB: compel makefiles are still a big mess, but I'll get there. Acked-by: Cyrill Gorcunov <gorcunov@openvz.org> Signed-off-by: Kir Kolyshkin <kir@openvz.org> Signed-off-by: Andrei Vagin <avagin@virtuozzo.com>
37 lines
602 B
ArmAsm
37 lines
602 B
ArmAsm
OUTPUT_ARCH(arm)
|
|
EXTERN(__export_parasite_head_start)
|
|
|
|
SECTIONS
|
|
{
|
|
.crblob 0x0 : {
|
|
*(.head.text)
|
|
ASSERT(DEFINED(__export_parasite_head_start),
|
|
"Symbol __export_parasite_head_start is missing");
|
|
*(.text*)
|
|
. = ALIGN(32);
|
|
*(.data*)
|
|
. = ALIGN(32);
|
|
*(.rodata*)
|
|
. = ALIGN(32);
|
|
*(.bss*)
|
|
. = ALIGN(32);
|
|
*(.got*)
|
|
. = ALIGN(32);
|
|
*(.toc*)
|
|
. = ALIGN(32);
|
|
} =0x00000000,
|
|
|
|
/DISCARD/ : {
|
|
*(.debug*)
|
|
*(.comment*)
|
|
*(.note*)
|
|
*(.group*)
|
|
*(.eh_frame*)
|
|
*(*)
|
|
}
|
|
|
|
/* Parasite args should have 4 bytes align, as we have futex inside. */
|
|
. = ALIGN(4);
|
|
__export_parasite_args = .;
|
|
}
|