Skip to content

Commit

Permalink
avx2 configure: Disable if static build
Browse files Browse the repository at this point in the history
This avoids a segfault like the following for at least some 4.8 versions
of gcc when configured with --static if avx2 instructions are also
enabled:

	Program received signal SIGSEGV, Segmentation fault.
	buffer_find_nonzero_offset_ifunc () at ./util/cutils.c:333
	333     {
	(gdb) bt
	#0  buffer_find_nonzero_offset_ifunc () at ./util/cutils.c:333
	#1  0x0000000000939c58 in __libc_start_main ()
	#2  0x0000000000419337 in _start ()

Signed-off-by: Aaron Lindsay <alindsay@codeaurora.org>
Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
  • Loading branch information
Aaron Lindsay authored and pm215 committed Jul 29, 2016
1 parent cf4b61d commit 71fcd8e
Showing 1 changed file with 10 additions and 7 deletions.
17 changes: 10 additions & 7 deletions configure
Expand Up @@ -1788,7 +1788,9 @@ fi
##########################################
# avx2 optimization requirement check

cat > $TMPC << EOF

if test "$static" = "no" ; then
cat > $TMPC << EOF
#pragma GCC push_options
#pragma GCC target("avx2")
#include <cpuid.h>
Expand All @@ -1801,12 +1803,13 @@ static void *bar_ifunc(void) {return (void*) bar;}
int foo(void *a) __attribute__((ifunc("bar_ifunc")));
int main(int argc, char *argv[]) { return foo(argv[0]);}
EOF
if compile_object "" ; then
if has readelf; then
if readelf --syms $TMPO 2>/dev/null |grep -q "IFUNC.*foo"; then
avx2_opt="yes"
fi
fi
if compile_object "" ; then
if has readelf; then
if readelf --syms $TMPO 2>/dev/null |grep -q "IFUNC.*foo"; then
avx2_opt="yes"
fi
fi
fi
fi

#########################################
Expand Down

0 comments on commit 71fcd8e

Please sign in to comment.