[llvm] [ELF] Attempt to set the OS when using 'makeTriple()' (PR #76992)
Matt Arsenault via llvm-commits
llvm-commits at lists.llvm.org
Thu Jan 4 20:26:37 PST 2024
================
@@ -287,6 +291,30 @@ TEST(ELFObjectFileTest, MachineTestForXtensa) {
checkFormatAndArch(Data, Formats[Idx], Triple::xtensa);
}
+TEST(ELFObjectFileTest, CheckOSAndTriple) {
+ std::tuple<uint16_t, uint8_t, StringRef> Formats[] = {
+ {ELF::EM_AMDGPU, ELF::ELFOSABI_AMDGPU_HSA, "amdgcn-amd-amdhsa"},
+ {ELF::EM_X86_64, ELF::ELFOSABI_LINUX, "x86_64--linux"},
+ {ELF::EM_X86_64, ELF::ELFOSABI_NETBSD, "x86_64--netbsd"},
+ {ELF::EM_X86_64, ELF::ELFOSABI_HURD, "x86_64--hurd"},
+ {ELF::EM_X86_64, ELF::ELFOSABI_SOLARIS, "x86_64--solaris"},
+ {ELF::EM_X86_64, ELF::ELFOSABI_AIX, "x86_64--aix"},
+ {ELF::EM_X86_64, ELF::ELFOSABI_FREEBSD, "x86_64--freebsd"},
+ {ELF::EM_X86_64, ELF::ELFOSABI_OPENBSD, "x86_64--openbsd"},
+ {ELF::EM_CUDA, ELF::ELFOSABI_CUDA, "nvptx64-nvidia-cuda"}};
+ for (auto [Machine, OS, Triple] : Formats) {
+ const DataForTest D(ELF::ELFCLASS64, ELF::ELFDATA2LSB, Machine, OS,
+ ELF::EF_AMDGPU_MACH_AMDGCN_LAST);
+ Expected<std::unique_ptr<ObjectFile>> ELFObjOrErr =
+ object::ObjectFile::createELFObjectFile(
+ MemoryBufferRef(toStringRef(D.Data), "dummyELF"));
+ ASSERT_THAT_EXPECTED(ELFObjOrErr, Succeeded());
+
+ auto &ELFObj = **ELFObjOrErr;
+ ASSERT_EQ(ELFObj.makeTriple().getTriple(), Triple);
----------------
arsenm wrote:
EXPECT_EQ is sufficient. Also I think you need to swap the order to get the correct failure message
https://github.com/llvm/llvm-project/pull/76992
More information about the llvm-commits
mailing list