New issue
Advanced search Search tips
Note: Color blocks (like or ) mean that a user may not be available. Tooltip shows the reason.

Issue 749263 link

Starred by 1 user

Issue metadata

Status: Verified
Owner:
Closed: Jul 2017
Cc:
EstimatedDays: ----
NextAction: ----
OS: Chrome
Pri: 1
Type: Bug

Blocking:
issue 705071



Sign in to add a comment

media-libs/mesa-17.1.1 does not build with compiler-rt on arm-generic board

Project Member Reported by manojgupta@chromium.org, Jul 26 2017

Issue description

https://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.
 
Description: Show this description
Owner: manojgupta@chromium.org
Status: Started (was: Untriaged)
Sent an email to libtool@gnu.org explaining the issue. 
Project Member

Comment 5 by bugdroid1@chromium.org, 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

Status: Verified (was: Started)

Sign in to add a comment