mirror of
https://sourceware.org/git/glibc.git
synced 2024-12-03 18:31:04 +00:00
Use check tests with trampolines iff compiler supports it
This commit is contained in:
parent
8eb85e1f8a
commit
6272e41605
33
configure
vendored
33
configure
vendored
@ -7454,6 +7454,39 @@ if test $libc_cv_cc_loop_to_function = yes; then
|
||||
fi
|
||||
|
||||
|
||||
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC has support for trampolines" >&5
|
||||
printf %s "checking if $CC has support for trampolines... " >&6; }
|
||||
if test ${libc_cv_cc_trampoline+y}
|
||||
then :
|
||||
printf %s "(cached) " >&6
|
||||
else $as_nop
|
||||
cat > conftest.c <<EOF
|
||||
void bar (void (*callback) (void));
|
||||
int foo (void)
|
||||
{
|
||||
int var = 0;
|
||||
void callback (void) { var = 1; }
|
||||
bar (callback);
|
||||
return var;
|
||||
}
|
||||
EOF
|
||||
libc_cv_cc_trampoline=no
|
||||
if { ac_try='${CC-cc} $CFLAGS $CPPFLAGS -Werror -c conftest.c'
|
||||
{ { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
|
||||
(eval $ac_try) 2>&5
|
||||
ac_status=$?
|
||||
printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
|
||||
test $ac_status = 0; }; }
|
||||
then
|
||||
libc_cv_cc_trampoline=yes
|
||||
fi
|
||||
rm -f conftest*
|
||||
fi
|
||||
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $libc_cv_cc_trampoline" >&5
|
||||
printf "%s\n" "$libc_cv_cc_trampoline" >&6; }
|
||||
config_vars="$config_vars
|
||||
have-cc-trampoline = $libc_cv_cc_trampoline"
|
||||
|
||||
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for libgd" >&5
|
||||
printf %s "checking for libgd... " >&6; }
|
||||
if test "$with_gd" != "no"; then
|
||||
|
20
configure.ac
20
configure.ac
@ -1526,6 +1526,26 @@ if test $libc_cv_cc_loop_to_function = yes; then
|
||||
fi
|
||||
AC_SUBST(libc_cv_cc_loop_to_function)
|
||||
|
||||
AC_CACHE_CHECK(if $CC has support for trampolines, libc_cv_cc_trampoline, [dnl
|
||||
cat > conftest.c <<EOF
|
||||
void bar (void (*callback) (void));
|
||||
int foo (void)
|
||||
{
|
||||
int var = 0;
|
||||
void callback (void) { var = 1; }
|
||||
bar (callback);
|
||||
return var;
|
||||
}
|
||||
EOF
|
||||
libc_cv_cc_trampoline=no
|
||||
if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS -Werror -c conftest.c])
|
||||
then
|
||||
libc_cv_cc_trampoline=yes
|
||||
fi
|
||||
rm -f conftest*])
|
||||
LIBC_CONFIG_VAR([have-cc-trampoline],
|
||||
[$libc_cv_cc_trampoline])
|
||||
|
||||
dnl Check whether we have the gd library available.
|
||||
AC_MSG_CHECKING(for libgd)
|
||||
if test "$with_gd" != "no"; then
|
||||
|
10
elf/Makefile
10
elf/Makefile
@ -537,7 +537,7 @@ endif
|
||||
selinux-enabled := $(shell cat /selinux/enforce 2> /dev/null)
|
||||
|
||||
ifneq ($(selinux-enabled),1)
|
||||
tests-execstack-yes = \
|
||||
tests-execstack-yesyes = \
|
||||
tst-execstack \
|
||||
tst-execstack-needed \
|
||||
tst-execstack-prog \
|
||||
@ -628,7 +628,7 @@ $(objpfx)tst-rtld-does-not-exist.out: tst-rtld-does-not-exist.sh $(objpfx)ld.so
|
||||
$(SHELL) $< $(objpfx)ld.so > $@; \
|
||||
$(evaluate-test)
|
||||
|
||||
tests += $(tests-execstack-$(have-z-execstack))
|
||||
tests += $(tests-execstack-$(have-z-execstack)$(have-cc-trampoline))
|
||||
ifeq ($(run-built-tests),yes)
|
||||
tests-special += \
|
||||
$(objpfx)noload-mem.out \
|
||||
@ -992,7 +992,7 @@ modules-names-cxx = \
|
||||
|
||||
modules-names += \
|
||||
$(if $(CXX),$(modules-names-cxx)) \
|
||||
$(modules-execstack-$(have-z-execstack)) \
|
||||
$(modules-execstack-$(have-z-execstack)$(have-cc-trampoline)) \
|
||||
$(tlsmod17a-modules) \
|
||||
$(tlsmod18a-modules) \
|
||||
$(tst-tls-many-dynamic-modules) \
|
||||
@ -1041,7 +1041,7 @@ tests-pie += vismain
|
||||
CFLAGS-vismain.c += $(PIE-ccflag)
|
||||
endif
|
||||
endif
|
||||
modules-execstack-yes = tst-execstack-mod
|
||||
modules-execstack-yesyes = tst-execstack-mod
|
||||
extra-test-objs += $(addsuffix .os,$(strip $(modules-names)))
|
||||
|
||||
# filtmod1.so, tst-big-note-lib.so, tst-ro-dynamic-mod.so have special
|
||||
@ -1833,7 +1833,7 @@ $(objpfx)unload8.out: $(objpfx)unload8mod1.so $(objpfx)unload8mod1x.so
|
||||
|
||||
$(objpfx)tst-tls9-static.out: $(objpfx)tst-tlsmod5.so $(objpfx)tst-tlsmod6.so
|
||||
|
||||
ifeq ($(have-z-execstack),yes)
|
||||
ifeq ($(have-z-execstack)$(have-cc-trampoline),yesyes)
|
||||
$(objpfx)tst-execstack.out: $(objpfx)tst-execstack-mod.so
|
||||
CPPFLAGS-tst-execstack.c += -DUSE_PTHREADS=0
|
||||
LDFLAGS-tst-execstack = -Wl,-z,noexecstack
|
||||
|
@ -466,7 +466,7 @@ tests-internal += \
|
||||
tst-tls3-malloc \
|
||||
tst-tls5 \
|
||||
# tests-internal
|
||||
ifeq ($(have-z-execstack),yes)
|
||||
ifeq ($(have-z-execstack)$(have-cc-trampoline),yesyes)
|
||||
tests += tst-execstack-threads
|
||||
endif
|
||||
endif
|
||||
@ -475,7 +475,6 @@ modules-names = \
|
||||
tst-audit-threads-mod1 \
|
||||
tst-audit-threads-mod2 \
|
||||
tst-compat-forwarder-mod \
|
||||
tst-execstack-threads-mod \
|
||||
tst-stack4mod \
|
||||
tst-tls3mod \
|
||||
tst-tls5mod \
|
||||
@ -486,6 +485,11 @@ modules-names = \
|
||||
tst-tls5mode \
|
||||
tst-tls5modf \
|
||||
# modules-names
|
||||
ifeq ($(have-z-execstack)$(have-cc-trampoline),yesyes)
|
||||
modules-names += \
|
||||
tst-execstack-threads-mod \
|
||||
# modules-names
|
||||
endif
|
||||
extra-test-objs += \
|
||||
$(addsuffix .os,$(strip $(modules-names))) \
|
||||
tst-cleanup4aux.o \
|
||||
|
Loading…
Reference in New Issue
Block a user