diff options
| author | George Rimar <grimar@accesssoftek.com> | 2019-08-14 11:10:11 +0000 |
|---|---|---|
| committer | George Rimar <grimar@accesssoftek.com> | 2019-08-14 11:10:11 +0000 |
| commit | bcc00e1afbdc107e05b2977fde26053a52295dd1 (patch) | |
| tree | 0ad3e328d73375164f99adb046a919273a128c1c /llvm/tools/llvm-readobj/ELFDumper.cpp | |
| parent | a11d302fa00ba423b09c94491bc868cb991ff379 (diff) | |
| download | bcm5719-llvm-bcc00e1afbdc107e05b2977fde26053a52295dd1.tar.gz bcm5719-llvm-bcc00e1afbdc107e05b2977fde26053a52295dd1.zip | |
Recommit r368812 "[llvm/Object] - Convert SectionRef::getName() to return Expected<>"
Changes: no changes. A fix for the clang code will be landed right on top.
Original commit message:
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: 368826
Diffstat (limited to 'llvm/tools/llvm-readobj/ELFDumper.cpp')
| -rw-r--r-- | llvm/tools/llvm-readobj/ELFDumper.cpp | 25 |
1 files changed, 21 insertions, 4 deletions
diff --git a/llvm/tools/llvm-readobj/ELFDumper.cpp b/llvm/tools/llvm-readobj/ELFDumper.cpp index 67ee182539d..08e511a00c4 100644 --- a/llvm/tools/llvm-readobj/ELFDumper.cpp +++ b/llvm/tools/llvm-readobj/ELFDumper.cpp @@ -4669,7 +4669,11 @@ void DumpStyle<ELFT>::printNonRelocatableStackSizes( StringRef FileStr = Obj->getFileName(); for (const SectionRef &Sec : Obj->sections()) { StringRef SectionName; - Sec.getName(SectionName); + if (Expected<StringRef> NameOrErr = Sec.getName()) + SectionName = *NameOrErr; + else + consumeError(NameOrErr.takeError()); + const Elf_Shdr *ElfSec = Obj->getSection(Sec.getRawDataRefImpl()); if (!SectionName.startswith(".stack_sizes")) continue; @@ -4717,7 +4721,11 @@ void DumpStyle<ELFT>::printRelocatableStackSizes( for (const SectionRef &Sec : Obj->sections()) { StringRef SectionName; - Sec.getName(SectionName); + if (Expected<StringRef> NameOrErr = Sec.getName()) + SectionName = *NameOrErr; + else + consumeError(NameOrErr.takeError()); + // A stack size section that we haven't encountered yet is mapped to the // null section until we find its corresponding relocation section. if (SectionName.startswith(".stack_sizes")) @@ -4754,7 +4762,11 @@ void DumpStyle<ELFT>::printRelocatableStackSizes( // Warn about stack size sections without a relocation section. StringRef StackSizeSectionName; - StackSizesSec.getName(StackSizeSectionName); + if (Expected<StringRef> NameOrErr = StackSizesSec.getName()) + StackSizeSectionName = *NameOrErr; + else + consumeError(NameOrErr.takeError()); + if (RelocSec == NullSection) { reportWarning(" '" + FileStr + "': section " + StackSizeSectionName + " does not have a corresponding " @@ -4782,7 +4794,12 @@ void DumpStyle<ELFT>::printRelocatableStackSizes( for (const RelocationRef &Reloc : RelocSec.relocations()) { if (!IsSupportedFn(Reloc.getType())) { StringRef RelocSectionName; - RelocSec.getName(RelocSectionName); + Expected<StringRef> NameOrErr = RelocSec.getName(); + if (NameOrErr) + RelocSectionName = *NameOrErr; + else + consumeError(NameOrErr.takeError()); + StringRef RelocName = EF->getRelocationTypeName(Reloc.getType()); reportError( createStringError(object_error::parse_failed, |

