[lld] bffb26f - [ELF] Add LinkerDriver::ctx. NFC
Fangrui Song via llvm-commits
llvm-commits at lists.llvm.org
Mon Sep 16 16:25:33 PDT 2024
Author: Fangrui Song
Date: 2024-09-16T16:25:28-07:00
New Revision: bffb26f1531ecfe209b84f77b170ddb0df991351
URL: https://github.com/llvm/llvm-project/commit/bffb26f1531ecfe209b84f77b170ddb0df991351
DIFF: https://github.com/llvm/llvm-project/commit/bffb26f1531ecfe209b84f77b170ddb0df991351.diff
LOG: [ELF] Add LinkerDriver::ctx. NFC
Added:
Modified:
lld/ELF/Config.h
lld/ELF/Driver.cpp
Removed:
################################################################################
diff --git a/lld/ELF/Config.h b/lld/ELF/Config.h
index 11bf0ec4d173ba..93a5999d238336 100644
--- a/lld/ELF/Config.h
+++ b/lld/ELF/Config.h
@@ -48,6 +48,7 @@ class BitcodeCompiler;
class OutputSection;
class LinkerScript;
class TargetInfo;
+struct Ctx;
struct Partition;
struct PhdrEntry;
@@ -149,11 +150,14 @@ struct VersionDefinition {
class LinkerDriver {
public:
+ LinkerDriver(Ctx &ctx);
+ LinkerDriver(LinkerDriver &) = delete;
void linkerMain(ArrayRef<const char *> args);
void addFile(StringRef path, bool withLOption);
void addLibrary(StringRef name);
private:
+ Ctx &ctx;
void createFiles(llvm::opt::InputArgList &args);
void inferMachineType();
template <class ELFT> void link(llvm::opt::InputArgList &args);
@@ -652,6 +656,7 @@ struct Ctx {
// STT_SECTION symbol associated to the .toc input section.
llvm::DenseSet<std::pair<const Symbol *, uint64_t>> ppc64noTocRelax;
+ Ctx();
void reset();
llvm::raw_fd_ostream openAuxiliaryFile(llvm::StringRef, std::error_code &);
diff --git a/lld/ELF/Driver.cpp b/lld/ELF/Driver.cpp
index 3712d28f227f69..4a57bfd2fec323 100644
--- a/lld/ELF/Driver.cpp
+++ b/lld/ELF/Driver.cpp
@@ -91,8 +91,11 @@ void elf::errorOrWarn(const Twine &msg) {
error(msg);
}
+Ctx::Ctx() : driver(*this) {}
+
void Ctx::reset() {
- driver = LinkerDriver();
+ driver.~LinkerDriver();
+ new (&driver) LinkerDriver(*this);
script = nullptr;
target = nullptr;
@@ -613,6 +616,8 @@ constexpr const char *saveTempsValues[] = {
"resolution", "preopt", "promote", "internalize", "import",
"opt", "precodegen", "prelink", "combinedindex"};
+LinkerDriver::LinkerDriver(Ctx &ctx) : ctx(ctx) {}
+
void LinkerDriver::linkerMain(ArrayRef<const char *> argsArr) {
ELFOptTable parser;
opt::InputArgList args = parser.parse(argsArr.slice(1));
More information about the llvm-commits
mailing list