From 71fcd8eb6883605707309ad7921d43c8c02a938a Mon Sep 17 00:00:00 2001 From: Aaron Lindsay Date: Thu, 14 Jul 2016 15:38:14 -0400 Subject: [PATCH] avx2 configure: Disable if static build 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 Reviewed-by: Dr. David Alan Gilbert Signed-off-by: Peter Maydell --- configure | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/configure b/configure index 879324b0fd..f57fcc689d 100755 --- a/configure +++ b/configure @@ -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 @@ -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 ######################################### -- 2.11.4.GIT