@@ -60,6 +60,10 @@ using namespace llvm::codeview;
6060using namespace llvm ::support;
6161using namespace llvm ::Win64EH;
6262
63+ static inline Error createError (const Twine &Err) {
64+ return make_error<StringError>(Err, object_error::parse_failed);
65+ }
66+
6367namespace {
6468
6569struct LoadConfigTables {
@@ -167,7 +171,7 @@ class COFFDumper : public ObjDumper {
167171 void printDelayImportedSymbols (
168172 const DelayImportDirectoryEntryRef &I,
169173 iterator_range<imported_symbol_iterator> Range);
170- ErrorOr <const coff_resource_dir_entry &>
174+ Expected <const coff_resource_dir_entry &>
171175 getResourceDirectoryTableEntry (const coff_resource_dir_table &Table,
172176 uint32_t Index);
173177
@@ -1729,7 +1733,8 @@ COFFDumper::countTotalTableEntries(ResourceSectionRef RSF,
17291733 uint32_t TotalEntries = 0 ;
17301734 for (int i = 0 ; i < Table.NumberOfNameEntries + Table.NumberOfIDEntries ;
17311735 i++) {
1732- auto Entry = unwrapOrError (getResourceDirectoryTableEntry (Table, i));
1736+ auto Entry = unwrapOrError (Obj->getFileName (),
1737+ getResourceDirectoryTableEntry (Table, i));
17331738 if (Entry.Offset .isSubDir ()) {
17341739 StringRef NextLevel;
17351740 if (Level == " Name" )
@@ -1755,7 +1760,8 @@ void COFFDumper::printResourceDirectoryTable(
17551760 // Iterate through level in resource directory tree.
17561761 for (int i = 0 ; i < Table.NumberOfNameEntries + Table.NumberOfIDEntries ;
17571762 i++) {
1758- auto Entry = unwrapOrError (getResourceDirectoryTableEntry (Table, i));
1763+ auto Entry = unwrapOrError (Obj->getFileName (),
1764+ getResourceDirectoryTableEntry (Table, i));
17591765 StringRef Name;
17601766 SmallString<20 > IDStr;
17611767 raw_svector_ostream OS (IDStr);
@@ -1808,11 +1814,11 @@ void COFFDumper::printResourceDirectoryTable(
18081814 }
18091815}
18101816
1811- ErrorOr <const coff_resource_dir_entry &>
1817+ Expected <const coff_resource_dir_entry &>
18121818COFFDumper::getResourceDirectoryTableEntry (const coff_resource_dir_table &Table,
18131819 uint32_t Index) {
18141820 if (Index >= (uint32_t )(Table.NumberOfNameEntries + Table.NumberOfIDEntries ))
1815- return object_error::parse_failed ;
1821+ return createError ( " can't get resource directory table entry " ) ;
18161822 auto TablePtr = reinterpret_cast <const coff_resource_dir_entry *>(&Table + 1 );
18171823 return TablePtr[Index];
18181824}
0 commit comments