Skip to content

Commit 0fea00d

Browse files
[JITLink][AArch32] Split invalid edge kind test out into readAddendDataErrors
This test actually exercises the readAddendData() function.
1 parent fcf5ac8 commit 0fea00d

File tree

1 file changed

+22
-6
lines changed

1 file changed

+22
-6
lines changed

llvm/unittests/ExecutionEngine/JITLink/AArch32ErrorTests.cpp

Lines changed: 22 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -26,13 +26,35 @@ auto &Sec =
2626

2727
auto ArmCfg = getArmConfigForCPUArch(ARMBuildAttrs::v7);
2828

29+
constexpr uint64_t DataAlignment = 4;
2930
constexpr uint64_t ArmAlignment = 4;
3031
constexpr uint64_t ThumbAlignment = 2;
3132
constexpr uint64_t AlignmentOffset = 0;
3233

3334
constexpr orc::ExecutorAddrDiff SymbolOffset = 0;
3435
constexpr orc::ExecutorAddrDiff SymbolSize = 4;
3536

37+
template <size_t sizeOfArray>
38+
ArrayRef<char> toArrayRefChar(const uint8_t (&Zeros)[sizeOfArray]) {
39+
return ArrayRef<char>(reinterpret_cast<const char *>(&Zeros), sizeof(Zeros));
40+
}
41+
42+
TEST(AArch32_ELF, readAddendDataErrors) {
43+
constexpr uint64_t ZerosOffset = 0;
44+
const uint8_t Zeros[] = {0x00, 0x00, 0x00, 0x00};
45+
constexpr orc::ExecutorAddr ZerosBlockAddr(0x0000);
46+
auto &ZerosBlock =
47+
G->createContentBlock(Sec, toArrayRefChar(Zeros), ZerosBlockAddr,
48+
DataAlignment, AlignmentOffset);
49+
50+
// Invalid edge kind is the only error we can raise here right now.
51+
Edge::Kind Invalid = Edge::GenericEdgeKind::Invalid;
52+
EXPECT_THAT_EXPECTED(readAddend(*G, ZerosBlock, ZerosOffset, Invalid, ArmCfg),
53+
FailedWithMessage(testing::HasSubstr(
54+
"can not read implicit addend for aarch32 edge kind "
55+
"INVALID RELOCATION")));
56+
}
57+
3658
TEST(AArch32_ELF, readAddendArmErrors) {
3759

3860
constexpr orc::ExecutorAddr B1DummyAddr(0x1000);
@@ -44,12 +66,6 @@ TEST(AArch32_ELF, readAddendArmErrors) {
4466
sizeof(ArmWord));
4567
auto &BArm = G->createContentBlock(Sec, ArmContent, B1DummyAddr, ArmAlignment,
4668
AlignmentOffset);
47-
Edge::Kind Invalid = Edge::GenericEdgeKind::Invalid;
48-
49-
EXPECT_THAT_EXPECTED(readAddend(*G, BArm, SymbolOffset, Invalid, ArmCfg),
50-
FailedWithMessage(testing::HasSubstr(
51-
"can not read implicit addend for aarch32 edge kind "
52-
"INVALID RELOCATION")));
5369

5470
for (Edge::Kind K = FirstArmRelocation; K < LastArmRelocation; K += 1) {
5571
EXPECT_THAT_EXPECTED(readAddend(*G, BArm, SymbolOffset, K, ArmCfg),

0 commit comments

Comments
 (0)