unofficial mirror of bug-guix@gnu.org 
 help / color / mirror / code / Atom feed
From: Mark H Weaver <mhw@netris.org>
To: Ricardo Wurmus <rekado@elephly.net>
Cc: 27489@debbugs.gnu.org
Subject: bug#27489: glibc fails to build on i686
Date: Sun, 25 Jun 2017 20:10:33 -0400	[thread overview]
Message-ID: <87vanjhame.fsf@netris.org> (raw)
In-Reply-To: <878tkfixmu.fsf@netris.org> (Mark H. Weaver's message of "Sun, 25 Jun 2017 17:08:09 -0400")

Mark H Weaver <mhw@netris.org> writes:

> Ricardo Wurmus <rekado@elephly.net> writes:
>
>> Since commit 665d6a59161769e10b52ffcbcd5cd2db22f32681 I have to build
>> glibc from source.  Unfortunately, this fails with the following error:
>>
>> …
>> i686-guix-linux-gnu-gcc ../sysdeps/i386/i686/multiarch/strcspn-c.c -c -std=gnu11 -fgnu89-inline  -O2 -Wall -Werror -Wundef - 
>> In file included from ../sysdeps/x86_64/multiarch/strcspn-c.c:22:0,
>>                  from ../sysdeps/i386/i686/multiarch/strcspn-c.c:2:
>> ../sysdeps/x86_64/multiarch/varshift.h: In function '__m128i_shift_right':
>> ../sysdeps/x86_64/multiarch/varshift.h:26:1: error: SSE vector return without SSE enabled changes the ABI [-Werror=psabi]
>>  {
>>  ^
>> In file included from /gnu/store/85qsxn71dn6944df5kcvkxg0nm3xdg6z-gcc-cross-boot0-5.4.0-lib/lib/gcc/i686-guix-linux-gnu/5.4.,
>>                  from /gnu/store/85qsxn71dn6944df5kcvkxg0nm3xdg6z-gcc-cross-boot0-5.4.0-lib/lib/gcc/i686-guix-linux-gnu/5.4.,
>>                  from ../sysdeps/x86_64/multiarch/strcspn-c.c:20,
>>                  from ../sysdeps/i386/i686/multiarch/strcspn-c.c:2:
>> /gnu/store/85qsxn71dn6944df5kcvkxg0nm3xdg6z-gcc-cross-boot0-5.4.0-lib/lib/gcc/i686-guix-linux-gnu/5.4.0/include/tmmintrin.h:h
>>  _mm_shuffle_epi8 (__m128i __X, __m128i __Y)
>>  ^
>> In file included from ../sysdeps/x86_64/multiarch/strcspn-c.c:22:0,
>>                  from ../sysdeps/i386/i686/multiarch/strcspn-c.c:2:
>> ../sysdeps/x86_64/multiarch/varshift.h:27:10: error: called from here
>>    return _mm_shuffle_epi8 (value,
>>           ^
>> In file included from /gnu/store/85qsxn71dn6944df5kcvkxg0nm3xdg6z-gcc-cross-boot0-5.4.0-lib/lib/gcc/i686-guix-linux-gnu/5.4.,
>>                  from /gnu/store/85qsxn71dn6944df5kcvkxg0nm3xdg6z-gcc-cross-boot0-5.4.0-lib/lib/gcc/i686-guix-linux-gnu/5.4.,
>>                  from /gnu/store/85qsxn71dn6944df5kcvkxg0nm3xdg6z-gcc-cross-boot0-5.4.0-lib/lib/gcc/i686-guix-linux-gnu/5.4.,
>>                  from /gnu/store/85qsxn71dn6944df5kcvkxg0nm3xdg6z-gcc-cross-boot0-5.4.0-lib/lib/gcc/i686-guix-linux-gnu/5.4.,
>>                  from ../sysdeps/x86_64/multiarch/strcspn-c.c:20,
>>                  from ../sysdeps/i386/i686/multiarch/strcspn-c.c:2:
>> /gnu/store/85qsxn71dn6944df5kcvkxg0nm3xdg6z-gcc-cross-boot0-5.4.0-lib/lib/gcc/i686-guix-linux-gnu/5.4.0/include/emmintrin.h:h
>>  _mm_loadu_si128 (__m128i const *__P)
>>  ^
>> In file included from ../sysdeps/x86_64/multiarch/strcspn-c.c:22:0,
>>                  from ../sysdeps/i386/i686/multiarch/strcspn-c.c:2:
>> ../sysdeps/x86_64/multiarch/varshift.h:27:10: error: called from here
>>    return _mm_shuffle_epi8 (value,
>>           ^
>> cc1: all warnings being treated as errors
>> make[4]: *** [/tmp/guix-build-glibc-2.25.drv-0/build/sysd-rules:561: /tmp/guix-build-glibc-2.25.drv-0/build/string/rtld-strc1
>> make[4]: Leaving directory '/tmp/guix-build-glibc-2.25.drv-0/glibc-2.25/string'
>> make[3]: *** [../o-iterator.mk:9: /tmp/guix-build-glibc-2.25.drv-0/build/string/rtld-strchr.os] Error 2
>> make[3]: Leaving directory '/tmp/guix-build-glibc-2.25.drv-0/glibc-2.25/elf'
>> make[2]: *** [Makefile:443: /tmp/guix-build-glibc-2.25.drv-0/build/elf/rtld-libc.a] Error 2
>> make[2]: Leaving directory '/tmp/guix-build-glibc-2.25.drv-0/glibc-2.25/elf'
>> make[1]: *** [Makefile:215: elf/subdir_lib] Error 2
>> make[1]: Leaving directory '/tmp/guix-build-glibc-2.25.drv-0/glibc-2.25'
>> make: *** [Makefile:9: all] Error 2
>> phase `build' failed after 1749.9 seconds
>> builder for `/gnu/store/ivvdx2m0p6gnmcxmz355z106ffqg9p25-glibc-2.25.drv' failed with exit code 1
>> guix system: error: build failed: build of `/gnu/store/ivvdx2m0p6gnmcxmz355z106ffqg9p25-glibc-2.25.drv' failed
>>
>> This means I cannot upgrade my i686 machines.
>
> Hmm.  The patches added by commit 665d6a5916 change only one file:
> rtld.c, so I don't see how that could affect the building of
> strcspn-c.c.

I built both the grafted and ungrafted versions of 'glibc-final' for
i686-linux, and compared the build logs.

The problem is that glibc-CVE-2017-1000366-pt2.patch introduces a
reference to 'strcspn' in rtld.c.  This causes the glibc build system to
automatically add 'rtld-strcspn.os' and 'rtld-strcspn-c.os' to the list
of objects to be built.  When 'rtld-strcspn-c.os' is built, "-msse4" is
passed to the compiler (along with "-mno-sse" near the end).

Here's are the relevant parts of the diff:

-make subdir=string -C ../string ..=../ objdir=/tmp/guix-build-glibc-2.25.drv-0/build -f Makefile -f ../elf/rtld-Rules rtld-all rtld-modules='rtld-strchr.os rtld-strcmp.os rtld-strdup.os rtld-strlen.os rtld-strnlen.os rtld-memchr.os rtld-memcmp.os rtld-memmove.os rtld-memset.os rtld-mempcpy.os rtld-stpcpy.os rtld-memcpy.os rtld-rawmemchr.os rtld-memset-sse2.os rtld-memcpy-ssse3.os rtld-mempcpy-ssse3.os rtld-memmove-ssse3.os rtld-memcpy-ssse3-rep.os rtld-mempcpy-ssse3-rep.os rtld-memmove-ssse3-rep.os rtld-memset-sse2-rep.os rtld-strcmp-ssse3.os rtld-strcmp-sse4.os rtld-memcmp-ssse3.os rtld-memcmp-sse4.os rtld-strlen-sse2.os rtld-strlen-sse2-bsf.os rtld-stpcpy-ssse3.os rtld-stpcpy-sse2.os rtld-strchr-sse2.os rtld-strchr-sse2-bsf.os rtld-memchr-sse2.os rtld-memchr-sse2-bsf.os rtld-rawmemchr-sse2.os rtld-rawmemchr-sse2-bsf.os rtld-strnlen-sse2.os rtld-strnlen-c.os rtld-memcpy-sse2-unaligned.os rtld-mempcpy-sse2-unaligned.os rtld-memmove-sse2-unaligned.os rtld-cacheinfo.os'
+make subdir=string -C ../string ..=../ objdir=/tmp/guix-build-glibc-2.25.drv-0/build -f Makefile -f ../elf/rtld-Rules rtld-all rtld-modules='rtld-strchr.os rtld-strcmp.os rtld-strcspn.os rtld-strdup.os rtld-strlen.os rtld-strnlen.os rtld-memchr.os rtld-memcmp.os rtld-memmove.os rtld-memset.os rtld-mempcpy.os rtld-stpcpy.os rtld-memcpy.os rtld-rawmemchr.os rtld-memset-sse2.os rtld-memcpy-ssse3.os rtld-mempcpy-ssse3.os rtld-memmove-ssse3.os rtld-memcpy-ssse3-rep.os rtld-mempcpy-ssse3-rep.os rtld-memmove-ssse3-rep.os rtld-memset-sse2-rep.os rtld-strcmp-ssse3.os rtld-strcmp-sse4.os rtld-memcmp-ssse3.os rtld-memcmp-sse4.os rtld-strlen-sse2.os rtld-strlen-sse2-bsf.os rtld-stpcpy-ssse3.os rtld-stpcpy-sse2.os rtld-strchr-sse2.os rtld-strchr-sse2-bsf.os rtld-memchr-sse2.os rtld-memchr-sse2-bsf.os rtld-rawmemchr-sse2.os rtld-rawmemchr-sse2-bsf.os rtld-strnlen-sse2.os rtld-strnlen-c.os rtld-memcpy-sse2-unaligned.os rtld-mempcpy-sse2-unaligned.os rtld-memmove-sse2-unaligned.os rtld-strcspn-c.os rtld-cacheinfo.os rtld-varshift.os'

[...]

+i686-guix-linux-gnu-gcc ../sysdeps/i386/i686/multiarch/strcspn-c.c -c -std=gnu11 -fgnu89-inline  -O2 -Wall -Werror -Wundef -Wwrite-strings -fmerge-all-constants -fno-stack-protector -frounding-math -g -Wstrict-prototypes -Wold-style-definition   -fPIC -Wa,-mtune=i686  -mno-sse -mno-mmx -mfpmath=387  -msse4  -ftls-model=initial-exec      -I../include -I/tmp/guix-build-glibc-2.25.drv-0/build/string  -I/tmp/guix-build-glibc-2.25.drv-0/build  -I../sysdeps/unix/sysv/linux/i386/i686  -I../sysdeps/i386/i686/nptl  -I../sysdeps/unix/sysv/linux/i386  -I../sysdeps/unix/sysv/linux/x86  -I../sysdeps/i386/nptl  -I../sysdeps/unix/sysv/linux/include -I../sysdeps/unix/sysv/linux  -I../sysdeps/nptl  -I../sysdeps/pthread  -I../sysdeps/gnu  -I../sysdeps/unix/inet  -I../sysdeps/unix/sysv  -I../sysdeps/unix/i386  -I../sysdeps/unix  -I../sysdeps/posix  -I../sysdeps/i386/i686/fpu/multiarch  -I../sysdeps/i386/i686/fpu  -I../sysdeps/i386/i686/multiarch  -I../sysdeps/i386/i686  -I../sysdeps/i386/fpu  -I../sysdeps/x86/fpu/include -I../sysdeps/x86/fpu  -I../sysdeps/i386  -I../sysdeps/x86  -I../sysdeps/wordsize-32  -I../sysdeps/ieee754/ldbl-96/include -I../sysdeps/ieee754/ldbl-96  -I../sysdeps/ieee754/dbl-64  -I../sysdeps/ieee754/flt-32  -I../sysdeps/ieee754  -I../sysdeps/generic  -I.. -I../libio -I. -nostdinc -isystem /gnu/store/...-gcc-cross-boot0-5.4.0-lib/lib/gcc/i686-guix-linux-gnu/5.4.0/include -isystem /gnu/store/...-gcc-cross-boot0-5.4.0-lib/lib/gcc/i686-guix-linux-gnu/5.4.0/include-fixed -isystem /gnu/store/...-linux-libre-headers-4.4.47/include  -D_LIBC_REENTRANT -include /tmp/guix-build-glibc-2.25.drv-0/build/libc-modules.h -DMODULE_NAME=rtld -include ../include/libc-symbols.h  -DPIC -DSHARED     -o /tmp/guix-build-glibc-2.25.drv-0/build/string/rtld-strcspn-c.os -MD -MP -MF /tmp/guix-build-glibc-2.25.drv-0/build/string/rtld-strcspn-c.os.dt -MT /tmp/guix-build-glibc-2.25.drv-0/build/string/rtld-strcspn-c.os  -mno-sse -mno-mmx -mfpmath=387 
+In file included from ../sysdeps/x86_64/multiarch/strcspn-c.c:22:0,
+                 from ../sysdeps/i386/i686/multiarch/strcspn-c.c:2:
+../sysdeps/x86_64/multiarch/varshift.h: In function '__m128i_shift_right':
+../sysdeps/x86_64/multiarch/varshift.h:26:1: error: SSE vector return without SSE enabled changes the ABI [-Werror=psabi]
[...]

The excerpts above are the first hunks of the diff (excluding lines of
the form "phase `...' succeeded after N.N seconds").

     Mark

  parent reply	other threads:[~2017-06-26  0:12 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-06-25 19:19 bug#27489: glibc fails to build on i686 Ricardo Wurmus
2017-06-25 21:08 ` Mark H Weaver
2017-06-25 22:02   ` Mark H Weaver
2017-06-26  0:10   ` Mark H Weaver [this message]
2017-06-26  1:23     ` Mark H Weaver
2017-06-26  2:03       ` Mark H Weaver
2017-06-26  8:03         ` Ricardo Wurmus
2017-06-29  0:57 ` Adonay Felipe Nogueira
2017-06-29  2:52   ` Leo Famulari
2017-06-29  5:00   ` Mark H Weaver
2017-06-30 12:05     ` Adonay Felipe Nogueira
2017-07-03  4:49       ` Mark H Weaver

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://guix.gnu.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87vanjhame.fsf@netris.org \
    --to=mhw@netris.org \
    --cc=27489@debbugs.gnu.org \
    --cc=rekado@elephly.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/guix.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).