]> git.ipfire.org Git - thirdparty/openembedded/openembedded-core-contrib.git/commitdiff
rust-target-config: handle softfp TARGET_FPU as soft
authorMartin Jansa <martin.jansa@gmail.com>
Sat, 12 Apr 2025 07:35:09 +0000 (09:35 +0200)
committerMartin Jansa <martin.jansa@gmail.com>
Fri, 1 Aug 2025 07:34:35 +0000 (09:34 +0200)
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

meta/classes-recipe/rust-target-config.bbclass

index cac6e90a9e46321be33ea2a2d3ff8b6d8d890557..3d270a0d8a1b59805477f776d58281aba081cc14 100644 (file)
@@ -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"