44 lines
1.3 KiB
Diff
44 lines
1.3 KiB
Diff
From 0568889ee368c2bc2682aae5c69d67ac16eac675 Mon Sep 17 00:00:00 2001
|
|
From: Adrian Reber <areber@redhat.com>
|
|
Date: Tue, 18 Jan 2022 17:22:46 +0000
|
|
Subject: [PATCH] compel: fix parasite with GCC 12
|
|
|
|
Parasite creation started to fail with GCC 12:
|
|
|
|
On x86_64 with:
|
|
./compel/compel-host hgen -f criu/pie/restorer.built-in.o -o criu/pie/restorer-blob.h
|
|
Error (compel/src/lib/handle-elf-host.c:337): Unexpected undefined symbol: `strlen'. External symbol in PIE?
|
|
|
|
On aarch64 with:
|
|
ld: criu/pie/restorer.o: in function `lsm_set_label':
|
|
/drone/src/criu/pie/restorer.c:174: undefined reference to `strlen'
|
|
|
|
Line 174 is: "for (len = 0; label[len]; len++)"
|
|
|
|
Adding '-ffreestanding' to parasite compilation fixes these errors
|
|
because, according to GCC developers:
|
|
|
|
"strlen is a standard C function, so I don't see any bug in that being used
|
|
unless you do a freestanding compilation (-nostdlib isn't that)."
|
|
|
|
Signed-off-by: Adrian Reber <areber@redhat.com>
|
|
---
|
|
compel/src/main.c | 1 +
|
|
1 file changed, 1 insertion(+)
|
|
|
|
diff --git a/compel/src/main.c b/compel/src/main.c
|
|
index a9a50959f..f461ff04d 100644
|
|
--- a/compel/src/main.c
|
|
+++ b/compel/src/main.c
|
|
@@ -19,6 +19,7 @@
|
|
|
|
#define CFLAGS_DEFAULT_SET \
|
|
"-Wstrict-prototypes " \
|
|
+ "-ffreestanding " \
|
|
"-fno-stack-protector -nostdlib -fomit-frame-pointer "
|
|
|
|
#define COMPEL_CFLAGS_PIE CFLAGS_DEFAULT_SET "-fpie"
|
|
--
|
|
2.33.0
|
|
|