mirror of https://gerrit.osmocom.org/libosmocore
configure: Allow disabling workaround for TLS bug in old ARM gcc versions
Some toolchains (such as sysmobts 201705 one) containing the TLS bug on old ARM gcc versions (<7.3.0) also crash if the initial workaround found is aplied (CFLAGS="-mtls-dialect=gnu2"). In that scenario, let's provide a way to disable the workaround (to avoid "ld" crashing) and warn the user about requirement to build with -O0 to avoid runtime crashes. Related: OS#4062 Related: SYS#4628 Change-Id: I04ff8c702eabcf4f6e7b59e11aece2744267cefe
This commit is contained in:
parent
e188b8cd98
commit
afce89dac1
|
@ -123,8 +123,7 @@ AC_DEFUN([CHECK_TM_INCLUDES_TM_GMTOFF], [
|
|||
CHECK_TM_INCLUDES_TM_GMTOFF
|
||||
|
||||
dnl Check if We need to apply workaround for TLS bug on ARM platform for GCC < 7.3.0:
|
||||
CHECK_TLS_GCC_ARM_BUG
|
||||
CFLAGS="$CFLAGS $TLS_GCC_ARM_BUG_CFLAGS"
|
||||
ARG_ENABLE_DETECT_TLS_GCC_ARM_BUG
|
||||
|
||||
dnl Generate the output
|
||||
AC_CONFIG_HEADER(config.h)
|
||||
|
|
|
@ -27,3 +27,25 @@ AC_DEFUN([CHECK_TLS_GCC_ARM_BUG], [
|
|||
AC_SUBST([TLS_GCC_ARM_BUG_CFLAGS])
|
||||
AC_MSG_RESULT([$TLS_GCC_ARM_BUG_CFLAGS])
|
||||
])
|
||||
|
||||
# Allow disabling the check in order to workaround bug by letting user pass
|
||||
# CFLAGS="-O0" on toolchains that crash when "-mtls-dialect=gnu2" is used.
|
||||
# CFLAGS is updated with workaround if detection is enabled and workaround is needed.
|
||||
AC_DEFUN([ARG_ENABLE_DETECT_TLS_GCC_ARM_BUG], [
|
||||
AC_ARG_ENABLE(detect_tls_gcc_arm_bug,
|
||||
[AS_HELP_STRING(
|
||||
[--disable-detect-tls-gcc-arm-bug],
|
||||
[Disable detecting and applying workaround for TLS bug on ARM platform for GCC < 7.3.0]
|
||||
)],
|
||||
[detect_tls_gcc_arm_bug=$enableval], [detect_tls_gcc_arm_bug="yes"])
|
||||
if test x"$detect_tls_gcc_arm_bug" = x"yes"; then
|
||||
CHECK_TLS_GCC_ARM_BUG
|
||||
if test "x$TLS_GCC_ARM_BUG_CFLAGS" != "x"; then
|
||||
CFLAGS="$CFLAGS $TLS_GCC_ARM_BUG_CFLAGS"
|
||||
AC_MSG_WARN([Applying workaround for TLS bug on ARM platform for GCC < 7.3.0
|
||||
($TLS_GCC_ARM_BUG_CFLAGS). On some toolchain versions, ld may
|
||||
crash. In that case you must build with CFLAGS='-O0' and run
|
||||
./configure with --disable-detect-tls-gcc-arm-bug])
|
||||
fi
|
||||
fi
|
||||
])
|
||||
|
|
Loading…
Reference in New Issue