[llvm] [llvm-objdump] Add triple support to `mcpu=help` (PR #165661)
Ruoyu Qiu via llvm-commits
llvm-commits at lists.llvm.org
Fri Oct 31 03:28:23 PDT 2025
https://github.com/cabbaken updated https://github.com/llvm/llvm-project/pull/165661
>From 9f37b38971c60fb2ab0f0f9b8005555f44007c9f Mon Sep 17 00:00:00 2001
From: Ruoyu Qiu <cabbaken at outlook.com>
Date: Thu, 30 Oct 2025 06:47:58 +0000
Subject: [PATCH 1/3] Add triple support to mcpu=help
Signed-off-by: Ruoyu Qiu <cabbaken at outlook.com>
---
.../tools/llvm-objdump/mattr-mcpu-help.test | 6 ++++++
llvm/tools/llvm-objdump/llvm-objdump.cpp | 17 +++++++++++++++++
2 files changed, 23 insertions(+)
diff --git a/llvm/test/tools/llvm-objdump/mattr-mcpu-help.test b/llvm/test/tools/llvm-objdump/mattr-mcpu-help.test
index 65c426008fd6a..3475f0396d9b2 100644
--- a/llvm/test/tools/llvm-objdump/mattr-mcpu-help.test
+++ b/llvm/test/tools/llvm-objdump/mattr-mcpu-help.test
@@ -14,3 +14,9 @@ FileHeader:
Data: ELFDATA2LSB
Type: ET_EXEC
Machine: EM_X86_64
+
+# RUN: llvm-objdump --triple=x86_64 --mcpu=help 2>&1 \
+# RUN: | FileCheck %s --check-prefix=CHECK-WITHOUT-DISASSEMBLING
+
+# CHECK-WITHOUT-DISASSEMBLING: Available CPUs for this target:
+# CHECK-WITHOUT-DISASSEMBLING: Available features for this target:
diff --git a/llvm/tools/llvm-objdump/llvm-objdump.cpp b/llvm/tools/llvm-objdump/llvm-objdump.cpp
index 3ec644a472bfc..5fe4420eb4f2d 100644
--- a/llvm/tools/llvm-objdump/llvm-objdump.cpp
+++ b/llvm/tools/llvm-objdump/llvm-objdump.cpp
@@ -3533,6 +3533,19 @@ commaSeparatedValues(const llvm::opt::InputArgList &InputArgs, int ID) {
return Values;
}
+static int MCPUHelp() {
+ if (!TripleName.empty()) {
+ std::string Error;
+ const Target *DummyTarget = TargetRegistry::lookupTarget(TripleName, Error);
+ if (!DummyTarget) {
+ outs() << Error << '\n';
+ return 2;
+ }
+ DummyTarget->createMCSubtargetInfo(TripleName, MCPU, "");
+ }
+ return 0;
+}
+
static void parseOtoolOptions(const llvm::opt::InputArgList &InputArgs) {
MachOOpt = true;
FullLeadingAddr = true;
@@ -3826,6 +3839,10 @@ int llvm_objdump_main(int argc, char **argv, const llvm::ToolContext &) {
!DisassembleSymbols.empty())
Disassemble = true;
+ if (!Disassemble && MCPU == "help") {
+ return MCPUHelp();
+ }
+
if (!ArchiveHeaders && !Disassemble && DwarfDumpType == DIDT_Null &&
!DynamicRelocations && !FileHeaders && !PrivateHeaders && !RawClangAST &&
!Relocations && !SectionHeaders && !SectionContents && !SymbolTable &&
>From 1ddbf3c1c523807a7f322d166b5a7cf0388f6253 Mon Sep 17 00:00:00 2001
From: Ruoyu Qiu <cabbaken at outlook.com>
Date: Thu, 30 Oct 2025 09:42:42 +0000
Subject: [PATCH 2/3] Fix deprecated function call
Signed-off-by: Ruoyu Qiu <cabbaken at outlook.com>
---
llvm/tools/llvm-objdump/llvm-objdump.cpp | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/llvm/tools/llvm-objdump/llvm-objdump.cpp b/llvm/tools/llvm-objdump/llvm-objdump.cpp
index 5fe4420eb4f2d..5e8d012a08450 100644
--- a/llvm/tools/llvm-objdump/llvm-objdump.cpp
+++ b/llvm/tools/llvm-objdump/llvm-objdump.cpp
@@ -3536,12 +3536,14 @@ commaSeparatedValues(const llvm::opt::InputArgList &InputArgs, int ID) {
static int MCPUHelp() {
if (!TripleName.empty()) {
std::string Error;
- const Target *DummyTarget = TargetRegistry::lookupTarget(TripleName, Error);
+ Triple DummyTriple(TripleName);
+ const Target *DummyTarget =
+ TargetRegistry::lookupTarget(DummyTriple, Error);
if (!DummyTarget) {
outs() << Error << '\n';
return 2;
}
- DummyTarget->createMCSubtargetInfo(TripleName, MCPU, "");
+ DummyTarget->createMCSubtargetInfo(DummyTriple, MCPU, "");
}
return 0;
}
>From 43c26ca43dc3bca130a8d6c42b5cb10033c5b647 Mon Sep 17 00:00:00 2001
From: Ruoyu Qiu <cabbaken at outlook.com>
Date: Fri, 31 Oct 2025 10:27:46 +0000
Subject: [PATCH 3/3] Do some fix
Signed-off-by: Ruoyu Qiu <cabbaken at outlook.com>
---
llvm/test/tools/llvm-objdump/mattr-mcpu-help.test | 2 ++
llvm/tools/llvm-objdump/llvm-objdump.cpp | 13 +++++++------
2 files changed, 9 insertions(+), 6 deletions(-)
diff --git a/llvm/test/tools/llvm-objdump/mattr-mcpu-help.test b/llvm/test/tools/llvm-objdump/mattr-mcpu-help.test
index 3475f0396d9b2..63aab94203b1f 100644
--- a/llvm/test/tools/llvm-objdump/mattr-mcpu-help.test
+++ b/llvm/test/tools/llvm-objdump/mattr-mcpu-help.test
@@ -20,3 +20,5 @@ FileHeader:
# CHECK-WITHOUT-DISASSEMBLING: Available CPUs for this target:
# CHECK-WITHOUT-DISASSEMBLING: Available features for this target:
+
+; XFAIL: *
diff --git a/llvm/tools/llvm-objdump/llvm-objdump.cpp b/llvm/tools/llvm-objdump/llvm-objdump.cpp
index 5e8d012a08450..31205e07511da 100644
--- a/llvm/tools/llvm-objdump/llvm-objdump.cpp
+++ b/llvm/tools/llvm-objdump/llvm-objdump.cpp
@@ -3533,16 +3533,17 @@ commaSeparatedValues(const llvm::opt::InputArgList &InputArgs, int ID) {
return Values;
}
-static int MCPUHelp() {
+static int mcpuHelp() {
if (!TripleName.empty()) {
std::string Error;
Triple DummyTriple(TripleName);
const Target *DummyTarget =
TargetRegistry::lookupTarget(DummyTriple, Error);
if (!DummyTarget) {
- outs() << Error << '\n';
+ reportCmdLineError(Error);
return 2;
}
+ // We need to access the Help() through the corresponding MCSubtargetInfo
DummyTarget->createMCSubtargetInfo(DummyTriple, MCPU, "");
}
return 0;
@@ -3841,14 +3842,11 @@ int llvm_objdump_main(int argc, char **argv, const llvm::ToolContext &) {
!DisassembleSymbols.empty())
Disassemble = true;
- if (!Disassemble && MCPU == "help") {
- return MCPUHelp();
- }
-
if (!ArchiveHeaders && !Disassemble && DwarfDumpType == DIDT_Null &&
!DynamicRelocations && !FileHeaders && !PrivateHeaders && !RawClangAST &&
!Relocations && !SectionHeaders && !SectionContents && !SymbolTable &&
!DynamicSymbolTable && !UnwindInfo && !FaultMapSection && !Offloading &&
+ MCPU != "help" &&
!(MachOOpt &&
(Bind || DataInCode || ChainedFixups || DyldInfo || DylibId ||
DylibsUsed || ExportsTrie || FirstPrivateHeader ||
@@ -3859,6 +3857,9 @@ int llvm_objdump_main(int argc, char **argv, const llvm::ToolContext &) {
return 2;
}
+ if (!Disassemble && MCPU == "help")
+ mcpuHelp();
+
DisasmSymbolSet.insert_range(DisassembleSymbols);
llvm::for_each(InputFilenames, dumpInput);
More information about the llvm-commits
mailing list