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 <alindsay@codeaurora.org> Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com> Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
parent
cf4b61d581
commit
71fcd8eb68
17
configure
vendored
17
configure
vendored
@ -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>
|
||||
@ -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
|
||||
|
||||
#########################################
|
||||
|
Loading…
Reference in New Issue
Block a user