diff options
Diffstat (limited to 'llvm/lib')
-rw-r--r-- | llvm/lib/ExecutionEngine/JITLink/ELF_aarch32.cpp | 5 | ||||
-rw-r--r-- | llvm/lib/ExecutionEngine/JITLink/aarch32.cpp | 26 |
2 files changed, 14 insertions, 17 deletions
diff --git a/llvm/lib/ExecutionEngine/JITLink/ELF_aarch32.cpp b/llvm/lib/ExecutionEngine/JITLink/ELF_aarch32.cpp index b6b6369..132989f 100644 --- a/llvm/lib/ExecutionEngine/JITLink/ELF_aarch32.cpp +++ b/llvm/lib/ExecutionEngine/JITLink/ELF_aarch32.cpp @@ -173,14 +173,13 @@ private: auto FixupAddress = orc::ExecutorAddr(FixupSect.sh_addr) + Rel.r_offset; Edge::OffsetT Offset = FixupAddress - BlockToFix.getAddress(); - Edge E(*Kind, Offset, *GraphSymbol, 0); Expected<int64_t> Addend = - aarch32::readAddend(*Base::G, BlockToFix, E, ArmCfg); + aarch32::readAddend(*Base::G, BlockToFix, Offset, *Kind, ArmCfg); if (!Addend) return Addend.takeError(); - E.setAddend(*Addend); + Edge E(*Kind, Offset, *GraphSymbol, *Addend); LLVM_DEBUG({ dbgs() << " "; printEdge(dbgs(), BlockToFix, E, getELFAArch32EdgeKindName(*Kind)); diff --git a/llvm/lib/ExecutionEngine/JITLink/aarch32.cpp b/llvm/lib/ExecutionEngine/JITLink/aarch32.cpp index c3823f9..b80b12e 100644 --- a/llvm/lib/ExecutionEngine/JITLink/aarch32.cpp +++ b/llvm/lib/ExecutionEngine/JITLink/aarch32.cpp @@ -304,12 +304,11 @@ void writeImmediate(WritableArmRelocation &R, uint32_t Imm) { R.Wd = (R.Wd & ~Mask) | Imm; } -Expected<int64_t> readAddendData(LinkGraph &G, Block &B, const Edge &E) { +Expected<int64_t> readAddendData(LinkGraph &G, Block &B, Edge::OffsetT Offset, + Edge::Kind Kind) { llvm::endianness Endian = G.getEndianness(); - - Edge::Kind Kind = E.getKind(); const char *BlockWorkingMem = B.getContent().data(); - const char *FixupPtr = BlockWorkingMem + E.getOffset(); + const char *FixupPtr = BlockWorkingMem + Offset; switch (Kind) { case Data_Delta32: @@ -319,13 +318,13 @@ Expected<int64_t> readAddendData(LinkGraph &G, Block &B, const Edge &E) { return make_error<JITLinkError>( "In graph " + G.getName() + ", section " + B.getSection().getName() + " can not read implicit addend for aarch32 edge kind " + - G.getEdgeKindName(E.getKind())); + G.getEdgeKindName(Kind)); } } -Expected<int64_t> readAddendArm(LinkGraph &G, Block &B, const Edge &E) { - ArmRelocation R(B.getContent().data() + E.getOffset()); - Edge::Kind Kind = E.getKind(); +Expected<int64_t> readAddendArm(LinkGraph &G, Block &B, Edge::OffsetT Offset, + Edge::Kind Kind) { + ArmRelocation R(B.getContent().data() + Offset); switch (Kind) { case Arm_Call: @@ -352,14 +351,13 @@ Expected<int64_t> readAddendArm(LinkGraph &G, Block &B, const Edge &E) { return make_error<JITLinkError>( "In graph " + G.getName() + ", section " + B.getSection().getName() + " can not read implicit addend for aarch32 edge kind " + - G.getEdgeKindName(E.getKind())); + G.getEdgeKindName(Kind)); } } -Expected<int64_t> readAddendThumb(LinkGraph &G, Block &B, const Edge &E, - const ArmConfig &ArmCfg) { - ThumbRelocation R(B.getContent().data() + E.getOffset()); - Edge::Kind Kind = E.getKind(); +Expected<int64_t> readAddendThumb(LinkGraph &G, Block &B, Edge::OffsetT Offset, + Edge::Kind Kind, const ArmConfig &ArmCfg) { + ThumbRelocation R(B.getContent().data() + Offset); switch (Kind) { case Thumb_Call: @@ -394,7 +392,7 @@ Expected<int64_t> readAddendThumb(LinkGraph &G, Block &B, const Edge &E, return make_error<JITLinkError>( "In graph " + G.getName() + ", section " + B.getSection().getName() + " can not read implicit addend for aarch32 edge kind " + - G.getEdgeKindName(E.getKind())); + G.getEdgeKindName(Kind)); } } |