diff --git a/lld/ELF/InputFiles.cpp b/lld/ELF/InputFiles.cpp index 4b4d7d6db93cd..2d3c216bc1679 100644 --- a/lld/ELF/InputFiles.cpp +++ b/lld/ELF/InputFiles.cpp @@ -1607,6 +1607,8 @@ static uint16_t getBitcodeMachineKind(StringRef path, const Triple &t) { case Triple::riscv32: case Triple::riscv64: return EM_RISCV; + case Triple::sparcv9: + return EM_SPARCV9; case Triple::x86: return t.isOSIAMCU() ? EM_IAMCU : EM_386; case Triple::x86_64: diff --git a/lld/test/ELF/lto/sparcv9.ll b/lld/test/ELF/lto/sparcv9.ll new file mode 100644 index 0000000000000..a4cdc6eafa403 --- /dev/null +++ b/lld/test/ELF/lto/sparcv9.ll @@ -0,0 +1,17 @@ +; REQUIRES: sparc +;; Test we can infer the e_machine value EM_SPARCV9 from a bitcode file. + +; RUN: llvm-as %s -o %t.bc +; RUN: ld.lld %t.bc -o %t +; RUN: llvm-readobj -h %t | FileCheck %s + +; CHECK Class: 64-bit +; CHECK: DataEncoding: BigEndian +; CHECK: Machine: EM_SPARCV9 + +target datalayout = "E-m:e-i64:64-n32:64-S128" +target triple = "sparc64-unknown-elf" + +define void @_start() { + ret void +}