[llvm] 31ee6ae - [llvm-objdump] Fix reporting error for processing target features
Anton Afanasyev via llvm-commits
llvm-commits at lists.llvm.org
Wed Jan 18 05:57:32 PST 2023
Author: Elena Lepilkina
Date: 2023-01-18T16:56:51+03:00
New Revision: 31ee6ae059fd3c2ec1ffa38fabe0850d9808eaa8
URL: https://github.com/llvm/llvm-project/commit/31ee6ae059fd3c2ec1ffa38fabe0850d9808eaa8
DIFF: https://github.com/llvm/llvm-project/commit/31ee6ae059fd3c2ec1ffa38fabe0850d9808eaa8.diff
LOG: [llvm-objdump] Fix reporting error for processing target features
Differential Revision: https://reviews.llvm.org/D142003
Added:
llvm/test/tools/llvm-objdump/ELF/RISCV/invalid-arch-attr.test
Modified:
llvm/lib/Support/RISCVISAInfo.cpp
llvm/tools/llvm-objdump/llvm-objdump.cpp
Removed:
################################################################################
diff --git a/llvm/lib/Support/RISCVISAInfo.cpp b/llvm/lib/Support/RISCVISAInfo.cpp
index 6b9d4ca6d8b9d..1b1bff023d2f2 100644
--- a/llvm/lib/Support/RISCVISAInfo.cpp
+++ b/llvm/lib/Support/RISCVISAInfo.cpp
@@ -704,8 +704,6 @@ RISCVISAInfo::parseArchString(StringRef Arch, bool EnableExperimentalExtension,
}
if (!IgnoreUnknown && Name.size() == Type.size()) {
- if (IgnoreUnknown)
- continue;
return createStringError(errc::invalid_argument,
"%s name missing after '%s'",
Desc.str().c_str(), Type.str().c_str());
@@ -724,8 +722,6 @@ RISCVISAInfo::parseArchString(StringRef Arch, bool EnableExperimentalExtension,
// Check if duplicated extension.
if (!IgnoreUnknown && llvm::is_contained(AllExts, Name)) {
- if (IgnoreUnknown)
- continue;
return createStringError(errc::invalid_argument, "duplicated %s '%s'",
Desc.str().c_str(), Name.str().c_str());
}
diff --git a/llvm/test/tools/llvm-objdump/ELF/RISCV/invalid-arch-attr.test b/llvm/test/tools/llvm-objdump/ELF/RISCV/invalid-arch-attr.test
new file mode 100644
index 0000000000000..464eb2f10ca56
--- /dev/null
+++ b/llvm/test/tools/llvm-objdump/ELF/RISCV/invalid-arch-attr.test
@@ -0,0 +1,26 @@
+## Handle invalid arch attributes.
+##
+## This test cannot be assembly because the test needs an invalid arch
+## feature and `llvm-mc` will filter out the unrecognized arch feature.
+
+# RUN: yaml2obj %s -D BITS=32 -o %t.32.o
+# RUN: not llvm-objdump -d %t.32.o 2>&1 | \
+# RUN: FileCheck %s --check-prefixes=DISASM
+
+# DISASM: {{.*}} invalid section length 35 at offset 0x1
+
+--- !ELF
+FileHeader:
+ Class: ELFCLASS[[BITS]]
+ Data: ELFDATA2LSB
+ Type: ET_REL
+ Machine: EM_RISCV
+Sections:
+ - Name: .text
+ Type: SHT_PROGBITS
+ Flags: [ SHF_ALLOC, SHF_EXECINSTR ]
+## The content is the encoding of "mul a0, a1, a2".
+ Content: 3385C502
+ - Name: .riscv.attributes
+ Type: SHT_RISCV_ATTRIBUTES
+ Content: 4123000000726973637600019572763332693270305F6D3270305F7831703000
diff --git a/llvm/tools/llvm-objdump/llvm-objdump.cpp b/llvm/tools/llvm-objdump/llvm-objdump.cpp
index 8c2be29e8391b..930b132533cdd 100644
--- a/llvm/tools/llvm-objdump/llvm-objdump.cpp
+++ b/llvm/tools/llvm-objdump/llvm-objdump.cpp
@@ -2011,7 +2011,7 @@ static void disassembleObject(ObjectFile *Obj, bool InlineRelocs) {
// Package up features to be passed to target/subtarget
Expected<SubtargetFeatures> FeaturesValue = Obj->getFeatures();
if (!FeaturesValue)
- WithColor::error(errs(), ToolName) << FeaturesValue.takeError();
+ reportError(FeaturesValue.takeError(), Obj->getFileName());
SubtargetFeatures Features = *FeaturesValue;
if (!MAttrs.empty()) {
for (unsigned I = 0; I != MAttrs.size(); ++I)
More information about the llvm-commits
mailing list