@@ -26,13 +26,35 @@ auto &Sec =
26
26
27
27
auto ArmCfg = getArmConfigForCPUArch(ARMBuildAttrs::v7);
28
28
29
+ constexpr uint64_t DataAlignment = 4 ;
29
30
constexpr uint64_t ArmAlignment = 4 ;
30
31
constexpr uint64_t ThumbAlignment = 2 ;
31
32
constexpr uint64_t AlignmentOffset = 0 ;
32
33
33
34
constexpr orc::ExecutorAddrDiff SymbolOffset = 0 ;
34
35
constexpr orc::ExecutorAddrDiff SymbolSize = 4 ;
35
36
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
+
36
58
TEST (AArch32_ELF, readAddendArmErrors) {
37
59
38
60
constexpr orc::ExecutorAddr B1DummyAddr (0x1000 );
@@ -44,12 +66,6 @@ TEST(AArch32_ELF, readAddendArmErrors) {
44
66
sizeof (ArmWord));
45
67
auto &BArm = G->createContentBlock (Sec, ArmContent, B1DummyAddr, ArmAlignment,
46
68
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" )));
53
69
54
70
for (Edge::Kind K = FirstArmRelocation; K < LastArmRelocation; K += 1 ) {
55
71
EXPECT_THAT_EXPECTED (readAddend (*G, BArm, SymbolOffset, K, ArmCfg),
0 commit comments