[llvm] 0fea00d - [JITLink][AArch32] Split invalid edge kind test out into readAddendDataErrors
Stefan Gränitz via llvm-commits
llvm-commits at lists.llvm.org
Sat Nov 25 05:09:03 PST 2023
Author: Stefan Gränitz
Date: 2023-11-25T14:08:17+01:00
New Revision: 0fea00d48bcd2368f21ecbca80833093f3a96e64
URL: https://github.com/llvm/llvm-project/commit/0fea00d48bcd2368f21ecbca80833093f3a96e64
DIFF: https://github.com/llvm/llvm-project/commit/0fea00d48bcd2368f21ecbca80833093f3a96e64.diff
LOG: [JITLink][AArch32] Split invalid edge kind test out into readAddendDataErrors
This test actually exercises the readAddendData() function.
Added:
Modified:
llvm/unittests/ExecutionEngine/JITLink/AArch32ErrorTests.cpp
Removed:
################################################################################
diff --git a/llvm/unittests/ExecutionEngine/JITLink/AArch32ErrorTests.cpp b/llvm/unittests/ExecutionEngine/JITLink/AArch32ErrorTests.cpp
index f46389136607ae0..0f7c611787aab18 100644
--- a/llvm/unittests/ExecutionEngine/JITLink/AArch32ErrorTests.cpp
+++ b/llvm/unittests/ExecutionEngine/JITLink/AArch32ErrorTests.cpp
@@ -26,6 +26,7 @@ auto &Sec =
auto ArmCfg = getArmConfigForCPUArch(ARMBuildAttrs::v7);
+constexpr uint64_t DataAlignment = 4;
constexpr uint64_t ArmAlignment = 4;
constexpr uint64_t ThumbAlignment = 2;
constexpr uint64_t AlignmentOffset = 0;
@@ -33,6 +34,27 @@ constexpr uint64_t AlignmentOffset = 0;
constexpr orc::ExecutorAddrDiff SymbolOffset = 0;
constexpr orc::ExecutorAddrDiff SymbolSize = 4;
+template <size_t sizeOfArray>
+ArrayRef<char> toArrayRefChar(const uint8_t (&Zeros)[sizeOfArray]) {
+ return ArrayRef<char>(reinterpret_cast<const char *>(&Zeros), sizeof(Zeros));
+}
+
+TEST(AArch32_ELF, readAddendDataErrors) {
+ constexpr uint64_t ZerosOffset = 0;
+ const uint8_t Zeros[] = {0x00, 0x00, 0x00, 0x00};
+ constexpr orc::ExecutorAddr ZerosBlockAddr(0x0000);
+ auto &ZerosBlock =
+ G->createContentBlock(Sec, toArrayRefChar(Zeros), ZerosBlockAddr,
+ DataAlignment, AlignmentOffset);
+
+ // Invalid edge kind is the only error we can raise here right now.
+ Edge::Kind Invalid = Edge::GenericEdgeKind::Invalid;
+ EXPECT_THAT_EXPECTED(readAddend(*G, ZerosBlock, ZerosOffset, Invalid, ArmCfg),
+ FailedWithMessage(testing::HasSubstr(
+ "can not read implicit addend for aarch32 edge kind "
+ "INVALID RELOCATION")));
+}
+
TEST(AArch32_ELF, readAddendArmErrors) {
constexpr orc::ExecutorAddr B1DummyAddr(0x1000);
@@ -44,12 +66,6 @@ TEST(AArch32_ELF, readAddendArmErrors) {
sizeof(ArmWord));
auto &BArm = G->createContentBlock(Sec, ArmContent, B1DummyAddr, ArmAlignment,
AlignmentOffset);
- Edge::Kind Invalid = Edge::GenericEdgeKind::Invalid;
-
- EXPECT_THAT_EXPECTED(readAddend(*G, BArm, SymbolOffset, Invalid, ArmCfg),
- FailedWithMessage(testing::HasSubstr(
- "can not read implicit addend for aarch32 edge kind "
- "INVALID RELOCATION")));
for (Edge::Kind K = FirstArmRelocation; K < LastArmRelocation; K += 1) {
EXPECT_THAT_EXPECTED(readAddend(*G, BArm, SymbolOffset, K, ArmCfg),
More information about the llvm-commits
mailing list