summaryrefslogtreecommitdiffstats
path: root/llvm/tools/llvm-readobj/ELFDumper.cpp
diff options
context:
space:
mode:
authorGeorge Rimar <grimar@accesssoftek.com>2019-08-14 11:10:11 +0000
committerGeorge Rimar <grimar@accesssoftek.com>2019-08-14 11:10:11 +0000
commitbcc00e1afbdc107e05b2977fde26053a52295dd1 (patch)
tree0ad3e328d73375164f99adb046a919273a128c1c /llvm/tools/llvm-readobj/ELFDumper.cpp
parenta11d302fa00ba423b09c94491bc868cb991ff379 (diff)
downloadbcm5719-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.cpp25
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,
OpenPOWER on IntegriCloud