[llvm] [llvm-readobj] Add a reusable LLVMReadobjDriver library (PR #222917)
Anutosh Bhat via llvm-commits
llvm-commits at lists.llvm.org
Fri Sep 11 04:16:40 PDT 2026
https://github.com/anutosh491 updated https://github.com/llvm/llvm-project/pull/222917
>From 527e7abc13badd13565a40759bf7364adb549665 Mon Sep 17 00:00:00 2001
From: anutosh491 <andersonbhat491 at gmail.com>
Date: Fri, 11 Sep 2026 16:20:18 +0530
Subject: [PATCH] [llvm-readobj] Add a reusable LLVMReadobjDriver library
---
llvm/tools/llvm-readobj/CMakeLists.txt | 20 ++---------
.../llvm-readobj/{ => lib}/ARMEHABIPrinter.h | 0
.../{ => lib}/ARMWinEHPrinter.cpp | 0
.../llvm-readobj/{ => lib}/ARMWinEHPrinter.h | 0
llvm/tools/llvm-readobj/lib/CMakeLists.txt | 21 +++++++++++
.../llvm-readobj/{ => lib}/COFFDumper.cpp | 0
.../{ => lib}/COFFImportDumper.cpp | 0
.../{ => lib}/DwarfCFIEHPrinter.h | 0
.../llvm-readobj/{ => lib}/ELFDumper.cpp | 0
.../llvm-readobj/{ => lib}/MachODumper.cpp | 0
.../llvm-readobj/{ => lib}/ObjDumper.cpp | 0
llvm/tools/llvm-readobj/{ => lib}/ObjDumper.h | 0
llvm/tools/llvm-readobj/{ => lib}/Opts.td | 0
.../llvm-readobj/{ => lib}/StackMapPrinter.h | 0
.../llvm-readobj/{ => lib}/WasmDumper.cpp | 0
.../llvm-readobj/{ => lib}/Win64EHDumper.cpp | 0
.../llvm-readobj/{ => lib}/Win64EHDumper.h | 0
.../{ => lib}/WindowsResourceDumper.cpp | 0
.../{ => lib}/WindowsResourceDumper.h | 0
.../llvm-readobj/{ => lib}/XCOFFDumper.cpp | 0
.../llvm-readobj/{ => lib}/llvm-readobj.cpp | 0
.../llvm-readobj/{ => lib}/llvm-readobj.h | 0
.../llvm/tools/llvm-readobj/BUILD.gn | 32 +----------------
.../llvm/tools/llvm-readobj/lib/BUILD.gn | 35 +++++++++++++++++++
.../llvm-project-overlay/llvm/BUILD.bazel | 10 +++---
25 files changed, 65 insertions(+), 53 deletions(-)
rename llvm/tools/llvm-readobj/{ => lib}/ARMEHABIPrinter.h (100%)
rename llvm/tools/llvm-readobj/{ => lib}/ARMWinEHPrinter.cpp (100%)
rename llvm/tools/llvm-readobj/{ => lib}/ARMWinEHPrinter.h (100%)
create mode 100644 llvm/tools/llvm-readobj/lib/CMakeLists.txt
rename llvm/tools/llvm-readobj/{ => lib}/COFFDumper.cpp (100%)
rename llvm/tools/llvm-readobj/{ => lib}/COFFImportDumper.cpp (100%)
rename llvm/tools/llvm-readobj/{ => lib}/DwarfCFIEHPrinter.h (100%)
rename llvm/tools/llvm-readobj/{ => lib}/ELFDumper.cpp (100%)
rename llvm/tools/llvm-readobj/{ => lib}/MachODumper.cpp (100%)
rename llvm/tools/llvm-readobj/{ => lib}/ObjDumper.cpp (100%)
rename llvm/tools/llvm-readobj/{ => lib}/ObjDumper.h (100%)
rename llvm/tools/llvm-readobj/{ => lib}/Opts.td (100%)
rename llvm/tools/llvm-readobj/{ => lib}/StackMapPrinter.h (100%)
rename llvm/tools/llvm-readobj/{ => lib}/WasmDumper.cpp (100%)
rename llvm/tools/llvm-readobj/{ => lib}/Win64EHDumper.cpp (100%)
rename llvm/tools/llvm-readobj/{ => lib}/Win64EHDumper.h (100%)
rename llvm/tools/llvm-readobj/{ => lib}/WindowsResourceDumper.cpp (100%)
rename llvm/tools/llvm-readobj/{ => lib}/WindowsResourceDumper.h (100%)
rename llvm/tools/llvm-readobj/{ => lib}/XCOFFDumper.cpp (100%)
rename llvm/tools/llvm-readobj/{ => lib}/llvm-readobj.cpp (100%)
rename llvm/tools/llvm-readobj/{ => lib}/llvm-readobj.h (100%)
create mode 100644 llvm/utils/gn/secondary/llvm/tools/llvm-readobj/lib/BUILD.gn
diff --git a/llvm/tools/llvm-readobj/CMakeLists.txt b/llvm/tools/llvm-readobj/CMakeLists.txt
index 0051f87b3c103..488cc1864c994 100644
--- a/llvm/tools/llvm-readobj/CMakeLists.txt
+++ b/llvm/tools/llvm-readobj/CMakeLists.txt
@@ -9,27 +9,13 @@ set(LLVM_LINK_COMPONENTS
TargetParser
)
-set(LLVM_TARGET_DEFINITIONS Opts.td)
-tablegen(LLVM Opts.inc -gen-opt-parser-defs)
-add_public_tablegen_target(ReadobjOptsTableGen)
-
add_llvm_tool(llvm-readobj
- ARMWinEHPrinter.cpp
- COFFDumper.cpp
- COFFImportDumper.cpp
- ELFDumper.cpp
- llvm-readobj.cpp
- MachODumper.cpp
- ObjDumper.cpp
- WasmDumper.cpp
- Win64EHDumper.cpp
- WindowsResourceDumper.cpp
- XCOFFDumper.cpp
- DEPENDS
- ReadobjOptsTableGen
GENERATE_DRIVER
)
+add_subdirectory(lib)
+target_link_libraries(llvm-readobj PRIVATE LLVMReadobjDriver)
+
setup_host_tool(llvm-readobj LLVM_READOBJ llvm_readobj_exe llvm_readobj_target)
add_llvm_tool_symlink(llvm-readelf llvm-readobj)
diff --git a/llvm/tools/llvm-readobj/ARMEHABIPrinter.h b/llvm/tools/llvm-readobj/lib/ARMEHABIPrinter.h
similarity index 100%
rename from llvm/tools/llvm-readobj/ARMEHABIPrinter.h
rename to llvm/tools/llvm-readobj/lib/ARMEHABIPrinter.h
diff --git a/llvm/tools/llvm-readobj/ARMWinEHPrinter.cpp b/llvm/tools/llvm-readobj/lib/ARMWinEHPrinter.cpp
similarity index 100%
rename from llvm/tools/llvm-readobj/ARMWinEHPrinter.cpp
rename to llvm/tools/llvm-readobj/lib/ARMWinEHPrinter.cpp
diff --git a/llvm/tools/llvm-readobj/ARMWinEHPrinter.h b/llvm/tools/llvm-readobj/lib/ARMWinEHPrinter.h
similarity index 100%
rename from llvm/tools/llvm-readobj/ARMWinEHPrinter.h
rename to llvm/tools/llvm-readobj/lib/ARMWinEHPrinter.h
diff --git a/llvm/tools/llvm-readobj/lib/CMakeLists.txt b/llvm/tools/llvm-readobj/lib/CMakeLists.txt
new file mode 100644
index 0000000000000..a779934e61a8c
--- /dev/null
+++ b/llvm/tools/llvm-readobj/lib/CMakeLists.txt
@@ -0,0 +1,21 @@
+set(LLVM_TARGET_DEFINITIONS Opts.td)
+tablegen(LLVM Opts.inc -gen-opt-parser-defs)
+add_public_tablegen_target(ReadobjOptsTableGen)
+
+add_llvm_library(LLVMReadobjDriver
+ STATIC
+ ARMWinEHPrinter.cpp
+ COFFDumper.cpp
+ COFFImportDumper.cpp
+ ELFDumper.cpp
+ llvm-readobj.cpp
+ MachODumper.cpp
+ ObjDumper.cpp
+ WasmDumper.cpp
+ Win64EHDumper.cpp
+ WindowsResourceDumper.cpp
+ XCOFFDumper.cpp
+
+ DEPENDS
+ ReadobjOptsTableGen
+ )
diff --git a/llvm/tools/llvm-readobj/COFFDumper.cpp b/llvm/tools/llvm-readobj/lib/COFFDumper.cpp
similarity index 100%
rename from llvm/tools/llvm-readobj/COFFDumper.cpp
rename to llvm/tools/llvm-readobj/lib/COFFDumper.cpp
diff --git a/llvm/tools/llvm-readobj/COFFImportDumper.cpp b/llvm/tools/llvm-readobj/lib/COFFImportDumper.cpp
similarity index 100%
rename from llvm/tools/llvm-readobj/COFFImportDumper.cpp
rename to llvm/tools/llvm-readobj/lib/COFFImportDumper.cpp
diff --git a/llvm/tools/llvm-readobj/DwarfCFIEHPrinter.h b/llvm/tools/llvm-readobj/lib/DwarfCFIEHPrinter.h
similarity index 100%
rename from llvm/tools/llvm-readobj/DwarfCFIEHPrinter.h
rename to llvm/tools/llvm-readobj/lib/DwarfCFIEHPrinter.h
diff --git a/llvm/tools/llvm-readobj/ELFDumper.cpp b/llvm/tools/llvm-readobj/lib/ELFDumper.cpp
similarity index 100%
rename from llvm/tools/llvm-readobj/ELFDumper.cpp
rename to llvm/tools/llvm-readobj/lib/ELFDumper.cpp
diff --git a/llvm/tools/llvm-readobj/MachODumper.cpp b/llvm/tools/llvm-readobj/lib/MachODumper.cpp
similarity index 100%
rename from llvm/tools/llvm-readobj/MachODumper.cpp
rename to llvm/tools/llvm-readobj/lib/MachODumper.cpp
diff --git a/llvm/tools/llvm-readobj/ObjDumper.cpp b/llvm/tools/llvm-readobj/lib/ObjDumper.cpp
similarity index 100%
rename from llvm/tools/llvm-readobj/ObjDumper.cpp
rename to llvm/tools/llvm-readobj/lib/ObjDumper.cpp
diff --git a/llvm/tools/llvm-readobj/ObjDumper.h b/llvm/tools/llvm-readobj/lib/ObjDumper.h
similarity index 100%
rename from llvm/tools/llvm-readobj/ObjDumper.h
rename to llvm/tools/llvm-readobj/lib/ObjDumper.h
diff --git a/llvm/tools/llvm-readobj/Opts.td b/llvm/tools/llvm-readobj/lib/Opts.td
similarity index 100%
rename from llvm/tools/llvm-readobj/Opts.td
rename to llvm/tools/llvm-readobj/lib/Opts.td
diff --git a/llvm/tools/llvm-readobj/StackMapPrinter.h b/llvm/tools/llvm-readobj/lib/StackMapPrinter.h
similarity index 100%
rename from llvm/tools/llvm-readobj/StackMapPrinter.h
rename to llvm/tools/llvm-readobj/lib/StackMapPrinter.h
diff --git a/llvm/tools/llvm-readobj/WasmDumper.cpp b/llvm/tools/llvm-readobj/lib/WasmDumper.cpp
similarity index 100%
rename from llvm/tools/llvm-readobj/WasmDumper.cpp
rename to llvm/tools/llvm-readobj/lib/WasmDumper.cpp
diff --git a/llvm/tools/llvm-readobj/Win64EHDumper.cpp b/llvm/tools/llvm-readobj/lib/Win64EHDumper.cpp
similarity index 100%
rename from llvm/tools/llvm-readobj/Win64EHDumper.cpp
rename to llvm/tools/llvm-readobj/lib/Win64EHDumper.cpp
diff --git a/llvm/tools/llvm-readobj/Win64EHDumper.h b/llvm/tools/llvm-readobj/lib/Win64EHDumper.h
similarity index 100%
rename from llvm/tools/llvm-readobj/Win64EHDumper.h
rename to llvm/tools/llvm-readobj/lib/Win64EHDumper.h
diff --git a/llvm/tools/llvm-readobj/WindowsResourceDumper.cpp b/llvm/tools/llvm-readobj/lib/WindowsResourceDumper.cpp
similarity index 100%
rename from llvm/tools/llvm-readobj/WindowsResourceDumper.cpp
rename to llvm/tools/llvm-readobj/lib/WindowsResourceDumper.cpp
diff --git a/llvm/tools/llvm-readobj/WindowsResourceDumper.h b/llvm/tools/llvm-readobj/lib/WindowsResourceDumper.h
similarity index 100%
rename from llvm/tools/llvm-readobj/WindowsResourceDumper.h
rename to llvm/tools/llvm-readobj/lib/WindowsResourceDumper.h
diff --git a/llvm/tools/llvm-readobj/XCOFFDumper.cpp b/llvm/tools/llvm-readobj/lib/XCOFFDumper.cpp
similarity index 100%
rename from llvm/tools/llvm-readobj/XCOFFDumper.cpp
rename to llvm/tools/llvm-readobj/lib/XCOFFDumper.cpp
diff --git a/llvm/tools/llvm-readobj/llvm-readobj.cpp b/llvm/tools/llvm-readobj/lib/llvm-readobj.cpp
similarity index 100%
rename from llvm/tools/llvm-readobj/llvm-readobj.cpp
rename to llvm/tools/llvm-readobj/lib/llvm-readobj.cpp
diff --git a/llvm/tools/llvm-readobj/llvm-readobj.h b/llvm/tools/llvm-readobj/lib/llvm-readobj.h
similarity index 100%
rename from llvm/tools/llvm-readobj/llvm-readobj.h
rename to llvm/tools/llvm-readobj/lib/llvm-readobj.h
diff --git a/llvm/utils/gn/secondary/llvm/tools/llvm-readobj/BUILD.gn b/llvm/utils/gn/secondary/llvm/tools/llvm-readobj/BUILD.gn
index 2fd748e40bebc..f7b93a4c0c6b0 100644
--- a/llvm/utils/gn/secondary/llvm/tools/llvm-readobj/BUILD.gn
+++ b/llvm/utils/gn/secondary/llvm/tools/llvm-readobj/BUILD.gn
@@ -1,13 +1,7 @@
import("//llvm/tools/binutils_symlinks.gni")
-import("//llvm/utils/TableGen/tablegen.gni")
import("//llvm/utils/gn/build/driver_executable.gni")
import("//llvm/utils/gn/build/symlink_or_copy.gni")
-tablegen("Opts") {
- visibility = [ ":llvm-readobj" ]
- args = [ "-gen-opt-parser-defs" ]
-}
-
symlinks = [ "llvm-readelf" ]
if (llvm_install_binutils_symlinks) {
symlinks += [ "readelf" ]
@@ -29,29 +23,5 @@ group("symlinks") {
}
driver_executable("llvm-readobj") {
- deps = [
- ":Opts",
- "//llvm/lib/BinaryFormat",
- "//llvm/lib/DebugInfo/CodeView",
- "//llvm/lib/DebugInfo/DWARF",
- "//llvm/lib/DebugInfo/MSF",
- "//llvm/lib/DebugInfo/PDB",
- "//llvm/lib/Object",
- "//llvm/lib/Option",
- "//llvm/lib/Support",
- "//llvm/lib/TargetParser",
- ]
- sources = [
- "ARMWinEHPrinter.cpp",
- "COFFDumper.cpp",
- "COFFImportDumper.cpp",
- "ELFDumper.cpp",
- "MachODumper.cpp",
- "ObjDumper.cpp",
- "WasmDumper.cpp",
- "Win64EHDumper.cpp",
- "WindowsResourceDumper.cpp",
- "XCOFFDumper.cpp",
- "llvm-readobj.cpp",
- ]
+ deps = [ "lib" ]
}
diff --git a/llvm/utils/gn/secondary/llvm/tools/llvm-readobj/lib/BUILD.gn b/llvm/utils/gn/secondary/llvm/tools/llvm-readobj/lib/BUILD.gn
new file mode 100644
index 0000000000000..e34ad76f1f18c
--- /dev/null
+++ b/llvm/utils/gn/secondary/llvm/tools/llvm-readobj/lib/BUILD.gn
@@ -0,0 +1,35 @@
+import("//llvm/utils/TableGen/tablegen.gni")
+
+tablegen("Opts") {
+ visibility = [ ":lib" ]
+ args = [ "-gen-opt-parser-defs" ]
+}
+
+static_library("lib") {
+ output_name = "LLVMReadobjDriver"
+ deps = [
+ ":Opts",
+ "//llvm/lib/BinaryFormat",
+ "//llvm/lib/DebugInfo/CodeView",
+ "//llvm/lib/DebugInfo/DWARF",
+ "//llvm/lib/DebugInfo/MSF",
+ "//llvm/lib/DebugInfo/PDB",
+ "//llvm/lib/Object",
+ "//llvm/lib/Option",
+ "//llvm/lib/Support",
+ "//llvm/lib/TargetParser",
+ ]
+ sources = [
+ "ARMWinEHPrinter.cpp",
+ "COFFDumper.cpp",
+ "COFFImportDumper.cpp",
+ "ELFDumper.cpp",
+ "MachODumper.cpp",
+ "ObjDumper.cpp",
+ "WasmDumper.cpp",
+ "Win64EHDumper.cpp",
+ "WindowsResourceDumper.cpp",
+ "XCOFFDumper.cpp",
+ "llvm-readobj.cpp",
+ ]
+}
diff --git a/utils/bazel/llvm-project-overlay/llvm/BUILD.bazel b/utils/bazel/llvm-project-overlay/llvm/BUILD.bazel
index 225c77c6775c1..2cda2d1082cdc 100644
--- a/utils/bazel/llvm-project-overlay/llvm/BUILD.bazel
+++ b/utils/bazel/llvm-project-overlay/llvm/BUILD.bazel
@@ -6315,18 +6315,18 @@ binary_alias(
gentbl_cc_library(
name = "ReadobjOptsTableGen",
- strip_include_prefix = "tools/llvm-readobj",
- tbl_outs = {"tools/llvm-readobj/Opts.inc": ["-gen-opt-parser-defs"]},
+ strip_include_prefix = "tools/llvm-readobj/lib",
+ tbl_outs = {"tools/llvm-readobj/lib/Opts.inc": ["-gen-opt-parser-defs"]},
tblgen = ":llvm-tblgen",
- td_file = "tools/llvm-readobj/Opts.td",
+ td_file = "tools/llvm-readobj/lib/Opts.td",
deps = [":OptParserTdFiles"],
)
cc_library(
name = "llvm-readobj-lib",
srcs = glob([
- "tools/llvm-readobj/*.cpp",
- "tools/llvm-readobj/*.h",
+ "tools/llvm-readobj/lib/*.cpp",
+ "tools/llvm-readobj/lib/*.h",
]),
copts = llvm_copts,
deps = [
More information about the llvm-commits
mailing list