From: Florian Krohm Date: Fri, 4 Oct 2013 11:35:50 +0000 (+0000) Subject: Add a few feature tests to configure.ac because clang does not X-Git-Tag: svn/VALGRIND_3_9_0~76 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=8435fc4dc3550dfd641474b1d7e460d398b0d346;p=thirdparty%2Fvalgrind.git 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. git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13615 --- diff --git a/configure.ac b/configure.ac index 0223ee2075..6fc3f1d4f6 100644 --- a/configure.ac +++ b/configure.ac @@ -1715,6 +1715,59 @@ AM_CONDITIONAL(DWARF4, test x$ac_have_dwarf4 = xyes) 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 @@ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ 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 diff --git a/memcheck/tests/Makefile.am b/memcheck/tests/Makefile.am index 555f2ac96c..7614e89857 100644 --- a/memcheck/tests/Makefile.am +++ b/memcheck/tests/Makefile.am @@ -287,7 +287,6 @@ check_PROGRAMS = \ 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 @@ if HAVE_PTHREAD_SETNAME_NP check_PROGRAMS += threadname endif +if HAVE_GSTABS +check_PROGRAMS += deep_templates +endif + AM_CFLAGS += $(AM_FLAG_M3264_PRI) AM_CXXFLAGS += $(AM_FLAG_M3264_PRI) diff --git a/memcheck/tests/amd64/Makefile.am b/memcheck/tests/amd64/Makefile.am index 513ce64d46..6b37fe1dc4 100644 --- a/memcheck/tests/amd64/Makefile.am +++ b/memcheck/tests/amd64/Makefile.am @@ -40,7 +40,6 @@ check_PROGRAMS = \ bug279698 \ fxsave-amd64 \ insn-bsfl \ - insn-pcmpistri \ insn-pmovmskb \ more_x87_fp \ sh-mem-vec128 \ @@ -49,6 +48,9 @@ check_PROGRAMS = \ 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@ diff --git a/none/tests/Makefile.am b/none/tests/Makefile.am index e9c4fdb27a..65689dc768 100644 --- a/none/tests/Makefile.am +++ b/none/tests/Makefile.am @@ -186,7 +186,6 @@ check_PROGRAMS = \ 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 @@ check_PROGRAMS = \ 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: diff --git a/none/tests/amd64/Makefile.am b/none/tests/amd64/Makefile.am index cc351b7b06..c7d63d46d2 100644 --- a/none/tests/amd64/Makefile.am +++ b/none/tests/amd64/Makefile.am @@ -85,7 +85,6 @@ EXTRA_DIST = \ check_PROGRAMS = \ allexec \ amd64locked \ - asorep \ bug127521-64 bug132813-amd64 bug132918 \ clc \ cmpxchg \ @@ -97,6 +96,9 @@ check_PROGRAMS = \ 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 @@ if ! VGCONF_OS_IS_DARWIN fcmovnu \ fxtract \ looper \ - loopnel \ jrcxz \ shrld \ slahf-amd64 +if BUILD_LOOPNEL_TESTS + check_PROGRAMS += loopnel +endif endif AM_CFLAGS += @FLAG_M64@