[llvm] llvm-objdump: Support --disassemble option. (PR #196594)

Peter Collingbourne via llvm-commits llvm-commits at lists.llvm.org
Fri May 8 10:48:12 PDT 2026


https://github.com/pcc created https://github.com/llvm/llvm-project/pull/196594

This is compatible with GNU, as well as being shorter and allowing users
to specify symbol names with commas in them.


>From 315331d7e7c30119ec8f29cfcf4133a52f260f9d Mon Sep 17 00:00:00 2001
From: Peter Collingbourne <peter at pcc.me.uk>
Date: Fri, 8 May 2026 10:47:55 -0700
Subject: [PATCH] =?UTF-8?q?[=F0=9D=98=80=F0=9D=97=BD=F0=9D=97=BF]=20initia?=
 =?UTF-8?q?l=20version?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Created using spr 1.3.6-beta.1
---
 llvm/test/tools/llvm-objdump/multiple-symbols.s | 2 +-
 llvm/tools/llvm-objdump/ObjdumpOpts.td          | 5 +++++
 llvm/tools/llvm-objdump/llvm-objdump.cpp        | 2 ++
 3 files changed, 8 insertions(+), 1 deletion(-)

diff --git a/llvm/test/tools/llvm-objdump/multiple-symbols.s b/llvm/test/tools/llvm-objdump/multiple-symbols.s
index 1b13f099ae98c..b2caf4038dad5 100644
--- a/llvm/test/tools/llvm-objdump/multiple-symbols.s
+++ b/llvm/test/tools/llvm-objdump/multiple-symbols.s
@@ -55,7 +55,7 @@
 
 @ RUN: llvm-objdump --triple armv8a --disassemble-symbols=aaaa -d %t.o | FileCheck --check-prefixes=HEAD,AAAA,AABB %s
 @ RUN: llvm-objdump --triple armv8a --disassemble-symbols=bbbb -d %t.o | FileCheck --check-prefixes=HEAD,BBBB,AABB %s
-@ RUN: llvm-objdump --triple armv8a --disassemble-symbols=aaaa,bbbb -d %t.o | FileCheck --check-prefixes=HEAD,AAAA,BBBB,AABB %s
+@ RUN: llvm-objdump --triple armv8a --disassemble=aaaa --disassemble=bbbb -d %t.o | FileCheck --check-prefixes=HEAD,AAAA,BBBB,AABB %s
 
 // With _any_ of those three options and also --show-all-symbols, the
 // disassembled code is still limited to just the symbol(s) you asked about,
diff --git a/llvm/tools/llvm-objdump/ObjdumpOpts.td b/llvm/tools/llvm-objdump/ObjdumpOpts.td
index 146674a6eb714..76b05268baee6 100644
--- a/llvm/tools/llvm-objdump/ObjdumpOpts.td
+++ b/llvm/tools/llvm-objdump/ObjdumpOpts.td
@@ -76,6 +76,11 @@ def disassemble_symbols_EQ : Joined<["--"], "disassemble-symbols=">,
            "Accept demangled names when --demangle is "
            "specified, otherwise accept mangled names">;
 
+def disassemble_EQ : Joined<["--"], "disassemble=">,
+  HelpText<"Specify a symbol name to diasassemble. "
+           "Accept demangled names when --demangle is "
+           "specified, otherwise accept mangled names">;
+
 def disassemble_zeroes : Flag<["--"], "disassemble-zeroes">,
   HelpText<"Do not skip blocks of zeroes when disassembling">;
 def : Flag<["-"], "z">, Alias<disassemble_zeroes>,
diff --git a/llvm/tools/llvm-objdump/llvm-objdump.cpp b/llvm/tools/llvm-objdump/llvm-objdump.cpp
index a8a856e79dff8..f00c99bc97f08 100644
--- a/llvm/tools/llvm-objdump/llvm-objdump.cpp
+++ b/llvm/tools/llvm-objdump/llvm-objdump.cpp
@@ -3718,6 +3718,8 @@ static void parseObjdumpOptions(const llvm::opt::InputArgList &InputArgs) {
   TracebackTable = InputArgs.hasArg(OBJDUMP_traceback_table);
   DisassembleSymbols =
       commaSeparatedValues(InputArgs, OBJDUMP_disassemble_symbols_EQ);
+  for (auto Sym : InputArgs.getAllArgValues(OBJDUMP_disassemble))
+    DisassembleSymbols.push_back(Sym);
   DisassembleZeroes = InputArgs.hasArg(OBJDUMP_disassemble_zeroes);
   if (const opt::Arg *A = InputArgs.getLastArg(OBJDUMP_dwarf_EQ)) {
     DwarfDumpType = StringSwitch<DIDumpType>(A->getValue())



More information about the llvm-commits mailing list