Skip to content

Commit 81e8b7d

Browse files
committed
Thread Expected<...> up from libObject’s getName() for symbols to allow llvm-objdump to produce a good error message.
Produce another specific error message for a malformed Mach-O file when a symbol’s string index is past the end of the string table. The existing test case in test/Object/macho-invalid.test for macho-invalid-symbol-name-past-eof now reports the error with the message indicating that a symbol at a specific index has a bad sting index and that bad string index value. Again converting interfaces to Expected<> from ErrorOr<> does involve touching a number of places. Where the existing code reported the error with a string message or an error code it was converted to do the same. There is some code for this that could be factored into a routine but I would like to leave that for the code owners post-commit to do as they want for handling an llvm::Error. An example of how this could be done is shown in the diff in lib/ExecutionEngine/RuntimeDyld/RuntimeDyldImpl.h which had a Check() routine already for std::error_code so I added one like it for llvm::Error . Also there some were bugs in the existing code that did not deal with the old ErrorOr<> return values.  So now with Expected<> since they must be checked and the error handled, I added a TODO and a comment: “// TODO: Actually report errors helpfully” and a call something like consumeError(NameOrErr.takeError()) so the buggy code will not crash since needed to deal with the Error. Note there fixes needed to lld that goes along with this that I will commit right after this. So expect lld not to built after this commit and before the next one. llvm-svn: 266919
1 parent 64d4e2b commit 81e8b7d

39 files changed

+436
-190
lines changed

llvm/include/llvm/ExecutionEngine/Orc/ObjectLinkingLayer.h

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -158,10 +158,12 @@ class ObjectLinkingLayer : public ObjectLinkingLayerBase {
158158
for (auto &Symbol : getObject(*Obj).symbols()) {
159159
if (Symbol.getFlags() & object::SymbolRef::SF_Undefined)
160160
continue;
161-
ErrorOr<StringRef> SymbolName = Symbol.getName();
161+
Expected<StringRef> SymbolName = Symbol.getName();
162162
// FIXME: Raise an error for bad symbols.
163-
if (!SymbolName)
163+
if (!SymbolName) {
164+
consumeError(SymbolName.takeError());
164165
continue;
166+
}
165167
auto Flags = JITSymbol::flagsFromObjectSymbol(Symbol);
166168
SymbolTable.insert(
167169
std::make_pair(*SymbolName, RuntimeDyld::SymbolInfo(0, Flags)));

llvm/include/llvm/Object/COFF.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -679,7 +679,7 @@ class COFFObjectFile : public ObjectFile {
679679
}
680680
protected:
681681
void moveSymbolNext(DataRefImpl &Symb) const override;
682-
ErrorOr<StringRef> getSymbolName(DataRefImpl Symb) const override;
682+
Expected<StringRef> getSymbolName(DataRefImpl Symb) const override;
683683
ErrorOr<uint64_t> getSymbolAddress(DataRefImpl Symb) const override;
684684
uint64_t getSymbolValueImpl(DataRefImpl Symb) const override;
685685
uint64_t getCommonSymbolSizeImpl(DataRefImpl Symb) const override;

llvm/include/llvm/Object/ELFObjectFile.h

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -192,7 +192,7 @@ template <class ELFT> class ELFObjectFile : public ELFObjectFileBase {
192192
ArrayRef<Elf_Word> ShndxTable;
193193

194194
void moveSymbolNext(DataRefImpl &Symb) const override;
195-
ErrorOr<StringRef> getSymbolName(DataRefImpl Symb) const override;
195+
Expected<StringRef> getSymbolName(DataRefImpl Symb) const override;
196196
ErrorOr<uint64_t> getSymbolAddress(DataRefImpl Symb) const override;
197197
uint64_t getSymbolValueImpl(DataRefImpl Symb) const override;
198198
uint32_t getSymbolAlignment(DataRefImpl Symb) const override;
@@ -349,7 +349,7 @@ void ELFObjectFile<ELFT>::moveSymbolNext(DataRefImpl &Sym) const {
349349
}
350350

351351
template <class ELFT>
352-
ErrorOr<StringRef> ELFObjectFile<ELFT>::getSymbolName(DataRefImpl Sym) const {
352+
Expected<StringRef> ELFObjectFile<ELFT>::getSymbolName(DataRefImpl Sym) const {
353353
const Elf_Sym *ESym = getSymbol(Sym);
354354
const Elf_Shdr *SymTableSec = *EF.getSection(Sym.d.a);
355355
const Elf_Shdr *StringTableSec = *EF.getSection(SymTableSec->sh_link);
@@ -483,11 +483,14 @@ uint32_t ELFObjectFile<ELFT>::getSymbolFlags(DataRefImpl Sym) const {
483483
Result |= SymbolRef::SF_FormatSpecific;
484484

485485
if (EF.getHeader()->e_machine == ELF::EM_ARM) {
486-
if (ErrorOr<StringRef> NameOrErr = getSymbolName(Sym)) {
486+
if (Expected<StringRef> NameOrErr = getSymbolName(Sym)) {
487487
StringRef Name = *NameOrErr;
488488
if (Name.startswith("$d") || Name.startswith("$t") ||
489489
Name.startswith("$a"))
490490
Result |= SymbolRef::SF_FormatSpecific;
491+
} else {
492+
// TODO: Actually report errors helpfully.
493+
consumeError(NameOrErr.takeError());
491494
}
492495
if (ESym->getType() == ELF::STT_FUNC && (ESym->st_value & 1) == 1)
493496
Result |= SymbolRef::SF_Thumb;

llvm/include/llvm/Object/ELFTypes.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -257,14 +257,14 @@ struct Elf_Sym_Impl : Elf_Sym_Base<ELFT> {
257257
return getBinding() != ELF::STB_LOCAL;
258258
}
259259

260-
ErrorOr<StringRef> getName(StringRef StrTab) const;
260+
Expected<StringRef> getName(StringRef StrTab) const;
261261
};
262262

263263
template <class ELFT>
264-
ErrorOr<StringRef> Elf_Sym_Impl<ELFT>::getName(StringRef StrTab) const {
264+
Expected<StringRef> Elf_Sym_Impl<ELFT>::getName(StringRef StrTab) const {
265265
uint32_t Offset = this->st_name;
266266
if (Offset >= StrTab.size())
267-
return object_error::parse_failed;
267+
return errorCodeToError(object_error::parse_failed);
268268
return StringRef(StrTab.data() + Offset);
269269
}
270270

llvm/include/llvm/Object/MachO.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -199,7 +199,7 @@ class MachOObjectFile : public ObjectFile {
199199
void moveSymbolNext(DataRefImpl &Symb) const override;
200200

201201
uint64_t getNValue(DataRefImpl Sym) const;
202-
ErrorOr<StringRef> getSymbolName(DataRefImpl Symb) const override;
202+
Expected<StringRef> getSymbolName(DataRefImpl Symb) const override;
203203

204204
// MachO specific.
205205
std::error_code getIndirectName(DataRefImpl Symb, StringRef &Res) const;
@@ -252,6 +252,7 @@ class MachOObjectFile : public ObjectFile {
252252

253253
// MachO specific.
254254
basic_symbol_iterator getSymbolByIndex(unsigned Index) const;
255+
uint64_t getSymbolIndex(DataRefImpl Symb) const;
255256

256257
section_iterator section_begin() const override;
257258
section_iterator section_end() const override;

llvm/include/llvm/Object/ObjectFile.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -130,7 +130,7 @@ class SymbolRef : public BasicSymbolRef {
130130
assert(isa<ObjectFile>(BasicSymbolRef::getObject()));
131131
}
132132

133-
ErrorOr<StringRef> getName() const;
133+
Expected<StringRef> getName() const;
134134
/// Returns the symbol virtual address (i.e. address at which it will be
135135
/// mapped).
136136
ErrorOr<uint64_t> getAddress() const;
@@ -193,7 +193,7 @@ class ObjectFile : public SymbolicFile {
193193
// Implementations assume that the DataRefImpl is valid and has not been
194194
// modified externally. It's UB otherwise.
195195
friend class SymbolRef;
196-
virtual ErrorOr<StringRef> getSymbolName(DataRefImpl Symb) const = 0;
196+
virtual Expected<StringRef> getSymbolName(DataRefImpl Symb) const = 0;
197197
std::error_code printSymbolName(raw_ostream &OS,
198198
DataRefImpl Symb) const override;
199199
virtual ErrorOr<uint64_t> getSymbolAddress(DataRefImpl Symb) const = 0;
@@ -304,7 +304,7 @@ class ObjectFile : public SymbolicFile {
304304
inline SymbolRef::SymbolRef(DataRefImpl SymbolP, const ObjectFile *Owner)
305305
: BasicSymbolRef(SymbolP, Owner) {}
306306

307-
inline ErrorOr<StringRef> SymbolRef::getName() const {
307+
inline Expected<StringRef> SymbolRef::getName() const {
308308
return getObject()->getSymbolName(getRawDataRefImpl());
309309
}
310310

llvm/lib/DebugInfo/Symbolize/SymbolizableObjectFile.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -141,9 +141,9 @@ std::error_code SymbolizableObjectFile::addSymbol(const SymbolRef &Symbol,
141141
OpdExtractor->isValidOffsetForAddress(OpdOffset32))
142142
SymbolAddress = OpdExtractor->getAddress(&OpdOffset32);
143143
}
144-
ErrorOr<StringRef> SymbolNameOrErr = Symbol.getName();
145-
if (auto EC = SymbolNameOrErr.getError())
146-
return EC;
144+
Expected<StringRef> SymbolNameOrErr = Symbol.getName();
145+
if (!SymbolNameOrErr)
146+
return errorToErrorCode(SymbolNameOrErr.takeError());
147147
StringRef SymbolName = *SymbolNameOrErr;
148148
// Mach-O symbol table names have leading underscore, skip it.
149149
if (Module->isMachO() && SymbolName.size() > 0 && SymbolName[0] == '_')

llvm/lib/ExecutionEngine/RuntimeDyld/RuntimeDyld.cpp

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -174,8 +174,8 @@ RuntimeDyldImpl::loadObjectImpl(const object::ObjectFile &Obj) {
174174
object::SymbolRef::Type SymType = *SymTypeOrErr;
175175

176176
// Get symbol name.
177-
ErrorOr<StringRef> NameOrErr = I->getName();
178-
Check(NameOrErr.getError());
177+
Expected<StringRef> NameOrErr = I->getName();
178+
Check(NameOrErr.takeError());
179179
StringRef Name = *NameOrErr;
180180

181181
// Compute JIT symbol flags.
@@ -496,8 +496,8 @@ void RuntimeDyldImpl::emitCommonSymbols(const ObjectFile &Obj,
496496
DEBUG(dbgs() << "Processing common symbols...\n");
497497

498498
for (const auto &Sym : CommonSymbols) {
499-
ErrorOr<StringRef> NameOrErr = Sym.getName();
500-
Check(NameOrErr.getError());
499+
Expected<StringRef> NameOrErr = Sym.getName();
500+
Check(NameOrErr.takeError());
501501
StringRef Name = *NameOrErr;
502502

503503
// Skip common symbols already elsewhere.
@@ -533,8 +533,14 @@ void RuntimeDyldImpl::emitCommonSymbols(const ObjectFile &Obj,
533533
for (auto &Sym : SymbolsToAllocate) {
534534
uint32_t Align = Sym.getAlignment();
535535
uint64_t Size = Sym.getCommonSize();
536-
ErrorOr<StringRef> NameOrErr = Sym.getName();
537-
Check(NameOrErr.getError());
536+
Expected<StringRef> NameOrErr = Sym.getName();
537+
if (!NameOrErr) {
538+
std::string Buf;
539+
raw_string_ostream OS(Buf);
540+
logAllUnhandledErrors(NameOrErr.takeError(), OS, "");
541+
OS.flush();
542+
report_fatal_error(Buf);
543+
}
538544
StringRef Name = *NameOrErr;
539545
if (Align) {
540546
// This symbol has an alignment requirement.

llvm/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldELF.cpp

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1175,9 +1175,14 @@ relocation_iterator RuntimeDyldELF::processRelocationRef(
11751175
// Obtain the symbol name which is referenced in the relocation
11761176
StringRef TargetName;
11771177
if (Symbol != Obj.symbol_end()) {
1178-
ErrorOr<StringRef> TargetNameOrErr = Symbol->getName();
1179-
if (std::error_code EC = TargetNameOrErr.getError())
1180-
report_fatal_error(EC.message());
1178+
Expected<StringRef> TargetNameOrErr = Symbol->getName();
1179+
if (!TargetNameOrErr) {
1180+
std::string Buf;
1181+
raw_string_ostream OS(Buf);
1182+
logAllUnhandledErrors(TargetNameOrErr.takeError(), OS, "");
1183+
OS.flush();
1184+
report_fatal_error(Buf);
1185+
}
11811186
TargetName = *TargetNameOrErr;
11821187
}
11831188
DEBUG(dbgs() << "\t\tRelType: " << RelType << " Addend: " << Addend

llvm/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldImpl.h

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,15 @@ inline std::error_code Check(std::error_code Err) {
4343
}
4444
return Err;
4545
}
46+
inline void Check(llvm::Error Err) {
47+
if (Err) {
48+
std::string Buf;
49+
raw_string_ostream OS(Buf);
50+
logAllUnhandledErrors(std::move(Err), OS, "");
51+
OS.flush();
52+
report_fatal_error(Buf);
53+
}
54+
}
4655

4756
class Twine;
4857

llvm/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldMachO.cpp

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -99,9 +99,14 @@ RelocationValueRef RuntimeDyldMachO::getRelocationValueRef(
9999
bool IsExternal = Obj.getPlainRelocationExternal(RelInfo);
100100
if (IsExternal) {
101101
symbol_iterator Symbol = RI->getSymbol();
102-
ErrorOr<StringRef> TargetNameOrErr = Symbol->getName();
103-
if (std::error_code EC = TargetNameOrErr.getError())
104-
report_fatal_error(EC.message());
102+
Expected<StringRef> TargetNameOrErr = Symbol->getName();
103+
if (!TargetNameOrErr) {
104+
std::string Buf;
105+
raw_string_ostream OS(Buf);
106+
logAllUnhandledErrors(TargetNameOrErr.takeError(), OS, "");
107+
OS.flush();
108+
report_fatal_error(Buf);
109+
}
105110
StringRef TargetName = *TargetNameOrErr;
106111
RTDyldSymbolTable::const_iterator SI =
107112
GlobalSymbolTable.find(TargetName.data());
@@ -191,9 +196,14 @@ void RuntimeDyldMachO::populateIndirectSymbolPointersSection(
191196
unsigned SymbolIndex =
192197
Obj.getIndirectSymbolTableEntry(DySymTabCmd, FirstIndirectSymbol + i);
193198
symbol_iterator SI = Obj.getSymbolByIndex(SymbolIndex);
194-
ErrorOr<StringRef> IndirectSymbolNameOrErr = SI->getName();
195-
if (std::error_code EC = IndirectSymbolNameOrErr.getError())
196-
report_fatal_error(EC.message());
199+
Expected<StringRef> IndirectSymbolNameOrErr = SI->getName();
200+
if (!IndirectSymbolNameOrErr) {
201+
std::string Buf;
202+
raw_string_ostream OS(Buf);
203+
logAllUnhandledErrors(IndirectSymbolNameOrErr.takeError(), OS, "");
204+
OS.flush();
205+
report_fatal_error(Buf);
206+
}
197207
StringRef IndirectSymbolName = *IndirectSymbolNameOrErr;
198208
DEBUG(dbgs() << " " << IndirectSymbolName << ": index " << SymbolIndex
199209
<< ", PT offset: " << PTEntryOffset << "\n");

llvm/lib/ExecutionEngine/RuntimeDyld/Targets/RuntimeDyldCOFFI386.h

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -43,9 +43,14 @@ class RuntimeDyldCOFFI386 : public RuntimeDyldCOFF {
4343
if (Symbol == Obj.symbol_end())
4444
report_fatal_error("Unknown symbol in relocation");
4545

46-
ErrorOr<StringRef> TargetNameOrErr = Symbol->getName();
47-
if (auto EC = TargetNameOrErr.getError())
48-
report_fatal_error(EC.message());
46+
Expected<StringRef> TargetNameOrErr = Symbol->getName();
47+
if (!TargetNameOrErr) {
48+
std::string Buf;
49+
raw_string_ostream OS(Buf);
50+
logAllUnhandledErrors(TargetNameOrErr.takeError(), OS, "");
51+
OS.flush();
52+
report_fatal_error(Buf);
53+
}
4954
StringRef TargetName = *TargetNameOrErr;
5055

5156
auto Section = *Symbol->getSection();

llvm/lib/ExecutionEngine/RuntimeDyld/Targets/RuntimeDyldCOFFX86_64.h

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -151,9 +151,14 @@ class RuntimeDyldCOFFX86_64 : public RuntimeDyldCOFF {
151151
break;
152152
}
153153

154-
ErrorOr<StringRef> TargetNameOrErr = Symbol->getName();
155-
if (std::error_code EC = TargetNameOrErr.getError())
156-
report_fatal_error(EC.message());
154+
Expected<StringRef> TargetNameOrErr = Symbol->getName();
155+
if (!TargetNameOrErr) {
156+
std::string Buf;
157+
raw_string_ostream OS(Buf);
158+
logAllUnhandledErrors(TargetNameOrErr.takeError(), OS, "");
159+
OS.flush();
160+
report_fatal_error(Buf);
161+
}
157162
StringRef TargetName = *TargetNameOrErr;
158163

159164
DEBUG(dbgs() << "\t\tIn Section " << SectionID << " Offset " << Offset

llvm/lib/ExecutionEngine/RuntimeDyld/Targets/RuntimeDyldMachOAArch64.h

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -424,19 +424,29 @@ class RuntimeDyldMachOAArch64
424424
uint8_t *LocalAddress = Sections[SectionID].getAddressWithOffset(Offset);
425425
unsigned NumBytes = 1 << Size;
426426

427-
ErrorOr<StringRef> SubtrahendNameOrErr = RelI->getSymbol()->getName();
428-
if (auto EC = SubtrahendNameOrErr.getError())
429-
report_fatal_error(EC.message());
427+
Expected<StringRef> SubtrahendNameOrErr = RelI->getSymbol()->getName();
428+
if (!SubtrahendNameOrErr) {
429+
std::string Buf;
430+
raw_string_ostream OS(Buf);
431+
logAllUnhandledErrors(SubtrahendNameOrErr.takeError(), OS, "");
432+
OS.flush();
433+
report_fatal_error(Buf);
434+
}
430435
auto SubtrahendI = GlobalSymbolTable.find(*SubtrahendNameOrErr);
431436
unsigned SectionBID = SubtrahendI->second.getSectionID();
432437
uint64_t SectionBOffset = SubtrahendI->second.getOffset();
433438
int64_t Addend =
434439
SignExtend64(readBytesUnaligned(LocalAddress, NumBytes), NumBytes * 8);
435440

436441
++RelI;
437-
ErrorOr<StringRef> MinuendNameOrErr = RelI->getSymbol()->getName();
438-
if (auto EC = MinuendNameOrErr.getError())
439-
report_fatal_error(EC.message());
442+
Expected<StringRef> MinuendNameOrErr = RelI->getSymbol()->getName();
443+
if (!MinuendNameOrErr) {
444+
std::string Buf;
445+
raw_string_ostream OS(Buf);
446+
logAllUnhandledErrors(MinuendNameOrErr.takeError(), OS, "");
447+
OS.flush();
448+
report_fatal_error(Buf);
449+
}
440450
auto MinuendI = GlobalSymbolTable.find(*MinuendNameOrErr);
441451
unsigned SectionAID = MinuendI->second.getSectionID();
442452
uint64_t SectionAOffset = MinuendI->second.getOffset();

llvm/lib/ExecutionEngine/RuntimeDyld/Targets/RuntimeDyldMachOI386.h

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -204,9 +204,14 @@ class RuntimeDyldMachOI386
204204
unsigned SymbolIndex =
205205
Obj.getIndirectSymbolTableEntry(DySymTabCmd, FirstIndirectSymbol + i);
206206
symbol_iterator SI = Obj.getSymbolByIndex(SymbolIndex);
207-
ErrorOr<StringRef> IndirectSymbolName = SI->getName();
208-
if (std::error_code EC = IndirectSymbolName.getError())
209-
report_fatal_error(EC.message());
207+
Expected<StringRef> IndirectSymbolName = SI->getName();
208+
if (!IndirectSymbolName) {
209+
std::string Buf;
210+
raw_string_ostream OS(Buf);
211+
logAllUnhandledErrors(IndirectSymbolName.takeError(), OS, "");
212+
OS.flush();
213+
report_fatal_error(Buf);
214+
}
210215
uint8_t *JTEntryAddr = JTSectionAddr + JTEntryOffset;
211216
createStubFunction(JTEntryAddr);
212217
RelocationEntry RE(JTSectionID, JTEntryOffset + 1,

llvm/lib/ExecutionEngine/RuntimeDyld/Targets/RuntimeDyldMachOX86_64.h

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -157,19 +157,29 @@ class RuntimeDyldMachOX86_64
157157
uint8_t *LocalAddress = Sections[SectionID].getAddressWithOffset(Offset);
158158
unsigned NumBytes = 1 << Size;
159159

160-
ErrorOr<StringRef> SubtrahendNameOrErr = RelI->getSymbol()->getName();
161-
if (auto EC = SubtrahendNameOrErr.getError())
162-
report_fatal_error(EC.message());
160+
Expected<StringRef> SubtrahendNameOrErr = RelI->getSymbol()->getName();
161+
if (!SubtrahendNameOrErr) {
162+
std::string Buf;
163+
raw_string_ostream OS(Buf);
164+
logAllUnhandledErrors(SubtrahendNameOrErr.takeError(), OS, "");
165+
OS.flush();
166+
report_fatal_error(Buf);
167+
}
163168
auto SubtrahendI = GlobalSymbolTable.find(*SubtrahendNameOrErr);
164169
unsigned SectionBID = SubtrahendI->second.getSectionID();
165170
uint64_t SectionBOffset = SubtrahendI->second.getOffset();
166171
int64_t Addend =
167172
SignExtend64(readBytesUnaligned(LocalAddress, NumBytes), NumBytes * 8);
168173

169174
++RelI;
170-
ErrorOr<StringRef> MinuendNameOrErr = RelI->getSymbol()->getName();
171-
if (auto EC = MinuendNameOrErr.getError())
172-
report_fatal_error(EC.message());
175+
Expected<StringRef> MinuendNameOrErr = RelI->getSymbol()->getName();
176+
if (!MinuendNameOrErr) {
177+
std::string Buf;
178+
raw_string_ostream OS(Buf);
179+
logAllUnhandledErrors(MinuendNameOrErr.takeError(), OS, "");
180+
OS.flush();
181+
report_fatal_error(Buf);
182+
}
173183
auto MinuendI = GlobalSymbolTable.find(*MinuendNameOrErr);
174184
unsigned SectionAID = MinuendI->second.getSectionID();
175185
uint64_t SectionAOffset = MinuendI->second.getOffset();

llvm/lib/Object/COFFObjectFile.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -144,12 +144,12 @@ void COFFObjectFile::moveSymbolNext(DataRefImpl &Ref) const {
144144
}
145145
}
146146

147-
ErrorOr<StringRef> COFFObjectFile::getSymbolName(DataRefImpl Ref) const {
147+
Expected<StringRef> COFFObjectFile::getSymbolName(DataRefImpl Ref) const {
148148
COFFSymbolRef Symb = getCOFFSymbol(Ref);
149149
StringRef Result;
150150
std::error_code EC = getSymbolName(Symb, Result);
151151
if (EC)
152-
return EC;
152+
return errorCodeToError(EC);
153153
return Result;
154154
}
155155

0 commit comments

Comments
 (0)