* Aaron Lindsay (alind...@codeaurora.org) wrote: > 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 <alind...@codeaurora.org>
It does look like the simplest solution to the problem; Reviewed-by: Dr. David Alan Gilbert <dgilb...@redhat.com> Dave > --- > configure | 17 ++++++++++------- > 1 file changed, 10 insertions(+), 7 deletions(-) > > diff --git a/configure b/configure > index 5ada56d..169aa88 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 <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 > > ######################################### > -- > Qualcomm Datacenter Technologies as an affiliate of Qualcomm Technologies, > Inc. > Qualcomm Technologies, Inc. is a member of the > Code Aurora Forum, a Linux Foundation Collaborative Project. > -- Dr. David Alan Gilbert / dgilb...@redhat.com / Manchester, UK