diff options
Diffstat (limited to 'llvm/lib/ExecutionEngine')
-rw-r--r-- | llvm/lib/ExecutionEngine/JITLink/MachOAtomGraphBuilder.cpp | 6 | ||||
-rw-r--r-- | llvm/lib/ExecutionEngine/JITLink/MachO_x86_64.cpp | 14 |
2 files changed, 11 insertions, 9 deletions
diff --git a/llvm/lib/ExecutionEngine/JITLink/MachOAtomGraphBuilder.cpp b/llvm/lib/ExecutionEngine/JITLink/MachOAtomGraphBuilder.cpp index 5feff393ebd..215742c0e52 100644 --- a/llvm/lib/ExecutionEngine/JITLink/MachOAtomGraphBuilder.cpp +++ b/llvm/lib/ExecutionEngine/JITLink/MachOAtomGraphBuilder.cpp @@ -338,21 +338,21 @@ Error MachOAtomGraphBuilder::addNonCustomAtoms() { auto AltEntryStartItr = AltEntryStarts.find(&*AltEntryPred); if (AltEntryStartItr != AltEntryStarts.end()) { // If the predecessor was an alt-entry atom then re-use its value. - AltEntryStarts[DA] = AltEntryStartItr->second; LLVM_DEBUG({ dbgs() << " " << *DA << " -> " << *AltEntryStartItr->second << " (based on existing entry for " << *AltEntryPred << ")\n"; }); + AltEntryStarts[DA] = AltEntryStartItr->second; } else { // If the predecessor does not have an entry then add an entry for this // atom (i.e. the alt_entry atom) and a self-reference entry for the /// predecessory atom that is the start of this chain. - AltEntryStarts[&*AltEntryPred] = &*AltEntryPred; - AltEntryStarts[DA] = &*AltEntryPred; LLVM_DEBUG({ dbgs() << " " << *AltEntryPred << " -> " << *AltEntryPred << "\n" << " " << *DA << " -> " << *AltEntryPred << "\n"; }); + AltEntryStarts[&*AltEntryPred] = &*AltEntryPred; + AltEntryStarts[DA] = &*AltEntryPred; } } diff --git a/llvm/lib/ExecutionEngine/JITLink/MachO_x86_64.cpp b/llvm/lib/ExecutionEngine/JITLink/MachO_x86_64.cpp index d9472e40ead..2f0eaf206e9 100644 --- a/llvm/lib/ExecutionEngine/JITLink/MachO_x86_64.cpp +++ b/llvm/lib/ExecutionEngine/JITLink/MachO_x86_64.cpp @@ -448,11 +448,13 @@ private: return MachOAtomGraphBuilder_x86_64(**MachOObj).buildGraph(); } - static Error targetOutOfRangeError(const Edge &E) { + static Error targetOutOfRangeError(const Atom &A, const Edge &E) { std::string ErrMsg; { raw_string_ostream ErrStream(ErrMsg); - ErrStream << "Target \"" << E.getTarget() << "\" out of range"; + ErrStream << "Relocation target out of range: "; + printEdge(ErrStream, A, E, getMachOX86RelocationKindName(E.getKind())); + ErrStream << "\n"; } return make_error<JITLinkError>(std::move(ErrMsg)); } @@ -471,7 +473,7 @@ private: E.getTarget().getAddress() - (FixupAddress + 4) + E.getAddend(); if (Value < std::numeric_limits<int32_t>::min() || Value > std::numeric_limits<int32_t>::max()) - return targetOutOfRangeError(E); + return targetOutOfRangeError(A, E); *(little32_t *)FixupPtr = Value; break; } @@ -489,7 +491,7 @@ private: E.getTarget().getAddress() - (FixupAddress + Delta) + E.getAddend(); if (Value < std::numeric_limits<int32_t>::min() || Value > std::numeric_limits<int32_t>::max()) - return targetOutOfRangeError(E); + return targetOutOfRangeError(A, E); *(little32_t *)FixupPtr = Value; break; } @@ -501,7 +503,7 @@ private: E.getTarget().getAddress() - (FixupAddress + Delta) + E.getAddend(); if (Value < std::numeric_limits<int32_t>::min() || Value > std::numeric_limits<int32_t>::max()) - return targetOutOfRangeError(E); + return targetOutOfRangeError(A, E); *(little32_t *)FixupPtr = Value; break; } @@ -518,7 +520,7 @@ private: if (E.getKind() == Delta32 || E.getKind() == NegDelta32) { if (Value < std::numeric_limits<int32_t>::min() || Value > std::numeric_limits<int32_t>::max()) - return targetOutOfRangeError(E); + return targetOutOfRangeError(A, E); *(little32_t *)FixupPtr = Value; } else *(little64_t *)FixupPtr = Value; |