media-libs/mesa-17.1.1 does not build with compiler-rt on arm-generic board |
|||
Issue descriptionhttps://uberchromegw.corp.google.com/i/chromiumos.tryserver/builders/chromiumos-sdk/builds/2412 The issue started from yesterday Jul 25, mesa used to build before with compiler-rt. The root cause seems that mesa is finding which gcc libraries to link to on its own. This breaks when compiler-rt is the default builtin library. Fails here: CXXLD mesa_dri_drivers.la main/bufferobj.c:747: error: undefined reference to '__aeabi_idiv' main/bufferobj.c:2027: error: undefined reference to '__aeabi_idivmod' main/bufferobj.c:2027: error: undefined reference to '__aeabi_idivmod' main/bufferobj.c:4416: error: undefined reference to '__aeabi_uidivmod' main/bufferobj.c:4422: error: undefined reference to '__aeabi_uidivmod' main/copyimage.c:666: error: undefined reference to '__aeabi_uidivmod' main/copyimage.c:666: error: undefined reference to '__aeabi_uidivmod' main/copyimage.c:696: error: undefined reference to '__aeabi_uidiv' main/copyimage.c:695: error: undefined reference to '__aeabi_uidiv' main/formatquery.c:0: error: undefined reference to '__aeabi_uidiv' main/formats.c:871: error: undefined reference to '__aeabi_uidiv' main/formats.c:899: error: undefined reference to '__aeabi_uldivmod' main/formats.c:900: error: undefined reference to '__aeabi_uldivmod' main/formats.c:901: error: undefined reference to '__aeabi_uldivmod' ../../src/mesa/main/format_utils.h:108: error: undefined reference to '__aeabi_uldivmod' main/get.c:1589: error: undefined reference to '__aeabi_l2f' Command line when compiler-rt is not used: [/usr/bin/ccache] ccache /usr/bin/clang++ --sysroot=/build/arm-generic -Qunused-arguments -grecord-gcc-switches -fno-stack-protector -fno-omit-frame-pointer -D_FORTIFY_SOURCE=2 -mthumb -fPIC -DPIC -shared -nostdlib /build/arm-generic/usr/lib/../lib/crti.o /usr/bin/../lib/gcc/armv7a-cros-linux-gnueabi/4.9.x/crtbeginS.o -Wl,--whole-archive ../../.libs/libmesa.a common/.libs/libmegadriver_stub.a common/.libs/libdricommon.a common/.libs/libxmlconfig.a swrast/.libs/libswrast_dri.a -Wl,--no-whole-archive -Wl,-rpath -Wl,/usr/lib/gcc/armv7a-cros-linux-gnueabi/4.9.x -Wl,-rpath -Wl,/build/arm-generic/tmp/portage/media-libs/mesa-17.1.1-r1/work/mesa-17.1.1/src/mapi/shared-glapi/.libs -Wl,-rpath -Wl,/usr/lib/gcc/armv7a-cros-linux-gnueabi/4.9.x -lz -L/build/arm-generic/usr/lib ../../../../src/mapi/shared-glapi/.libs/libglapi.so -ldrm -lexpat -lpthread -ldl -L/usr/bin/../lib/gcc/armv7a-cros-linux-gnueabi/4.9.x -L/usr/bin/../lib/gcc/armv7a-cros-linux-gnueabi/4.9.x/../../../../armv7a-cros-linux-gnueabi/lib/../lib -L/build/arm-generic/lib/../lib -L/build/arm-generic/usr/lib/../lib -L/usr/bin/../lib/gcc/armv7a-cros-linux-gnueabi/4.9.x/../../../../armv7a-cros-linux-gnueabi/lib -L/build/arm-generic/lib /usr/lib/gcc/armv7a-cros-linux-gnueabi/4.9.x/libstdc++.so -lm -lc -lgcc_s /usr/bin/../lib/gcc/armv7a-cros-linux-gnueabi/4.9.x/crtendS.o /build/arm-generic/usr/lib/../lib/crtn.o -O2 -O2 -O2 -march=armv7-a -mtune=cortex-a15 -mfpu=neon -mfloat-abi=hard -g -Wl,-Bsymbolic -Wl,--gc-sections -Wl,--no-undefined -Wl,-O1 -Wl,-O2 -Wl,--as-needed -pthread -pthread -Wl,-soname -Wl,mesa_dri_drivers.so -o .libs/mesa_dri_drivers.so -B/usr/libexec/gcc/armv7a-cros-linux-gnueabi -target armv7a-cros-linux-gnueabi -mfloat-abi=hard Note the -lgcc_s (This is added by mesa, not by clang). Command line when compiler-rt is used as default in clang: [/usr/bin/ccache] ccache /usr/bin/clang++ --sysroot=/build/arm-generic -Qunused-arguments -grecord-gcc-switches -fno-stack-protector -fno-omit-frame-pointer -D_FORTIFY_SOURCE=2 -mthumb -fPIC -DPIC -shared -nostdlib /build/arm-generic/usr/lib/../lib/crti.o /usr/bin/../lib/gcc/armv7a-cros-linux-gnueabi/4.9.x/crtbeginS.o -Wl,--whole-archive ../../.libs/libmesa.a common/.libs/libmegadriver_stub.a common/.libs/libdricommon.a common/.libs/libxmlconfig.a swrast/.libs/libswrast_dri.a -Wl,--no-whole-archive -Wl,-rpath -Wl,/usr/lib/gcc/armv7a-cros-linux-gnueabi/4.9.x -Wl,-rpath -Wl,/build/arm-generic/tmp/portage/media-libs/mesa-17.1.1-r1/work/mesa-17.1.1/src/mapi/shared-glapi/.libs -Wl,-rpath -Wl,/usr/lib/gcc/armv7a-cros-linux-gnueabi/4.9.x -lz -L/build/arm-generic/usr/lib ../../../../src/mapi/shared-glapi/.libs/libglapi.so -ldrm -lexpat -lpthread -ldl -L/usr/bin/../lib/gcc/armv7a-cros-linux-gnueabi/4.9.x -L/usr/bin/../lib/gcc/armv7a-cros-linux-gnueabi/4.9.x/../../../../armv7a-cros-linux-gnueabi/lib/../lib -L/build/arm-generic/lib/../lib -L/build/arm-generic/usr/lib/../lib -L/usr/bin/../lib/gcc/armv7a-cros-linux-gnueabi/4.9.x/../../../../armv7a-cros-linux-gnueabi/lib -L/build/arm-generic/lib /usr/lib/gcc/armv7a-cros-linux-gnueabi/4.9.x/libstdc++.so -lm -lc -lgcc_eh /usr/bin/../lib/gcc/armv7a-cros-linux-gnueabi/4.9.x/crtendS.o /build/arm-generic/usr/lib/../lib/crtn.o -O2 -O2 -O2 -march=armv7-a -mtune=cortex-a15 -mfpu=neon -mfloat-abi=hard -g -Wl,-Bsymbolic -Wl,--gc-sections -Wl,--no-undefined -Wl,-O1 -Wl,-O2 -Wl,--as-needed -pthread -pthread -Wl,-soname -Wl,mesa_dri_drivers.so -o .libs/mesa_dri_drivers.so -B/usr/libexec/gcc/armv7a-cros-linux-gnueabi -target armv7a-cros-linux-gnueabi -mfloat-abi=hard Mesa build is using -nostdlib flag which means compiler does not link libgcc_s.so with it. But it adds lgcc_s on its own so the linking works when compiler-rt is not used. When compiler-rt is used, lgcc_s is missing but the equivalent linking of compiler-rt is not added by mesa. And the link fails.
,
Jul 26 2017
,
Jul 27 2017
Sent an email to libtool@gnu.org explaining the issue.
,
Jul 28 2017
opened a libtool bug at https://debbugs.gnu.org/cgi/bugreport.cgi?bug=27866
,
Jul 29 2017
The following revision refers to this bug: https://chromium.googlesource.com/chromiumos/overlays/portage-stable/+/88201a517e3a797e4197bacc4959785a934c08d6 commit 88201a517e3a797e4197bacc4959785a934c08d6 Author: Manoj Gupta <manojgupta@google.com> Date: Sat Jul 29 07:57:02 2017 libtool: Handle clang's statically linked libraries. Handle clang's statically linked libraries when finding internal compiler libraries. This fixes mesa build when clang and compiler-rt are used for building. libtool bug: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=27866 BUG= chromium:749263 TEST=emerge libtool works. TEST=emerge-arm-generic mesa works with/without compiler-rt. Change-Id: I969a08843995419b0614cafbb448f2b724884329 Reviewed-on: https://chromium-review.googlesource.com/590580 Commit-Ready: Manoj Gupta <manojgupta@chromium.org> Tested-by: Manoj Gupta <manojgupta@chromium.org> Reviewed-by: Mike Frysinger <vapier@chromium.org> [rename] https://crrev.com/88201a517e3a797e4197bacc4959785a934c08d6/sys-devel/libtool/libtool-2.4.6-r1.ebuild [add] https://crrev.com/88201a517e3a797e4197bacc4959785a934c08d6/sys-devel/libtool/files/libtool-2.4.6-clang-libs.patch
,
Jul 30 2017
|
|||
►
Sign in to add a comment |
|||
Comment 1 by manojgupta@chromium.org
, Jul 26 2017