Message ID | 1468525094-11959-1-git-send-email-alindsay@codeaurora.org |
---|---|
State | New |
Headers | show |
* Aaron Lindsay (alindsay@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 <alindsay@codeaurora.org> It does look like the simplest solution to the problem; Reviewed-by: Dr. David Alan Gilbert <dgilbert@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 / dgilbert@redhat.com / Manchester, UK
On 19 July 2016 at 20:12, Dr. David Alan Gilbert <dgilbert@redhat.com> wrote: > * Aaron Lindsay (alindsay@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 <alindsay@codeaurora.org> > > It does look like the simplest solution to the problem; > > Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com> Applied to master, thanks. -- PMM
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 #########################################
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> --- configure | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-)