diff options
author | Eymen Ünay <eymenunay@outlook.com> | 2023-09-09 12:58:50 -0700 |
---|---|---|
committer | Lang Hames <lhames@gmail.com> | 2023-09-09 13:10:38 -0700 |
commit | 9c017a99d5701e01c87ccca86246364a5344548f (patch) | |
tree | 6316eaafa4784bb030361dbee5e6c1bf3c58bc57 /llvm/tools/llvm-jitlink | |
parent | eea232da827abae1a4fd71a0fb1f4d239d7b2f6a (diff) | |
download | llvm-9c017a99d5701e01c87ccca86246364a5344548f.zip llvm-9c017a99d5701e01c87ccca86246364a5344548f.tar.gz llvm-9c017a99d5701e01c87ccca86246364a5344548f.tar.bz2 |
[jitlink][rtdyld][checker] Re-apply 4b17c81d5a5 with fixes.
This re-applies 4b17c81d5a5, "[jitlink/rtdydl][checker] Add TargetFlag
dependent disassembler switching support", which was reverted in
4871a9ca546 due to bot failures.
The patch has been updated to add missing plumbing for Subtarget Features and
a CPU string, which should fix the failing tests.
https://reviews.llvm.org/D158280
Diffstat (limited to 'llvm/tools/llvm-jitlink')
-rw-r--r-- | llvm/tools/llvm-jitlink/llvm-jitlink-coff.cpp | 11 | ||||
-rw-r--r-- | llvm/tools/llvm-jitlink/llvm-jitlink-elf.cpp | 11 | ||||
-rw-r--r-- | llvm/tools/llvm-jitlink/llvm-jitlink-macho.cpp | 13 | ||||
-rw-r--r-- | llvm/tools/llvm-jitlink/llvm-jitlink.cpp | 14 |
4 files changed, 28 insertions, 21 deletions
diff --git a/llvm/tools/llvm-jitlink/llvm-jitlink-coff.cpp b/llvm/tools/llvm-jitlink/llvm-jitlink-coff.cpp index 415aee7..283e655 100644 --- a/llvm/tools/llvm-jitlink/llvm-jitlink-coff.cpp +++ b/llvm/tools/llvm-jitlink/llvm-jitlink-coff.cpp @@ -118,7 +118,8 @@ Error registerCOFFGraphInfo(Session &S, LinkGraph &G) { if (Sym->getSize() != 0) { if (auto TS = getCOFFGOTTarget(G, Sym->getBlock())) FileInfo.GOTEntryInfos[TS->getName()] = { - Sym->getSymbolContent(), Sym->getAddress().getValue()}; + Sym->getSymbolContent(), Sym->getAddress().getValue(), + Sym->getTargetFlags()}; else return TS.takeError(); } @@ -130,7 +131,8 @@ Error registerCOFFGraphInfo(Session &S, LinkGraph &G) { if (auto TS = getCOFFStubTarget(G, Sym->getBlock())) FileInfo.StubInfos[TS->getName()] = {Sym->getSymbolContent(), - Sym->getAddress().getValue()}; + Sym->getAddress().getValue(), + Sym->getTargetFlags()}; else return TS.takeError(); SectionContainsContent = true; @@ -143,7 +145,8 @@ Error registerCOFFGraphInfo(Session &S, LinkGraph &G) { SectionContainsZeroFill = true; } else { S.SymbolInfos[Sym->getName()] = {Sym->getSymbolContent(), - Sym->getAddress().getValue()}; + Sym->getAddress().getValue(), + Sym->getTargetFlags()}; SectionContainsContent = true; } } @@ -164,7 +167,7 @@ Error registerCOFFGraphInfo(Session &S, LinkGraph &G) { else FileInfo.SectionInfos[Sec.getName()] = { ArrayRef<char>(FirstSym->getBlock().getContent().data(), SecSize), - SecAddr.getValue()}; + SecAddr.getValue(), FirstSym->getTargetFlags()}; } return Error::success(); diff --git a/llvm/tools/llvm-jitlink/llvm-jitlink-elf.cpp b/llvm/tools/llvm-jitlink/llvm-jitlink-elf.cpp index 5200dbc..7881660 100644 --- a/llvm/tools/llvm-jitlink/llvm-jitlink-elf.cpp +++ b/llvm/tools/llvm-jitlink/llvm-jitlink-elf.cpp @@ -120,7 +120,8 @@ Error registerELFGraphInfo(Session &S, LinkGraph &G) { if (Sym->getSize() != 0) { if (auto TS = getELFGOTTarget(G, Sym->getBlock())) FileInfo.GOTEntryInfos[TS->getName()] = { - Sym->getSymbolContent(), Sym->getAddress().getValue()}; + Sym->getSymbolContent(), Sym->getAddress().getValue(), + Sym->getTargetFlags()}; else return TS.takeError(); } @@ -132,7 +133,8 @@ Error registerELFGraphInfo(Session &S, LinkGraph &G) { if (auto TS = getELFStubTarget(G, Sym->getBlock())) FileInfo.StubInfos[TS->getName()] = {Sym->getSymbolContent(), - Sym->getAddress().getValue()}; + Sym->getAddress().getValue(), + Sym->getTargetFlags()}; else return TS.takeError(); SectionContainsContent = true; @@ -145,7 +147,8 @@ Error registerELFGraphInfo(Session &S, LinkGraph &G) { SectionContainsZeroFill = true; } else { S.SymbolInfos[Sym->getName()] = {Sym->getSymbolContent(), - Sym->getAddress().getValue()}; + Sym->getAddress().getValue(), + Sym->getTargetFlags()}; SectionContainsContent = true; } } @@ -170,7 +173,7 @@ Error registerELFGraphInfo(Session &S, LinkGraph &G) { else FileInfo.SectionInfos[Sec.getName()] = { ArrayRef<char>(FirstSym->getBlock().getContent().data(), SecSize), - SecAddr.getValue()}; + SecAddr.getValue(), FirstSym->getTargetFlags()}; } return Error::success(); diff --git a/llvm/tools/llvm-jitlink/llvm-jitlink-macho.cpp b/llvm/tools/llvm-jitlink/llvm-jitlink-macho.cpp index bcb2f25..7dcadd9 100644 --- a/llvm/tools/llvm-jitlink/llvm-jitlink-macho.cpp +++ b/llvm/tools/llvm-jitlink/llvm-jitlink-macho.cpp @@ -117,8 +117,9 @@ Error registerMachOGraphInfo(Session &S, LinkGraph &G) { inconvertibleErrorCode()); if (auto TS = getMachOGOTTarget(G, Sym->getBlock())) - FileInfo.GOTEntryInfos[TS->getName()] = { - Sym->getSymbolContent(), Sym->getAddress().getValue()}; + FileInfo.GOTEntryInfos[TS->getName()] = {Sym->getSymbolContent(), + Sym->getAddress().getValue(), + Sym->getTargetFlags()}; else return TS.takeError(); SectionContainsContent = true; @@ -129,7 +130,8 @@ Error registerMachOGraphInfo(Session &S, LinkGraph &G) { if (auto TS = getMachOStubTarget(G, Sym->getBlock())) FileInfo.StubInfos[TS->getName()] = {Sym->getSymbolContent(), - Sym->getAddress().getValue()}; + Sym->getAddress().getValue(), + Sym->getTargetFlags()}; else return TS.takeError(); SectionContainsContent = true; @@ -140,7 +142,8 @@ Error registerMachOGraphInfo(Session &S, LinkGraph &G) { SectionContainsZeroFill = true; } else { S.SymbolInfos[Sym->getName()] = {Sym->getSymbolContent(), - Sym->getAddress().getValue()}; + Sym->getAddress().getValue(), + Sym->getTargetFlags()}; SectionContainsContent = true; } } @@ -160,7 +163,7 @@ Error registerMachOGraphInfo(Session &S, LinkGraph &G) { else FileInfo.SectionInfos[Sec.getName()] = { ArrayRef<char>(FirstSym->getBlock().getContent().data(), SecSize), - SecAddr.getValue()}; + SecAddr.getValue(), FirstSym->getTargetFlags()}; } return Error::success(); diff --git a/llvm/tools/llvm-jitlink/llvm-jitlink.cpp b/llvm/tools/llvm-jitlink/llvm-jitlink.cpp index 00dd520..64806b5 100644 --- a/llvm/tools/llvm-jitlink/llvm-jitlink.cpp +++ b/llvm/tools/llvm-jitlink/llvm-jitlink.cpp @@ -1388,7 +1388,8 @@ static Error addAbsoluteSymbols(Session &S, return Err; // Register the absolute symbol with the session symbol infos. - S.SymbolInfos[Name] = {ArrayRef<char>(), Addr}; + S.SymbolInfos[Name] = {ArrayRef<char>(), Addr, + AbsDef.getFlags().getTargetFlags()}; } return Error::success(); @@ -1856,15 +1857,12 @@ getTargetInfo(const Triple &TT, std::move(MAI), std::move(Ctx), std::move(Disassembler), std::move(MII), std::move(MIA), std::move(InstPrinter)}; } - -static Error runChecks(Session &S) { +static Error runChecks(Session &S, Triple TT, SubtargetFeatures Features) { if (CheckFiles.empty()) return Error::success(); LLVM_DEBUG(dbgs() << "Running checks...\n"); - auto TI = getTargetInfo(S.ES.getTargetTriple(), S.Features); - auto IsSymbolValid = [&S](StringRef Symbol) { return S.isSymbolRegistered(Symbol); }; @@ -1888,7 +1886,7 @@ static Error runChecks(Session &S) { RuntimeDyldChecker Checker( IsSymbolValid, GetSymbolInfo, GetSectionInfo, GetStubInfo, GetGOTInfo, S.ES.getTargetTriple().isLittleEndian() ? support::little : support::big, - TI.Disassembler.get(), TI.InstPrinter.get(), dbgs()); + TT, StringRef(), Features, dbgs()); std::string CheckLineStart = "# " + CheckName + ":"; for (auto &CheckFile : CheckFiles) { @@ -2000,7 +1998,7 @@ int main(int argc, char *argv[]) { auto [TT, Features] = getFirstFileTripleAndFeatures(); ExitOnErr(sanitizeArguments(TT, argv[0])); - auto S = ExitOnErr(Session::Create(std::move(TT), std::move(Features))); + auto S = ExitOnErr(Session::Create(TT, Features)); enableStatistics(*S, !OrcRuntime.empty()); @@ -2036,7 +2034,7 @@ int main(int argc, char *argv[]) { exit(1); } - ExitOnErr(runChecks(*S)); + ExitOnErr(runChecks(*S, std::move(TT), std::move(Features))); int Result = 0; if (!NoExec) { |