]> xenbits.xensource.com Git - unikraft/unikraft.git/commitdiff
lib/nolibc: Add -ffreestanding flag
authorRazvan Deaconescu <razvand@unikraft.io>
Fri, 3 Feb 2023 11:41:38 +0000 (13:41 +0200)
committerUnikraft <monkey@unikraft.io>
Fri, 12 May 2023 12:25:07 +0000 (12:25 +0000)
GCC optimizes the use of `memcmp()` if the `-ffreestanding` flag is
missing. In the current configuration, the flag is missing for GCC <= 9.
The resulting optimization causes in an infinite loop for `lib/nolibc`.

This commit fixes the issue by adding the `-ffreestanding` flag for
`lib/nolibc`, irrespective of the GCC version.

GitHub-Fixes: #728

Signed-off-by: Razvan Deaconescu <razvand@unikraft.io>
Reviewed-by: Maria Sfiraiala <maria.sfiraiala@gmail.com>
Reviewed-by: Eduard Vintilă <eduard.vintila47@gmail.com>
Reviewed-by: Marco Schlumpp <marco@unikraft.io>
Approved-by: Marc Rittinghaus <marc.rittinghaus@unikraft.io>
Tested-by: Unikraft CI <monkey@unikraft.io>
GitHub-Closes: #740

Makefile.uk
lib/nolibc/Makefile.uk

index 668dca7aae0f48d644b0bac2fa90d18e694f36ef..c8025cd54ac0346951b2e8629a1742247f3019f1 100644 (file)
@@ -91,7 +91,7 @@ M4FLAGS      += -DUK_VERSION=$(UK_VERSION).$(UK_SUBVERSION)
 COMPFLAGS-$(call gcc_version_ge,6,1)   += -fno-PIC
 LDFLAGS-$(call gcc_version_ge,6,1)     += -no-pie
 ifeq ($(call gcc_version_ge,10,0),y)
-COMPFLAGS-y += -fhosted -ffreestanding -fno-tree-loop-distribute-patterns
+COMPFLAGS-y += -fhosted -fno-tree-loop-distribute-patterns
 LIBLDFLAGS-$(CONFIG_OPTIMIZE_LTO) += -flinker-output=nolto-rel
 LDFLAGS-$(CONFIG_OPTIMIZE_LTO) += -flinker-output=nolto-rel
 endif
index 94bea8e375dc40277190fba2c3c260aa497089bf..3efeba4bf825536e92d0f7dd7e3acd075a18088b 100644 (file)
@@ -18,6 +18,8 @@ LIBNOLIBC_NO_BUILTINS         += -fno-builtin-vsscanf
 CFLAGS-$(CONFIG_LIBNOLIBC)             += $(LIBNOLIBC_NO_BUILTINS)
 CXXFLAGS-$(CONFIG_LIBNOLIBC)           += $(LIBNOLIBC_NO_BUILTINS)
 
+LIBNOLIBC_CFLAGS-y             += -ffreestanding
+
 LIBNOLIBC_GLOBAL_INCLUDES-y     += -I$(LIBNOLIBC_BASE)/include
 LIBNOLIBC_GLOBAL_INCLUDES-y     += -I$(LIBNOLIBC_BASE)/arch/$(ARCH)
 LIBNOLIBC_GLOBAL_INCLUDES-y     += -I$(LIBNOLIBC_BASE)/musl-imported/include