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>
This commit is contained in:
Chris Packham 2021-06-20 11:34:25 +12:00
parent 5ab29fbf3e
commit 96d8a0588f
2 changed files with 18 additions and 11 deletions

View File

@ -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"

View File

@ -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}")