[llvm] Implements PGOBBAddrMap in Object and ObjectYAML with tests [1/5] (PR #71750)
Rahman Lavaee via llvm-commits
llvm-commits at lists.llvm.org
Tue Nov 28 13:42:44 PST 2023
================
@@ -744,6 +745,386 @@ TEST(ELFObjectFileTest, ReadBBAddrMap) {
Section1BBAddrMaps);
}
+// Tests for error paths of the ELFFile::decodeBBAddrMap with PGOBBAddrMap API.
+TEST(ELFObjectFileTest, InvalidDecodePGOBBAddrMap) {
+ if (IsHostWindows())
+ GTEST_SKIP();
+ StringRef CommonYamlString(R"(
+--- !ELF
+FileHeader:
+ Class: ELFCLASS64
+ Data: ELFDATA2LSB
+ Type: ET_EXEC
+Sections:
+ - Type: SHT_LLVM_BB_ADDR_MAP
+ Name: .llvm_bb_addr_map
+ Entries:
+ - Address: 0x11111
+)");
+
+ auto DoCheck = [&](StringRef YamlString, const char *ErrMsg) {
+ SmallString<0> Storage;
+ Expected<ELFObjectFile<ELF64LE>> ElfOrErr =
+ toBinary<ELF64LE>(Storage, YamlString);
+ ASSERT_THAT_EXPECTED(ElfOrErr, Succeeded());
+ const ELFFile<ELF64LE> &Elf = ElfOrErr->getELFFile();
+
+ Expected<const typename ELF64LE::Shdr *> BBAddrMapSecOrErr =
+ Elf.getSection(1);
+ ASSERT_THAT_EXPECTED(BBAddrMapSecOrErr, Succeeded());
+
+ std::vector<PGOAnalysisMap> PGOAnalyses;
+ EXPECT_THAT_ERROR(
+ Elf.decodeBBAddrMap(**BBAddrMapSecOrErr, nullptr, &PGOAnalyses)
+ .takeError(),
+ FailedWithMessage(ErrMsg));
+ };
+
+ // Check that we can detect unsupported versions that is too low
----------------
rlavaee wrote:
"versions that are too old"
https://github.com/llvm/llvm-project/pull/71750
More information about the llvm-commits
mailing list