mirror of
https://git.yoctoproject.org/git/poky
synced 2026-01-01 13:58:04 +00:00
rust-target-config: PPC64 targets require explicit ABI selection to avoid build failures with rustc.
Without a specified ABI, rustc panics with the following error:
| thread 'rustc' panicked at compiler/rustc_codegen_ssa/src/back/metadata.rs:394:21:
| No ABI specified for this PPC64 ELF target.
This issue was occuring because of the following Rust commit:
9c1180b623
As noted in the upstream changes:
If the flags do not correctly indicate the ABI,
linkers such as ld.lld assume that the ppc64 object files are always ELFv2,
which leads to broken binaries if ELFv1 is used for the object files.
Because of this, it is now required to explicitly specify the ABI for PPC64 targets
using one of the following:
"elfv1" => EF_PPC64_ABI_ELF_V1,
"elfv2" => EF_PPC64_ABI_ELF_V2,
If no ABI is specified, the Rust compiler will panic with the error:
No ABI specified for this PPC64 ELF target
To address this:
- Set 'elfv2' for powerpc64le (little-endian), which mandates ELFv2 ABI.
- Set 'elfv1' for powerpc64 (big-endian), which defaults to ELFv1 ABI.
(From OE-Core rev: 6cee30b7941c22eef52011b6bac0d3c0d7944abe)
Signed-off-by: Deepesh Varatharajan <Deepesh.Varatharajan@windriver.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
parent
4dabfb3f21
commit
b189b2fb86
|
|
@ -403,6 +403,10 @@ def rust_gen_target(d, thing, wd, arch):
|
|||
tspec['llvm-abiname'] = d.getVar('TUNE_RISCV_ABI')
|
||||
if "loongarch64" in tspec['llvm-target']:
|
||||
tspec['llvm-abiname'] = "lp64d"
|
||||
if "powerpc64le" in tspec['llvm-target']:
|
||||
tspec['llvm-abiname'] = "elfv2"
|
||||
if "powerpc64" in tspec['llvm-target']:
|
||||
tspec['llvm-abiname'] = "elfv1"
|
||||
tspec['vendor'] = "unknown"
|
||||
tspec['target-family'] = "unix"
|
||||
tspec['linker'] = "{}{}gcc".format(d.getVar('CCACHE'), prefix)
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user