From: Martin Jansa Date: Sat, 12 Apr 2025 07:35:09 +0000 (+0200) Subject: rust-target-config: handle softfp TARGET_FPU as soft X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=3e458037f8f632f334ae72c66c7e671b70843a79;p=thirdparty%2Fopenembedded%2Fopenembedded-core-contrib.git rust-target-config: handle softfp TARGET_FPU as soft https://github.com/llvm/llvm-project/issues/55755 https://reviews.llvm.org/D135680 unfortunately this leads to segfaults: http://errors.yoctoproject.org/Errors/Details/852156/ [ 3376.010236] lto cgu.05[629586]: segfault at 8 ip 00007fda21275ea8 sp 00007fda061f7978 error 4 [ 3376.010243] lto cgu.06[629589]: segfault at 8 ip 00007fda21275ea8 sp 00007fda05df5978 error 4 [ 3376.010250] in librustc_driver-9603b88fd542d97b.so[2075ea8,7fda1fade000+648a000] likely on CPU 17 (core 17, socket 0) [ 3376.010258] likely on CPU 6 (core 6, socket 0) [ 3376.010264] Code: 00 00 f3 0f 1e fa 48 83 ec 08 e8 53 4d cf 00 48 83 c4 08 48 89 c2 31 c0 c3 66 0f 1f 84 00 00 00 00 00 f3 0f 1e fa 48 8b 4f 08 <0f> b6 51 08 89 d0 83 ea 12 83 fa 01 77 0b 48 8b 41 10 48 8b 00 0f [ 3376.010266] Code: 00 00 f3 0f 1e fa 48 83 ec 08 e8 53 4d cf 00 48 83 c4 08 48 89 c2 31 c0 c3 66 0f 1f 84 00 00 00 00 00 f3 0f 1e fa 48 8b 4f 08 <0f> b6 51 08 89 d0 83 ea 12 83 fa 01 77 0b 48 8b 41 10 48 8b 00 0f [ 3376.010267] lto cgu.10[629594]: segfault at 8 ip 00007fda21275ea8 sp 00007fda047ea978 error 4 in librustc_driver-9603b88fd542d97b.so[2075ea8,7fda1fade000+648a000] likely on CPU 41 (core 9, socket 0) [ 3376.010290] Code: 00 00 f3 0f 1e fa 48 83 ec 08 e8 53 4d cf 00 48 83 c4 08 48 89 c2 31 c0 c3 66 0f 1f 84 00 00 00 00 00 f3 0f 1e fa 48 8b 4f 08 <0f> b6 51 08 89 d0 83 ea 12 83 fa 01 77 0b 48 8b 41 10 48 8b 00 0f [ 3377.452402] lto cgu.0[630627]: segfault at 0 ip 00007f0953e71df4 sp 00007f09510174f8 error 4 in librustc_driver-9603b88fd542d97b.so[1471df4,7f09532de000+648a000] likely on CPU 25 (core 25, socket 0) [ 3377.452423] Code: 48 09 c7 48 09 d0 85 c9 48 0f 45 c7 48 83 c6 10 48 83 3e 00 75 e0 c3 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 44 00 00 f3 0f 1e fa <48> 8b 06 0f b7 50 18 48 8d 05 5e d9 15 06 48 8d 04 d0 c3 66 0f 1f [ 6279.891921] lto cgu.03[2567334]: segfault at 0 ip 00007f4c72a7bdf4 sp 00007f4c547f24f8 error 4 likely on CPU 42 (core 10, socket 0) [ 6279.891932] Code: 48 09 c7 48 09 d0 85 c9 48 0f 45 c7 48 83 c6 10 48 83 3e 00 75 e0 c3 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 44 00 00 f3 0f 1e fa <48> 8b 06 0f b7 50 18 48 8d 05 be ad 1a 06 48 8d 04 d0 c3 66 0f 1f [ 6280.641897] lto cgu.0[2567879]: segfault at 0 ip 00007fa75de7bdf4 sp 00007fa758c5c4f8 error 4 in librustc_driver-9603b88fd542d97b.so[147bdf4,7fa75d2de000+64e1000] likely on CPU 49 (core 17, socket 0) [ 6280.641917] Code: 48 09 c7 48 09 d0 85 c9 48 0f 45 c7 48 83 c6 10 48 83 3e 00 75 e0 c3 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 44 00 00 f3 0f 1e fa <48> 8b 06 0f b7 50 18 48 8d 05 be ad 1a 06 48 8d 04 d0 c3 66 0f 1f [ 6434.858655] lto cgu.03[2582279]: segfault at 0 ip 00007f9df727bdf4 sp 00007f9dd4ff64f8 error 4 in librustc_driver-9603b88fd542d97b.so[147bdf4,7f9df66de000+64e1000] likely on CPU 45 (core 13, socket 0) [ 6434.858671] Code: 48 09 c7 48 09 d0 85 c9 48 0f 45 c7 48 83 c6 10 48 83 3e 00 75 e0 c3 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 44 00 00 f3 0f 1e fa <48> 8b 06 0f b7 50 18 48 8d 05 be ad 1a 06 48 8d 04 d0 c3 66 0f 1f [ 6435.611109] lto cgu.0[2582914]: segfault at 0 ip 00007f33b347bdf4 sp 00007f33b06174f8 error 4 in librustc_driver-9603b88fd542d97b.so[147bdf4,7f33b28de000+64e1000] likely on CPU 57 (core 25, socket 0) [ 6435.611123] Code: 48 09 c7 48 09 d0 85 c9 48 0f 45 c7 48 83 c6 10 48 83 3e 00 75 e0 c3 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 44 00 00 f3 0f 1e fa <48> 8b 06 0f b7 50 18 48 8d 05 be ad 1a 06 48 8d 04 d0 c3 66 0f 1f [ 6701.046463] lto cgu.11[2898855]: segfault at 8 ip 00007f41608939e8 sp 00007f414c262168 error 4 likely on CPU 33 (core 1, socket 0) [ 6701.046471] lto cgu.06[2898852]: segfault at 8 ip 00007f41608939e8 sp 00007f414fb9a168 error 4 [ 6701.046482] in librustc_driver-9603b88fd542d97b.so[20939e8,7f415f0de000+64e1000] [ 6701.046482] Code: 00 00 f3 0f 1e fa 48 83 ec 08 e8 b3 12 d1 00 48 83 c4 08 48 89 c2 31 c0 c3 66 0f 1f 84 00 00 00 00 00 f3 0f 1e fa 48 8b 4f 08 <0f> b6 51 08 89 d0 83 ea 12 83 fa 01 77 0b 48 8b 41 10 48 8b 00 0f [ 6701.046488] likely on CPU 59 (core 27, socket 0) [ 6701.046488] lto cgu.03[2898857]: segfault at 8 ip 00007f4160893a68 sp 00007f41419fa9c8 error 4 [ 6701.046493] Code: 00 00 f3 0f 1e fa 48 83 ec 08 e8 b3 12 d1 00 48 83 c4 08 48 89 c2 31 c0 c3 66 0f 1f 84 00 00 00 00 00 f3 0f 1e fa 48 8b 4f 08 <0f> b6 51 08 89 d0 83 ea 12 83 fa 01 77 0b 48 8b 41 10 48 8b 00 0f [ 6701.046500] in librustc_driver-9603b88fd542d97b.so[2093a68,7f415f0de000+64e1000] likely on CPU 40 (core 8, socket 0) [ 6701.046508] Code: b6 50 08 80 fa 0d 0f 94 c0 c3 0f 1f 84 00 00 00 00 00 f3 0f 1e fa 48 8b 47 08 80 78 08 0d 0f 94 c0 c3 f3 0f 1e fa 48 8b 47 08 <0f> b6 40 08 83 e8 12 83 f8 01 0f 96 c0 c3 66 2e 0f 1f 84 00 00 00 [ 6701.896014] lto cgu.0[2902227]: segfault at 0 ip 00007fb59747bdf4 sp 00007fb5945c34f8 error 4 in librustc_driver-9603b88fd542d97b.so[147bdf4,7fb5968de000+64e1000] likely on CPU 5 (core 5, socket 0) [ 6701.896029] Code: 48 09 c7 48 09 d0 85 c9 48 0f 45 c7 48 83 c6 10 48 83 3e 00 75 e0 c3 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 44 00 00 f3 0f 1e fa <48> 8b 06 0f b7 50 18 48 8d 05 be ad 1a 06 48 8d 04 d0 c3 66 0f 1f --- diff --git a/meta/classes-recipe/rust-target-config.bbclass b/meta/classes-recipe/rust-target-config.bbclass index cac6e90a9e..3d270a0d8a 100644 --- a/meta/classes-recipe/rust-target-config.bbclass +++ b/meta/classes-recipe/rust-target-config.bbclass @@ -145,7 +145,7 @@ def llvm_features_from_target_fpu(d): # ABI. There is no option for hard. fpu = d.getVar('TARGET_FPU') - return ["+soft-float"] if fpu == "soft" else [] + return ["+soft-float"] if fpu == "soft" or fpu == "softfp" else [] def llvm_features(d): return ','.join(llvm_features_from_tune(d) + @@ -409,7 +409,7 @@ def rust_gen_target(d, thing, wd, arch): if features != "": tspec['features'] = features fpu = d.getVar('TARGET_FPU') - if fpu == "soft": + if fpu == "soft" or fpu == "softfp": tspec['llvm-floatabi'] = "soft" elif fpu == "hard": tspec['llvm-floatabi'] = "hard"