musl: work around gcc 4.9.x bug
authorGustavo Zacarias <gustavo@zacarias.com.ar>
Thu, 17 Jul 2014 12:43:57 +0000 (09:43 -0300)
committerThomas Petazzoni <thomas.petazzoni@free-electrons.com>
Thu, 17 Jul 2014 18:57:24 +0000 (20:57 +0200)
MUSL doesn't build happily with gcc 4.9.0/1 so work around the bug when
appropiate as suggested by upstream.

Signed-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
package/musl/musl.mk

index 227879953d46fe9bb132dd3faab0ae5fbbccb74c..f15e797558bbc841c9fbf5be9498981b2a0b2c2d 100644 (file)
@@ -18,6 +18,12 @@ MUSL_ADD_TOOLCHAIN_DEPENDENCY = NO
 
 MUSL_INSTALL_STAGING = YES
 
+# gcc constant folding bug with weak aliases workaround
+# See http://www.openwall.com/lists/musl/2014/05/15/1
+ifeq ($(BR2_GCC_VERSION_4_9_X),y)
+MUSL_EXTRA_CFLAGS += -fno-toplevel-reorder
+endif
+
 # We need to run the musl configure script prior to building the
 # gcc-intermediate, so that we can call the install-headers step and
 # get the crt<X>.o built. However, we need to call it again after
@@ -29,7 +35,7 @@ MUSL_INSTALL_STAGING = YES
 define MUSL_CONFIGURE_CALL
        (cd $(@D); \
                $(TARGET_CONFIGURE_OPTS) \
-               CFLAGS="$(filter-out -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64,$(TARGET_CFLAGS))" \
+               CFLAGS="$(filter-out -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64,$(TARGET_CFLAGS)) $(MUSL_EXTRA_CFLAGS)" \
                CPPFLAGS="$(filter-out -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64,$(TARGET_CPPFLAGS))" \
                ./configure \
                        --target=$(GNU_TARGET_NAME) \