Author: florian
Date: Fri Oct 4 11:35:50 2013
New Revision: 13615
Log:
Add a few feature tests to configure.ac because clang does not
understand the following:
- nested functions
- -gstabs option
- loopnel instruction
- addr32 in asm statements
- 'p' constraint in asm statements
Adapt Makefiles accordingly.
Modified:
trunk/configure.ac
trunk/memcheck/tests/Makefile.am
trunk/memcheck/tests/amd64/Makefile.am
trunk/none/tests/Makefile.am
trunk/none/tests/amd64/Makefile.am
Modified: trunk/configure.ac
==============================================================================
--- trunk/configure.ac (original)
+++ trunk/configure.ac Fri Oct 4 11:35:50 2013
@@ -1715,6 +1715,59 @@
CFLAGS=$safe_CFLAGS
+# does this compiler support -gstabs ?
+
+AC_MSG_CHECKING([if gcc accepts -gstabs])
+
+safe_CFLAGS=$CFLAGS
+CFLAGS="-gstabs"
+AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[
+ return 0;
+]])], [
+ac_have_gstabs=yes
+AC_MSG_RESULT([yes])
+], [
+ac_have_gstabs=no
+AC_MSG_RESULT([no])
+])
+CFLAGS=$safe_CFLAGS
+AM_CONDITIONAL([HAVE_GSTABS], [test x$ac_have_gstabs = xyes])
+
+
+# does this compiler support nested functions ?
+
+AC_MSG_CHECKING([if gcc accepts nested functions])
+
+AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[
+ int foo() { return 1; }
+ return foo();
+]])], [
+ac_have_nested_functions=yes
+AC_MSG_RESULT([yes])
+], [
+ac_have_nested_functions=no
+AC_MSG_RESULT([no])
+])
+AM_CONDITIONAL([HAVE_NESTED_FUNCTIONS], [test x$ac_have_nested_functions = xyes])
+
+
+# does this compiler support the 'p' constraint in ASM statements ?
+
+AC_MSG_CHECKING([if gcc accepts the 'p' constraint in asm statements])
+
+AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[
+ char *p;
+ __asm__ __volatile__ ("movdqa (%0),%%xmm6\n" : "=p" (p));
+]])], [
+ac_have_asm_constraint_p=yes
+AC_MSG_RESULT([yes])
+], [
+ac_have_asm_constraint_p=no
+AC_MSG_RESULT([no])
+])
+AM_CONDITIONAL([HAVE_ASM_CONSTRAINT_P], [test x$ac_have_asm_constraint_p = xyes])
+
+
# We want to use use the -Ttext-segment option to the linker.
# GNU (bfd) ld supports this directly. Newer GNU gold linkers
# support it as an alias of -Ttext. Sadly GNU (bfd) ld's -Ttext
@@ -1929,6 +1982,46 @@
AM_CONDITIONAL([BUILD_LZCNT_TESTS], [test x$ac_have_as_lzcnt = xyes])
+# does the x86/amd64 assembler understand the LOOPNEL instruction?
+# Note, this doesn't generate a C-level symbol. It generates a
+# automake-level symbol (BUILD_LOOPNEL_TESTS), used in test Makefile.am's
+AC_MSG_CHECKING([if x86/amd64 assembler supports 'loopnel'])
+
+AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[
+ do {
+ __asm__ __volatile__("1: loopnel 1b\n");
+ } while (0)
+]])], [
+ ac_have_as_loopnel=yes
+ AC_MSG_RESULT([yes])
+], [
+ ac_have_as_loopnel=no
+ AC_MSG_RESULT([no])
+])
+
+AM_CONDITIONAL([BUILD_LOOPNEL_TESTS], [test x$ac_have_as_loopnel = xyes])
+
+
+# does the x86/amd64 assembler understand ADDR32 ?
+# Note, this doesn't generate a C-level symbol. It generates a
+# automake-level symbol (BUILD_ADDR32_TESTS), used in test Makefile.am's
+AC_MSG_CHECKING([if x86/amd64 assembler supports 'addr32'])
+
+AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[
+ do {
+ asm volatile ("addr32 rep movsb");
+ } while (0)
+]])], [
+ ac_have_as_addr32=yes
+ AC_MSG_RESULT([yes])
+], [
+ ac_have_as_addr32=no
+ AC_MSG_RESULT([no])
+])
+
+AM_CONDITIONAL([BUILD_ADDR32_TESTS], [test x$ac_have_as_addr32 = xyes])
+
+
# does the x86/amd64 assembler understand SSE 4.2 instructions?
# Note, this doesn't generate a C-level symbol. It generates a
# automake-level symbol (BUILD_SSE42_TESTS), used in test Makefile.am's
Modified: trunk/memcheck/tests/Makefile.am
==============================================================================
--- trunk/memcheck/tests/Makefile.am (original)
+++ trunk/memcheck/tests/Makefile.am Fri Oct 4 11:35:50 2013
@@ -287,7 +287,6 @@
custom_alloc \
custom-overlap \
deep-backtrace \
- deep_templates \
describe-block \
doublefree error_counts errs1 exitprog execve1 execve2 erringfds \
err_disable1 err_disable2 err_disable3 err_disable4 \
@@ -353,6 +352,10 @@
check_PROGRAMS += threadname
endif
+if HAVE_GSTABS
+check_PROGRAMS += deep_templates
+endif
+
AM_CFLAGS += $(AM_FLAG_M3264_PRI)
AM_CXXFLAGS += $(AM_FLAG_M3264_PRI)
Modified: trunk/memcheck/tests/amd64/Makefile.am
==============================================================================
--- trunk/memcheck/tests/amd64/Makefile.am (original)
+++ trunk/memcheck/tests/amd64/Makefile.am Fri Oct 4 11:35:50 2013
@@ -40,7 +40,6 @@
bug279698 \
fxsave-amd64 \
insn-bsfl \
- insn-pcmpistri \
insn-pmovmskb \
more_x87_fp \
sh-mem-vec128 \
@@ -49,6 +48,9 @@
if BUILD_AVX_TESTS
check_PROGRAMS += sh-mem-vec256
endif
+if HAVE_ASM_CONSTRAINT_P
+ check_PROGRAMS += insn-pcmpistri
+endif
AM_CFLAGS += @FLAG_M64@
AM_CXXFLAGS += @FLAG_M64@
Modified: trunk/none/tests/Makefile.am
==============================================================================
--- trunk/none/tests/Makefile.am (original)
+++ trunk/none/tests/Makefile.am Fri Oct 4 11:35:50 2013
@@ -186,7 +186,6 @@
floored fork fucomip \
mmap_fcntl_bug \
munmap_exe map_unaligned map_unmap mq \
- nestedfns \
pending \
procfs-cmdline-exe \
pth_atfork1 pth_blockedsig pth_cancel1 pth_cancel2 pth_cvsimple \
@@ -212,6 +211,10 @@
gxx304 \
process_vm_readv_writev
+if HAVE_NESTED_FUNCTIONS
+ check_PROGRAMS += nestedfns
+endif
+
# DDD:
# - manythreads and thread-exits have lots of this:
# --61831:0:aspacem sync_check_mapping_callback: segment mismatch:
Modified: trunk/none/tests/amd64/Makefile.am
==============================================================================
--- trunk/none/tests/amd64/Makefile.am (original)
+++ trunk/none/tests/amd64/Makefile.am Fri Oct 4 11:35:50 2013
@@ -85,7 +85,6 @@
check_PROGRAMS = \
allexec \
amd64locked \
- asorep \
bug127521-64 bug132813-amd64 bug132918 \
clc \
cmpxchg \
@@ -97,6 +96,9 @@
sbbmisc \
nibz_bennee_mmap \
xadd
+if BUILD_ADDR32_TESTS
+ check_PROGRAMS += asorep
+endif
if BUILD_SSSE3_TESTS
check_PROGRAMS += ssse3_misaligned
endif
@@ -138,10 +140,12 @@
fcmovnu \
fxtract \
looper \
- loopnel \
jrcxz \
shrld \
slahf-amd64
+if BUILD_LOOPNEL_TESTS
+ check_PROGRAMS += loopnel
+endif
endif
AM_CFLAGS += @FLAG_M64@
|