mksh: fix build on mipsel platforms
authorFlorian Fainelli <florian@openwrt.org>
Tue, 11 Dec 2012 16:58:08 +0000 (16:58 +0000)
committerFlorian Fainelli <florian@openwrt.org>
Tue, 11 Dec 2012 16:58:08 +0000 (16:58 +0000)
And possibly other platforms where this assertion fails:
error: variably modified 'ari_sign_32_bit_and_wrap' at file scope

Signed-off-by: Florian Fainelli <florian@openwrt.org>
SVN-Revision: 34632

utils/mksh/Makefile
utils/mksh/patches/000-debian_build_fix.patch [new file with mode: 0644]

index e9a3bf3f115c1168be366e412ab6aaeaf1981299..27a2801886ec1883c50c1073e9eed29d64e1849c 100644 (file)
@@ -55,7 +55,7 @@ define Build/Compile
                CC="$(TARGET_CC)" \
                TARGET_OS="$(shell uname -s)" \
                CFLAGS="$(TARGET_CFLAGS)" \
-               CPPFLAGS="-DMKSH_SMALL=1 -DMKSH_ASSUME_UTF8=0" \
+               CPPFLAGS="-DMKSH_SMALL=1 -DMKSH_ASSUME_UTF8=0 -DMKSH_GCC565048=1" \
                HAVE_CAN_FSTACKPROTECTORALL=0 \
                LDFLAGS="$(TARGET_LDFLAGS)" \
                        $(BASH) Build.sh -Q -r -c lto
diff --git a/utils/mksh/patches/000-debian_build_fix.patch b/utils/mksh/patches/000-debian_build_fix.patch
new file mode 100644 (file)
index 0000000..b64fe71
--- /dev/null
@@ -0,0 +1,18 @@
+This patch is a backport of the fix proposed at:
+https://bugs.launchpad.net/ubuntu/+source/mksh/+bug/1058035
+
+diff -urN mksh/Build.sh mksh.new/Build.sh
+--- mksh/Build.sh      2012-12-11 14:28:56.632807230 +0100
++++ mksh.new/Build.sh  2012-12-11 14:35:23.704817141 +0100
+@@ -1530,9 +1530,11 @@
+ /* but the next three are; we REQUIRE signed integer wraparound */
+ cta(ari_is_signed, (mksh_ari_t)-1 < (mksh_ari_t)0);
+ cta(ari_has_31_bit, 0 < (mksh_ari_t)(((((mksh_ari_t)1 << 15) << 15) - 1) * 2 + 1));
++#if !defined(MKSH_GCC565048)
+ cta(ari_sign_32_bit_and_wrap,
+     (mksh_ari_t)(((((mksh_ari_t)1 << 15) << 15) - 1) * 2 + 1) >
+     (mksh_ari_t)(((((mksh_ari_t)1 << 15) << 15) - 1) * 2 + 2));
++#endif
+ /* the next assertion is probably not really needed */
+ cta(uari_is_4_char, sizeof(mksh_uari_t) == 4);
+ /* but the next four are; we REQUIRE unsigned integer wraparound */