diff options
| author | George Rimar <grimar@accesssoftek.com> | 2019-08-14 08:46:54 +0000 |
|---|---|---|
| committer | George Rimar <grimar@accesssoftek.com> | 2019-08-14 08:46:54 +0000 |
| commit | a0c6a3571422826e856002714d9bb008584fe8b3 (patch) | |
| tree | 13316b7a2db6ed9d4bc4457853028a77e8eb56fd /llvm/tools/obj2yaml/coff2yaml.cpp | |
| parent | d4a99d87a20dae0507a95322fc903768f627185a (diff) | |
| download | bcm5719-llvm-a0c6a3571422826e856002714d9bb008584fe8b3.tar.gz bcm5719-llvm-a0c6a3571422826e856002714d9bb008584fe8b3.zip | |
[llvm/Object] - Convert SectionRef::getName() to return Expected<>
SectionRef::getName() returns std::error_code now.
Returning Expected<> instead has multiple benefits.
For example, it forces user to check the error returned.
Also Expected<> may keep a valuable string error message,
what is more useful than having a error code.
(Object\invalid.test was updated to show the new messages printed.)
This patch makes a change for all users to switch to Expected<> version.
Note: in a few places the error returned was ignored before my changes.
In such places I left them ignored. My intention was to convert the interface
used, and not to improve and/or the existent users in this patch.
(Though I think this is good idea for a follow-ups to revisit such places
and either remove consumeError calls or comment each of them to clarify why
it is OK to have them).
Differential revision: https://reviews.llvm.org/D66089
llvm-svn: 368812
Diffstat (limited to 'llvm/tools/obj2yaml/coff2yaml.cpp')
| -rw-r--r-- | llvm/tools/obj2yaml/coff2yaml.cpp | 17 |
1 files changed, 13 insertions, 4 deletions
diff --git a/llvm/tools/obj2yaml/coff2yaml.cpp b/llvm/tools/obj2yaml/coff2yaml.cpp index a05840f80bb..e2b18807cda 100644 --- a/llvm/tools/obj2yaml/coff2yaml.cpp +++ b/llvm/tools/obj2yaml/coff2yaml.cpp @@ -112,10 +112,14 @@ initializeFileAndStringTable(const llvm::object::COFFObjectFile &Obj, if (SC.hasStrings() && SC.hasChecksums()) break; - StringRef SectionName; - S.getName(SectionName); + Expected<StringRef> SectionNameOrErr = S.getName(); + if (!SectionNameOrErr) { + consumeError(SectionNameOrErr.takeError()); + continue; + } + ArrayRef<uint8_t> sectionData; - if (SectionName != ".debug$S") + if ((*SectionNameOrErr) != ".debug$S") continue; const object::coff_section *COFFSection = Obj.getCOFFSection(S); @@ -155,7 +159,12 @@ void COFFDumper::dumpSections(unsigned NumSections) { for (const auto &ObjSection : Obj.sections()) { const object::coff_section *COFFSection = Obj.getCOFFSection(ObjSection); COFFYAML::Section NewYAMLSection; - ObjSection.getName(NewYAMLSection.Name); + + if (Expected<StringRef> NameOrErr = ObjSection.getName()) + NewYAMLSection.Name = *NameOrErr; + else + consumeError(NameOrErr.takeError()); + NewYAMLSection.Header.Characteristics = COFFSection->Characteristics; NewYAMLSection.Header.VirtualAddress = COFFSection->VirtualAddress; NewYAMLSection.Header.VirtualSize = COFFSection->VirtualSize; |

