rust: fix build with glibc, ARM and hard floats
authorDrew Young <dyoung@viridiparente.com>
Mon, 9 Oct 2023 21:19:50 +0000 (17:19 -0400)
committerTianling Shen <cnsztl@gmail.com>
Mon, 16 Oct 2023 01:01:43 +0000 (09:01 +0800)
Patch the target triple for Rust with glibc to include hard floating
point support.

The GNU target triple used elsewhere does not include hard float support,
instead `-mfloat-abi=hard` is passed separately. For Rust it must be
included in the target triple. This was already being done for musl,
this commit adds the same patching for glibc.

Without this patch Rust compilation fails with an error like this
(abbreviated to fit the line length):

    ld: error: libstd.so uses VFP register arguments, ... does not
    ld: failed to merge target specific data of file ...

Signed-off-by: Drew Young <dyoung@viridiparente.com>
lang/rust/rust-values.mk

index 4c21c27522232bd31c5881bf6e74e0b87df81598..7a4d1fcf888bf6235b29d527257cd54061b57749 100644 (file)
@@ -52,6 +52,7 @@ ifeq ($(ARCH),arm)
 
   ifeq ($(CONFIG_HAS_FPU),y)
     RUSTC_TARGET_ARCH:=$(subst musleabi,musleabihf,$(RUSTC_TARGET_ARCH))
+    RUSTC_TARGET_ARCH:=$(subst gnueabi,gnueabihf,$(RUSTC_TARGET_ARCH))
   endif
 endif