[openwrt/openwrt] package: busybox: disable mips16 on hard-float

LEDE Commits lede-commits at lists.infradead.org
Tue Sep 17 07:18:52 PDT 2024


981213 pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/118f26e6cb8b21f90f41d2ea557783b59e75e1d5

commit 118f26e6cb8b21f90f41d2ea557783b59e75e1d5
Author: Chuanhong Guo <gch981213 at gmail.com>
AuthorDate: Thu Aug 15 16:04:30 2024 +0800

    package: busybox: disable mips16 on hard-float
    
    The busybox built with mips16 enabled has broken seq command.
    Disassembling shows that the call to hard-float strtod in mips16
    code is generated without the __call_stub_fp:
    ```
       0x00406d6f <+118>:   lw      v0,32(sp)
       0x00406d71 <+120>:   sll     s0,2
       0x00406d73 <+122>:   addu    s0,v0,s0
       0x00406d75 <+124>:   lw      a0,-4(s0)
       0x00406d79 <+128>:   jal     0x44ebc1 <strtod at mips16plt>
       0x00406d7d <+132>:   addiu   a1,sp,84
       0x00406d7f <+134>:   sw      v0,64(sp)
       0x00406d81 <+136>:   lw      v0,0(s1)
       0x00406d83 <+138>:   sw      v1,68(sp)
    ```
    
    As a result, strtod returns the result in float point registers
    while the calling mips16 code expect the result in v0/v1.
    
    Disable mips16 on hard-float targets for now. The built .ipk goes
    from 213316 bytes to 251419 bytes.
    
    Signed-off-by: Chuanhong Guo <gch981213 at gmail.com>
---
 package/utils/busybox/Makefile | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/package/utils/busybox/Makefile b/package/utils/busybox/Makefile
index 4bddd5201d..bf3e8e2f75 100644
--- a/package/utils/busybox/Makefile
+++ b/package/utils/busybox/Makefile
@@ -6,7 +6,7 @@ include $(TOPDIR)/rules.mk
 
 PKG_NAME:=busybox
 PKG_VERSION:=1.36.1
-PKG_RELEASE:=1
+PKG_RELEASE:=2
 PKG_FLAGS:=essential
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
@@ -17,6 +17,10 @@ PKG_HASH:=b8cc24c9574d809e7279c3be349795c5d5ceb6fdf19ca709f80cde50e47de314
 PKG_BUILD_DEPENDS:=BUSYBOX_CONFIG_PAM:libpam
 PKG_BUILD_PARALLEL:=1
 PKG_BUILD_FLAGS:=lto
+ifeq ($(CONFIG_SOFT_FLOAT),)
+  PKG_BUILD_FLAGS+=no-mips16
+endif
+
 PKG_CHECK_FORMAT_SECURITY:=0
 
 PKG_LICENSE:=GPL-2.0




More information about the lede-commits mailing list