Summary: | x11-libs/pixman-0.16.0: pixman-arm-neon.c:982: error: constant out of range | ||
---|---|---|---|
Product: | Gentoo Linux | Reporter: | Jacob Godserv <jacobgodserv> |
Component: | Current packages | Assignee: | Gentoo X packagers <x11> |
Status: | RESOLVED FIXED | ||
Severity: | normal | CC: | arm, siarhei.siamashka |
Priority: | High | ||
Version: | unspecified | ||
Hardware: | ARM | ||
OS: | Linux | ||
Whiteboard: | |||
Package list: | Runtime testing required: | --- | |
Attachments: |
build.log
build.log |
Description
Jacob Godserv
2009-12-21 15:59:31 UTC
Created attachment 213689 [details]
build.log
Reference to upstream bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=23576 This problem is fixed in pixman 0.16.2 Is this confirmed, then? (In reply to comment #3) > Is this confirmed, then? Sorry, what do you mean? I was expecting that you could confirm whether it helps or not in your case. This compilation error is a bug in gcc, which was confirmed and already fixed by upstream. Maybe it even will become available in the next gcc 4.4 point release. In the mean time, pixman 0.16.2 has a workaround for this problem and replaces the problematic intrinsic with equivalent inline assembly. While I tried myself to test different combinations of toolchains and compilation options, it was not nearly close to full coverage. So I want to know about all the possible sources of breakages. For this particular bug either moving to version 0.16.2 would be a good idea, or the following patch can be applied to pixman 0.16.0: http://cgit.freedesktop.org/pixman/commit/?h=0.16&id=698b686d58c510e1b8a9183750d00cbd9ed504b2 I can confirm that pixman 0.16.x is also affected by a bug in binutils (same as reported in bug 297801). But this breakage also may depend on gcc version and optimization options in CFLAGS (causing the build to success in some configurations). The offending "vmov" instruction gets generated by gcc here when compiling ARM NEON intrinsics, and it makes assembler go crazy and add bogus symbols in the symbol table. x11-libs/pixman-0.16.0 and sys-devel/binutils-2.18-r3 work when pixman is compiled with CFLAGS="-Os -pipe" and binutils is built with CFLAGS="-march=armv7-a -mtune=cortex-a8 -mfpu=neon -mfloat-abi=softfp -fomit-frame-pointer -Os -pipe" About to try pixman with binutil's CFLAGS. I expect a failure. 0.16.0 failed to build with CFLAGS="-march=armv7-a -mtune=cortex-a8 -mfpu=neon -mfloat-abi=softfp -fomit-frame-pointer -Os -pipe". About to try pixman-0.16.2 with same CFLAGS. 0.16.2 fails, but this time instead of with the output given in this bug it fails with similar output as bug #297801: /bin/sh ../libtool --tag=CC --mode=link armv7a-softfloat-linux-gnueabi-gcc -march=armv7-a -mtune=cortex-a8 -mfpu=neon -mfloat-abi=softfp -fomit-frame-point er -Os -pipe -Wall -fno-strict-aliasing -fvisibility=hidden -Wl,-O1 -o region-test region-test.o ../pixman/libpixman-1.la libtool: link: armv7a-softfloat-linux-gnueabi-gcc -march=armv7-a -mtune=cortex-a8 -mfpu=neon -mfloat-abi=softfp -fomit-frame-pointer -Os -pipe -Wall -fno-stri ct-aliasing -fvisibility=hidden -Wl,-O1 -o .libs/region-test region-test.o ../pixman/.libs/libpixman-1.so -lm ../pixman/.libs/libpixman-1.so: undefined reference to `d19' ../pixman/.libs/libpixman-1.so: undefined reference to `d22' ../pixman/.libs/libpixman-1.so: undefined reference to `d18' ../pixman/.libs/libpixman-1.so: undefined reference to `d21' collect2: ld returned 1 exit status I'll retry all 0.16.x versions with CFLAGS="-Os -pipe" again, to make sure they all work without NEON. Does 0.16.2 belong in bug #297801, or is bug #297801 and this bug the same? Both 0.16.0 and 0.16.2 work with CFLAGS="-Os -pipe" I'm going to try that patch on 0.16.0 next. Is there any other information needed? Created attachment 214325 [details] build.log With the patch, this bug is fixed. However, we then hit bug #297801 directly afterward: /bin/sh ../libtool --tag=CC --mode=link armv7a-softfloat-linux-gnueabi-gcc -march=armv7-a -mtune=cortex-a8 -mfpu=neon -mfloat-abi=softfp -fomit-frame-pointer -Os -pipe -Wall -fno-strict-aliasing -fvisibility=hidden -Wl,-O1 -o region-test region-test.o ../pixman/libpixman-1.la libtool: link: armv7a-softfloat-linux-gnueabi-gcc -march=armv7-a -mtune=cortex-a8 -mfpu=neon -mfloat-abi=softfp -fomit-frame-pointer -Os -pipe -Wall -fno-strict-aliasing -fvisibility=hidden -Wl,-O1 -o .libs/region-test region-test.o ../pixman/.libs/libpixman-1.so -lm ../pixman/.libs/libpixman-1.so: undefined reference to `d19' ../pixman/.libs/libpixman-1.so: undefined reference to `d22' ../pixman/.libs/libpixman-1.so: undefined reference to `d18' ../pixman/.libs/libpixman-1.so: undefined reference to `d21' collect2: ld returned 1 exit status The full build.log is attached. I'd consider this bug fixed with the given patch. Bug #297801 should be a focus (unless, again, they're really the same). 0.16.2 is not affected by this bug. It already has the patch applied. It fails similarly to 0.16.0 when the patch is applied to it. To sum it up, there are 3 bugs related to pixman so far: 1. "error: constant out of range" This is a bug in gcc, pixman 0.16.2 has a workaround. Affected versions of pixman: 0.16.0 Reported here. 2. "undefined reference to `d19'" (or any symbols starting with 'd' prefix and numeric suffix) This is a bug in binutils 2.18 (fixed in 2.19), it can't be workarounded for pixman in a relaible way and binutils upgrade is required. Affected versions of pixman: 0.16.0, 0.16.2, 0.17.2 Reported as bug 297801 3. "Error: selected processor does not support `pld [PF_SRC,PF_X,lsl#src_bpp_shift]'" Finally this is a bug in pixman itself, causing build failure when compiling for armv4. The fix is in upstream git. Affected versions of pixman: 0.16.0, 0.17.2 Reported as bug 298391 Summarizing my tests for archival purposes; the above summary is probably more useful: *) 0.16.0 with "-march=armv7-a -mtune=cortex-a8 -mfpu=neon -mfloat-abi=softfp -fomit-frame-pointer -Os -pipe" without patch results in "error: constant out of range" *) 0.16.0 with "-march=armv7-a -mtune=cortex-a8 -mfpu=neon -mfloat-abi=softfp -fomit-frame-pointer -Os -pipe" with patch results in "../pixman/.libs/libpixman-1.so: undefined reference to" *) 0.16.0 with "-Os -pipe" without patch succeeds. *) 0.16.2 with "-march=armv7-a -mtune=cortex-a8 -mfpu=neon -mfloat-abi=softfp -fomit-frame-pointer -Os -pipe" (patch is not applicable) results in "../pixman/.libs/libpixman-1.so: undefined reference to" *) 0.16.2 with "-Os -pipe" (patch is not applicable) succeeds. pixman-0.16.2 marked stable |