]> xenbits.xensource.com Git - unikraft/libs/compiler-rt.git/commitdiff
Split off functionality that depends on libunwind
authorAndrei Tatar <andrei@unikraft.io>
Wed, 24 May 2023 13:45:44 +0000 (16:45 +0300)
committerUnikraft <monkey@unikraft.io>
Mon, 7 Aug 2023 16:47:41 +0000 (16:47 +0000)
Previously lib-compiler-rt depended on libunwind as it pulled in
<unwind.h>; this dependency however is isolated in gcc_personality_v0.c.
This change makes gcc personality an optional part of lib-compiler-rt,
allowing it to be built without an entire supporting C++ runtime.

Signed-off-by: Andrei Tatar <andrei@unikraft.io>
Reviewed-by: Stefan Jumarea <stefanjumarea02@gmail.com>
Reviewed-by: Eduard Vintilă <eduard.vintila47@gmail.com>
Approved-by: Razvan Deaconescu <razvand@unikraft.io>
Tested-by: Unikraft CI <monkey@unikraft.io>
GitHub-Closes: #14

Config.uk
Makefile.uk

index 2970f8bb465e66dcaf77728215469bb4398577f0..6d67e80ec5e18e5957ced5a135ce745157e5f787 100644 (file)
--- a/Config.uk
+++ b/Config.uk
@@ -2,7 +2,6 @@ menuconfig LIBCOMPILER_RT
     bool "compiler-rt - runtime support"
     select LIBPOSIX_SYSINFO
     imply LIBUKMMAP
-    select LIBUNWIND
     default n
 
 if LIBCOMPILER_RT
@@ -10,4 +9,10 @@ if LIBCOMPILER_RT
     bool "Implementation of an atomics library"
     select CXX_THREADS
     default N
+
+    config LIBCOMPILER_RT_GCCPERSONALITY
+    bool "Implementation of GCC personality"
+    depends on LIBUNWIND
+    default N
+
 endif
index 8be4857d23dd7625865bf3e4a0fa578cfa0bf1e7..f8e401653fc5494477d8ae71aa5420904364923a 100644 (file)
@@ -38,7 +38,7 @@
 ################################################################################
 $(eval $(call addlib_s,libcompiler_rt,$(CONFIG_LIBCOMPILER_RT)))
 
-ifeq ($(CONFIG_LIBCOMPILER_RT),y)
+ifeq ($(CONFIG_LIBCOMPILER_RT_GCCPERSONALITY),y)
 ifneq ($(CONFIG_LIBUNWIND),y)
 $(error Require libunwind)
 endif
@@ -177,7 +177,6 @@ LIBCOMPILER_RT_SRCS-y += $(LIBCOMPILER_RT_SRC)/lib/builtins/floatuntisf.c
 LIBCOMPILER_RT_SRCS-y += $(LIBCOMPILER_RT_SRC)/lib/builtins/floatuntitf.c
 LIBCOMPILER_RT_SRCS-y += $(LIBCOMPILER_RT_SRC)/lib/builtins/floatuntixf.c
 LIBCOMPILER_RT_SRCS-y += $(LIBCOMPILER_RT_SRC)/lib/builtins/fp_mode.c
-LIBCOMPILER_RT_SRCS-y += $(LIBCOMPILER_RT_SRC)/lib/builtins/gcc_personality_v0.c
 LIBCOMPILER_RT_SRCS-y += $(LIBCOMPILER_RT_SRC)/lib/builtins/int_util.c
 LIBCOMPILER_RT_SRCS-y += $(LIBCOMPILER_RT_SRC)/lib/builtins/lshrdi3.c
 LIBCOMPILER_RT_SRCS-y += $(LIBCOMPILER_RT_SRC)/lib/builtins/lshrti3.c
@@ -246,6 +245,8 @@ LIBCOMPILER_RT_SRCS-$(CONFIG_ARCH_X86_64) += $(LIBCOMPILER_RT_SRC)/lib/builtins/
 LIBCOMPILER_RT_SRCS-$(CONFIG_ARCH_X86_64) += $(LIBCOMPILER_RT_SRC)/lib/builtins/x86_64/chkstk2.S
 LIBCOMPILER_RT_SRCS-$(CONFIG_ARCH_X86_64) += $(LIBCOMPILER_RT_SRC)/lib/builtins/x86_64/chkstk.S
 
+LIBCOMPILER_RT_SRCS-$(CONFIG_LIBCOMPILER_RT_GCCPERSONALITY) += $(LIBCOMPILER_RT_SRC)/lib/builtins/gcc_personality_v0.c
+
 LIBCOMPILER_RT_SRCS-$(CONFIG_LIBCOMPILER_RT_ATOMIC) += $(LIBCOMPILER_RT_SRC)/lib/builtins/atomic.c
 LIBCOMPILER_RT_SRCS-$(CONFIG_LIBCOMPILER_RT_ATOMIC) += $(LIBCOMPILER_RT_SRC)/lib/builtins/atomic_flag_clear.c
 LIBCOMPILER_RT_SRCS-$(CONFIG_LIBCOMPILER_RT_ATOMIC) += $(LIBCOMPILER_RT_SRC)/lib/builtins/atomic_flag_clear_explicit.c