summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Packham <judge.packham@gmail.com>2021-06-19 23:34:25 (GMT)
committerChris Packham <judge.packham@gmail.com>2021-06-19 23:37:00 (GMT)
commit96d8a0588f8fedf881d5acd3c3ad0c3f4610c34b (patch)
treef38f9e471c9dc7e12f2fb178a59f277a3699c645
parent5ab29fbf3e4e4dbd71ea9d01d15f6a575bd71562 (diff)
gcc: Make CC_GCC_TM_CLONE_REGISTRY tristate
Explicitly passing --disable-tm-clone-registry causes gcc to create a crtbegin.o with a zero-sized .init_array/.fini_array. This in turn causes ld to complain. Make CC_GCC_TM_CLONE_REGISTRY a tristate so if it's not explicitly enabled we can let ./configure decide. Fixes #1531 Fixes: 1e21a302 ("gcc: Add CT_CC_GCC_TM_CLONE_REGISTRY config") Signed-off-by: Chris Packham <judge.packham@gmail.com>
-rw-r--r--config/cc/gcc.in9
-rw-r--r--scripts/build/cc/gcc.sh20
2 files changed, 18 insertions, 11 deletions
diff --git a/config/cc/gcc.in b/config/cc/gcc.in
index 8180b2a..4d0a3ee 100644
--- a/config/cc/gcc.in
+++ b/config/cc/gcc.in
@@ -280,12 +280,19 @@ config CC_CXA_ATEXIT
you might want to try disabling this option.
config CC_GCC_TM_CLONE_REGISTRY
- bool
+ tristate
prompt "Use TM clone registry"
depends on GCC_10_or_later
+ default m
help
Enable GCC transactional memory clone registry in libgcc.
+ Option | tm-clone-registry | Associated ./configure switch
+ ---------+--------------------+--------------------------------
+ Y | forcibly used | --enable-tm-clone-registry
+ M | auto | (none, ./configure decides)
+ N | forcibly not used | --disable-tm-clone-registry
+
config CC_GCC_DISABLE_PCH
bool
prompt "Do not build PCH"
diff --git a/scripts/build/cc/gcc.sh b/scripts/build/cc/gcc.sh
index 8aa7eeb..e39029d 100644
--- a/scripts/build/cc/gcc.sh
+++ b/scripts/build/cc/gcc.sh
@@ -397,11 +397,11 @@ do_gcc_core_backend() {
extra_config+=("--disable-__cxa_atexit")
fi
- if [ "${CT_CC_GCC_TM_CLONE_REGISTRY}" = "y" ]; then
- extra_config+=("--enable-tm-clone-registry")
- else
- extra_config+=("--disable-tm-clone-registry")
- fi
+ case "${CT_CC_GCC_TM_CLONE_REGISTRY}" in
+ y) extra_config+=("--enable-tm-clone-registry");;
+ m) ;;
+ "") extra_config+=("--disable-tm-clone-registry");;
+ esac
if [ -n "${CT_CC_GCC_ENABLE_CXX_FLAGS}" \
-a "${mode}" = "baremetal" ]; then
@@ -1021,11 +1021,11 @@ do_gcc_backend() {
extra_config+=("--disable-__cxa_atexit")
fi
- if [ "${CT_CC_GCC_TM_CLONE_REGISTRY}" = "y" ]; then
- extra_config+=("--enable-tm-clone-registry")
- else
- extra_config+=("--disable-tm-clone-registry")
- fi
+ case "${CT_CC_GCC_TM_CLONE_REGISTRY}" in
+ y) extra_config+=("--enable-tm-clone-registry");;
+ m) ;;
+ "") extra_config+=("--disable-tm-clone-registry");;
+ esac
if [ -n "${CT_CC_GCC_ENABLE_CXX_FLAGS}" ]; then
extra_config+=("--enable-cxx-flags=${CT_CC_GCC_ENABLE_CXX_FLAGS}")