mesa3d: use -mno-compact-eh for Code Sourcery MIPS
authorVicente Olivert Riera <Vincent.Riera@imgtec.com>
Tue, 31 May 2016 10:15:55 +0000 (11:15 +0100)
committerThomas Petazzoni <thomas.petazzoni@free-electrons.com>
Tue, 31 May 2016 19:10:42 +0000 (21:10 +0200)
mesa3d doesn't like the new compressed exception handling of the Code
Sourcery MIPS toolchain and it fails to compile with an error like this
one:

/br/output/host/opt/ext-toolchain/bin/../lib/gcc/mips-linux-gnu/5.3.0/../../../../mips-linux-gnu/bin/ld:
../../../../src/mesa/.libs/libmesagallium.a(ir_to_mesa.o):
.eh_frame_entry not in order
/br/output/host/opt/ext-toolchain/bin/../lib/gcc/mips-linux-gnu/5.3.0/../../../../mips-linux-gnu/bin/ld:
final link failed: Nonrepresentable section on output
collect2: error: ld returned 1 exit status

Using -mno-compact-eh fixes the problem.

Fixes:

  http://autobuild.buildroot.net/results/3cd/3cd81c57c51c0963ee6f4d9b814989460bb35316/

Signed-off-by: Vicente Olivert Riera <Vincent.Riera@imgtec.com>
[Thomas: improve comment in code.]
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
package/mesa3d/mesa3d.mk

index 3c98f8dd79fc33ad950b1ce5da74c6cd986557f1..15ba42299d83ebef362b7e5a60a1bbcf4ff1b312 100644 (file)
@@ -22,6 +22,14 @@ MESA3D_DEPENDENCIES = \
        expat \
        libdrm
 
+# The Sourcery MIPS toolchain has a special (non-upstream) feature to
+# have "compact exception handling", which unfortunately breaks with
+# mesa3d, so we disable it here by passing -mno-compact-eh.
+ifeq ($(BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_MIPS),y)
+MESA3D_CONF_ENV += CFLAGS="$(TARGET_CFLAGS) -mno-compact-eh"
+MESA3D_CONF_ENV += CXXFLAGS="$(TARGET_CXXFLAGS) -mno-compact-eh"
+endif
+
 ifeq ($(BR2_PACKAGE_OPENSSL),y)
 MESA3D_DEPENDENCIES += openssl
 MESA3D_CONF_OPTS += --with-sha1=libcrypto