aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorCaroline Tice <cmtice@google.com>2016-03-25 16:19:29 -0700
committerCaroline Tice <cmtice@google.com>2016-03-25 16:19:29 -0700
commit41c11c2a743ea85be67d0840dbbb6d5125bb8798 (patch)
tree4f693e051b138f50cdfad035b29b01f4b6afbe07
parentac16f08b86701ecf70e32f4ead8db63d92603808 (diff)
downloadtoolchain_gcc-41c11c2a743ea85be67d0840dbbb6d5125bb8798.tar.gz
toolchain_gcc-41c11c2a743ea85be67d0840dbbb6d5125bb8798.tar.bz2
toolchain_gcc-41c11c2a743ea85be67d0840dbbb6d5125bb8798.zip
Add top-level flag, --enable-libatomic-ifuncs=[yes/no]
This CL adds a top-level configure flag, --enable-libatomic-ifuncs. IF this is set to 'no', then libatomic will not be configured/built to use IFUNC. This is to fix https://buganizer.corp.google.com/issues/22699878 Change-Id: I76741fe854fc9c32a230b67c72920adfb00473ee
-rwxr-xr-xbuild-gcc.sh1
-rwxr-xr-xgcc-4.9/configure19
-rw-r--r--gcc-4.9/configure.ac12
-rw-r--r--gcc-4.9/libatomic/acinclude.m45
4 files changed, 37 insertions, 0 deletions
diff --git a/build-gcc.sh b/build-gcc.sh
index 707ff272f..4893461cf 100755
--- a/build-gcc.sh
+++ b/build-gcc.sh
@@ -389,6 +389,7 @@ fi
cd $BUILD_OUT && run \
$BUILD_SRCDIR/configure --target=$ABI_CONFIGURE_TARGET \
--enable-bionic-libs \
+ --enable-libatomic-ifuncs=no \
--enable-initfini-array \
--host=$ABI_CONFIGURE_HOST \
--build=$ABI_CONFIGURE_BUILD \
diff --git a/gcc-4.9/configure b/gcc-4.9/configure
index b209bc951..186f52fec 100755
--- a/gcc-4.9/configure
+++ b/gcc-4.9/configure
@@ -785,6 +785,7 @@ with_debug_prefix_map
with_build_config
enable_vtable_verify
enable_bionic_libs
+enable_libatomic_ifuncs
enable_serial_configure
with_build_time_tools
enable_maintainer_mode
@@ -1485,6 +1486,7 @@ Optional Features:
Objective-C runtime
--enable-vtable-verify Enable vtable verification feature
--enable-bionic-libs Use bionic libstdc++ libraries
+ --enable-bionic-libs Enable/disable IFUNCs in libatomic library
--enable-serial-[{host,target,build}-]configure
force sequential configuration of sub-packages for
the host, target or build machine, or all
@@ -7240,6 +7242,23 @@ fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_bionic_libs" >&5
$as_echo "$enable_bionic_libs" >&6; }
+# Use same top-level configure hooks in libatomic.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for --enable-libatomic-ifuncs" >&5
+$as_echo_n "checking for --enable-libatomic-ifuncs... " >&6; }
+# Check whether --enable-libatomic-ifuncs was given.
+if test "${enable_libatomic_ifuncs+set}" = set; then :
+ enableval=$enable_libatomic_ifuncs; case "$enableval" in
+ yes) enable_libatomic_ifuncs=yes ;;
+ no) enable_libatomic_ifuncs=no ;;
+ *) enable_libatomic_ifuncs=yes;;
+ esac
+else
+ enable_libatomic_ifuncs=yes
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_libatomic_ifuncs" >&5
+$as_echo "$enable_libatomic_ifuncs" >&6; }
+
# Record target_configdirs and the configure arguments for target and
# build configuration in Makefile.
target_configdirs=`echo "${target_configdirs}" | sed -e 's/target-//g'`
diff --git a/gcc-4.9/configure.ac b/gcc-4.9/configure.ac
index e04fdfe6e..b78629a75 100644
--- a/gcc-4.9/configure.ac
+++ b/gcc-4.9/configure.ac
@@ -2556,6 +2556,18 @@ AC_ARG_ENABLE(bionic-libs,
[enable_bionic_libs=no])
AC_MSG_RESULT($enable_bionic_libs)
+# Use same top-level configure hooks in libatomic.
+AC_MSG_CHECKING([for --enable-libatomic-ifuncs])
+AC_ARG_ENABLE(libatomic-ifuncs,
+[ --enable-bionic-libs Enable/disable IFUNCs in libatomic library ],
+[case "$enableval" in
+ yes) enable_libatomic_ifuncs=yes ;;
+ no) enable_libatomic_ifuncs=no ;;
+ *) enable_libatomic_ifuncs=yes;;
+ esac],
+[enable_libatomic_ifuncs=yes])
+AC_MSG_RESULT($enable_libatomic_ifuncs)
+
# Record target_configdirs and the configure arguments for target and
# build configuration in Makefile.
target_configdirs=`echo "${target_configdirs}" | sed -e 's/target-//g'`
diff --git a/gcc-4.9/libatomic/acinclude.m4 b/gcc-4.9/libatomic/acinclude.m4
index a86e52b4f..34db650be 100644
--- a/gcc-4.9/libatomic/acinclude.m4
+++ b/gcc-4.9/libatomic/acinclude.m4
@@ -197,6 +197,11 @@ AC_DEFUN([LIBAT_CHECK_IFUNC], [
void *foo_sel(void) { return foo_alt; }
int foo(void) __attribute__((ifunc("foo_sel")));],
[return foo();], libat_cv_have_ifunc=yes, libat_cv_have_ifunc=no)])
+
+ if test $enable_libatomic_ifuncs = no; then
+ libat_cv_have_ifunc=no
+ fi
+
LIBAT_DEFINE_YESNO([HAVE_IFUNC], [$libat_cv_have_ifunc],
[Define to 1 if the target supports __attribute__((ifunc(...))).])
])