aboutsummaryrefslogtreecommitdiff
path: root/llvm/tools/llvm-readobj/llvm-readobj.cpp
diff options
context:
space:
mode:
authorTomohiro Kashiwada <kikairoya@gmail.com>2025-08-28 05:16:42 +0900
committerGitHub <noreply@github.com>2025-08-27 23:16:42 +0300
commitfaf6ba47bf90be1a2c3dbcf02927f1e262c69c32 (patch)
tree0893de157bddb239436017f7b1f68a98f0b92f8f /llvm/tools/llvm-readobj/llvm-readobj.cpp
parent5bae3662a6892ae370685a8c41ef1dd6b17dca67 (diff)
downloadllvm-faf6ba47bf90be1a2c3dbcf02927f1e262c69c32.zip
llvm-faf6ba47bf90be1a2c3dbcf02927f1e262c69c32.tar.gz
llvm-faf6ba47bf90be1a2c3dbcf02927f1e262c69c32.tar.bz2
[llvm-readobj][COFF] Implement --coff-pseudoreloc in llvm-readobj to dump runtime pseudo-relocation records (#151816)
MinGW toolchain uses "runtime pseudo-relocation" mechanism to support auto-importing symbols from DLLs. There is no commonly used tools for dump the pseudo-relocation records, so we implement that functionality in llvm-readobj.
Diffstat (limited to 'llvm/tools/llvm-readobj/llvm-readobj.cpp')
-rw-r--r--llvm/tools/llvm-readobj/llvm-readobj.cpp4
1 files changed, 4 insertions, 0 deletions
diff --git a/llvm/tools/llvm-readobj/llvm-readobj.cpp b/llvm/tools/llvm-readobj/llvm-readobj.cpp
index 4c84ed7..2b34761 100644
--- a/llvm/tools/llvm-readobj/llvm-readobj.cpp
+++ b/llvm/tools/llvm-readobj/llvm-readobj.cpp
@@ -154,6 +154,7 @@ static bool CodeViewEnableGHash;
static bool CodeViewMergedTypes;
bool CodeViewSubsectionBytes;
static bool COFFBaseRelocs;
+static bool COFFPseudoRelocs;
static bool COFFDebugDirectory;
static bool COFFDirectives;
static bool COFFExports;
@@ -305,6 +306,7 @@ static void parseOptions(const opt::InputArgList &Args) {
opts::CodeViewMergedTypes = Args.hasArg(OPT_codeview_merged_types);
opts::CodeViewSubsectionBytes = Args.hasArg(OPT_codeview_subsection_bytes);
opts::COFFBaseRelocs = Args.hasArg(OPT_coff_basereloc);
+ opts::COFFPseudoRelocs = Args.hasArg(OPT_coff_pseudoreloc);
opts::COFFDebugDirectory = Args.hasArg(OPT_coff_debug_directory);
opts::COFFDirectives = Args.hasArg(OPT_coff_directives);
opts::COFFExports = Args.hasArg(OPT_coff_exports);
@@ -492,6 +494,8 @@ static void dumpObject(ObjectFile &Obj, ScopedPrinter &Writer,
Dumper->printCOFFDirectives();
if (opts::COFFBaseRelocs)
Dumper->printCOFFBaseReloc();
+ if (opts::COFFPseudoRelocs)
+ Dumper->printCOFFPseudoReloc();
if (opts::COFFDebugDirectory)
Dumper->printCOFFDebugDirectory();
if (opts::COFFTLSDirectory)