Skip to content

Commit 412c6d1

Browse files
committed
[llvm-jitlink] Add paths to file-not-found errors.
1 parent ef61592 commit 412c6d1

File tree

1 file changed

+12
-8
lines changed

1 file changed

+12
-8
lines changed

llvm/tools/llvm-jitlink/llvm-jitlink.cpp

+12-8
Original file line numberDiff line numberDiff line change
@@ -267,6 +267,13 @@ class ConditionalPrintErr {
267267
bool C;
268268
};
269269

270+
Expected<std::unique_ptr<MemoryBuffer>> getFile(const Twine &FileName) {
271+
if (auto F = MemoryBuffer::getFile(FileName))
272+
return std::move(*F);
273+
else
274+
return createFileError(FileName, F.getError());
275+
}
276+
270277
void reportLLVMJITLinkError(Error Err) {
271278
handleAllErrors(
272279
std::move(Err),
@@ -1094,8 +1101,7 @@ Session::Session(std::unique_ptr<ExecutorProcessControl> EPC, Error &Err)
10941101
for (auto &HarnessFile : TestHarnesses) {
10951102
HarnessFiles.insert(HarnessFile);
10961103

1097-
auto ObjBuffer =
1098-
ExitOnErr(errorOrToExpected(MemoryBuffer::getFile(HarnessFile)));
1104+
auto ObjBuffer = ExitOnErr(getFile(HarnessFile));
10991105

11001106
auto ObjInterface =
11011107
ExitOnErr(getObjectFileInterface(ES, ObjBuffer->getMemBufferRef()));
@@ -1246,8 +1252,7 @@ static Triple getFirstFileTriple() {
12461252
static Triple FirstTT = []() {
12471253
assert(!InputFiles.empty() && "InputFiles can not be empty");
12481254
for (auto InputFile : InputFiles) {
1249-
auto ObjBuffer =
1250-
ExitOnErr(errorOrToExpected(MemoryBuffer::getFile(InputFile)));
1255+
auto ObjBuffer = ExitOnErr(getFile(InputFile));
12511256
switch (identify_magic(ObjBuffer->getBuffer())) {
12521257
case file_magic::elf_relocatable:
12531258
case file_magic::macho_object:
@@ -1456,7 +1461,7 @@ static Error addTestHarnesses(Session &S) {
14561461
LLVM_DEBUG(dbgs() << "Adding test harness objects...\n");
14571462
for (auto HarnessFile : TestHarnesses) {
14581463
LLVM_DEBUG(dbgs() << " " << HarnessFile << "\n");
1459-
auto ObjBuffer = errorOrToExpected(MemoryBuffer::getFile(HarnessFile));
1464+
auto ObjBuffer = getFile(HarnessFile);
14601465
if (!ObjBuffer)
14611466
return ObjBuffer.takeError();
14621467
if (auto Err = S.ObjLayer.add(*S.MainJD, std::move(*ObjBuffer)))
@@ -1480,7 +1485,7 @@ static Error addObjects(Session &S,
14801485
auto &JD = *std::prev(IdxToJD.lower_bound(InputFileArgIdx))->second;
14811486
LLVM_DEBUG(dbgs() << " " << InputFileArgIdx << ": \"" << InputFile
14821487
<< "\" to " << JD.getName() << "\n";);
1483-
auto ObjBuffer = errorOrToExpected(MemoryBuffer::getFile(InputFile));
1488+
auto ObjBuffer = getFile(InputFile);
14841489
if (!ObjBuffer)
14851490
return ObjBuffer.takeError();
14861491

@@ -1892,8 +1897,7 @@ static Error runChecks(Session &S) {
18921897

18931898
std::string CheckLineStart = "# " + CheckName + ":";
18941899
for (auto &CheckFile : CheckFiles) {
1895-
auto CheckerFileBuf =
1896-
ExitOnErr(errorOrToExpected(MemoryBuffer::getFile(CheckFile)));
1900+
auto CheckerFileBuf = ExitOnErr(getFile(CheckFile));
18971901
if (!Checker.checkAllRulesInBuffer(CheckLineStart, &*CheckerFileBuf))
18981902
ExitOnErr(make_error<StringError>(
18991903
"Some checks in " + CheckFile + " failed", inconvertibleErrorCode()));

0 commit comments

Comments
 (0)