[llvm] eb22392 - MCAssembler: Move LinkerOptions to MachObjectWriter

Fangrui Song via llvm-commits llvm-commits at lists.llvm.org
Mon Jul 22 22:02:56 PDT 2024


Author: Fangrui Song
Date: 2024-07-22T22:02:51-07:00
New Revision: eb2239299e51df64fe97e247aacbc4552349c2f9

URL: https://github.com/llvm/llvm-project/commit/eb2239299e51df64fe97e247aacbc4552349c2f9
DIFF: https://github.com/llvm/llvm-project/commit/eb2239299e51df64fe97e247aacbc4552349c2f9.diff

LOG: MCAssembler: Move LinkerOptions to MachObjectWriter

Added: 
    

Modified: 
    llvm/include/llvm/MC/MCAssembler.h
    llvm/include/llvm/MC/MCMachObjectWriter.h
    llvm/lib/MC/MCAssembler.cpp
    llvm/lib/MC/MCMachOStreamer.cpp
    llvm/lib/MC/MachObjectWriter.cpp

Removed: 
    


################################################################################
diff  --git a/llvm/include/llvm/MC/MCAssembler.h b/llvm/include/llvm/MC/MCAssembler.h
index a834f09da1dd0..cebec42451800 100644
--- a/llvm/include/llvm/MC/MCAssembler.h
+++ b/llvm/include/llvm/MC/MCAssembler.h
@@ -71,9 +71,6 @@ class MCAssembler {
 
   SmallVector<const MCSymbol *, 0> Symbols;
 
-  /// The list of linker options to propagate into the object file.
-  std::vector<std::vector<std::string>> LinkerOptions;
-
   MCDwarfLineTableParams LTParams;
 
   /// The set of function symbols for which a .thumb_func directive has
@@ -236,10 +233,6 @@ class MCAssembler {
     return make_pointee_range(Symbols);
   }
 
-  std::vector<std::vector<std::string>> &getLinkerOptions() {
-    return LinkerOptions;
-  }
-
   bool registerSection(MCSection &Section);
   bool registerSymbol(const MCSymbol &Symbol);
 

diff  --git a/llvm/include/llvm/MC/MCMachObjectWriter.h b/llvm/include/llvm/MC/MCMachObjectWriter.h
index 919b7217f2ea6..4386d84748271 100644
--- a/llvm/include/llvm/MC/MCMachObjectWriter.h
+++ b/llvm/include/llvm/MC/MCMachObjectWriter.h
@@ -164,6 +164,9 @@ class MachObjectWriter : public MCObjectWriter {
   VersionInfoType VersionInfo{};
   VersionInfoType TargetVariantVersionInfo{};
 
+  // The list of linker options for LC_LINKER_OPTION.
+  std::vector<std::vector<std::string>> LinkerOptions;
+
   MachSymbolData *findSymbolData(const MCSymbol &Sym);
 
   void writeWithPadding(StringRef Str, uint64_t Size);
@@ -249,6 +252,10 @@ class MachObjectWriter : public MCObjectWriter {
     TargetVariantVersionInfo.SDKVersion = SDKVersion;
   }
 
+  std::vector<std::vector<std::string>> &getLinkerOptions() {
+    return LinkerOptions;
+  }
+
   /// @}
 
   /// \name Target Writer Proxy Accessors

diff  --git a/llvm/lib/MC/MCAssembler.cpp b/llvm/lib/MC/MCAssembler.cpp
index f03edb475f9ea..4e395b8436204 100644
--- a/llvm/lib/MC/MCAssembler.cpp
+++ b/llvm/lib/MC/MCAssembler.cpp
@@ -93,7 +93,6 @@ void MCAssembler::reset() {
   SubsectionsViaSymbols = false;
   Sections.clear();
   Symbols.clear();
-  LinkerOptions.clear();
   ThumbFuncs.clear();
   BundleAlignSize = 0;
 

diff  --git a/llvm/lib/MC/MCMachOStreamer.cpp b/llvm/lib/MC/MCMachOStreamer.cpp
index 63c54e62bea77..a52be11a2c431 100644
--- a/llvm/lib/MC/MCMachOStreamer.cpp
+++ b/llvm/lib/MC/MCMachOStreamer.cpp
@@ -226,7 +226,7 @@ void MCMachOStreamer::emitAssemblerFlag(MCAssemblerFlag Flag) {
 }
 
 void MCMachOStreamer::emitLinkerOptions(ArrayRef<std::string> Options) {
-  getAssembler().getLinkerOptions().push_back(Options);
+  getWriter().getLinkerOptions().push_back(Options);
 }
 
 void MCMachOStreamer::emitDataRegion(MCDataRegionType Kind) {

diff  --git a/llvm/lib/MC/MachObjectWriter.cpp b/llvm/lib/MC/MachObjectWriter.cpp
index c8ef373f57aec..ccf507ef97b77 100644
--- a/llvm/lib/MC/MachObjectWriter.cpp
+++ b/llvm/lib/MC/MachObjectWriter.cpp
@@ -60,6 +60,7 @@ void MachObjectWriter::reset() {
   VersionInfo.SDKVersion = VersionTuple();
   TargetVariantVersionInfo.Major = 0;
   TargetVariantVersionInfo.SDKVersion = VersionTuple();
+  LinkerOptions.clear();
   MCObjectWriter::reset();
 }
 
@@ -857,7 +858,7 @@ uint64_t MachObjectWriter::writeObject(MCAssembler &Asm) {
   }
 
   // Add the linker option load commands sizes.
-  for (const auto &Option : Asm.getLinkerOptions()) {
+  for (const auto &Option : LinkerOptions) {
     ++NumLoadCommands;
     LoadCommandsSize += ComputeLinkerOptionsLoadCommandSize(Option, is64Bit());
   }
@@ -1016,7 +1017,7 @@ uint64_t MachObjectWriter::writeObject(MCAssembler &Asm) {
   }
 
   // Write the linker options load commands.
-  for (const auto &Option : Asm.getLinkerOptions())
+  for (const auto &Option : LinkerOptions)
     writeLinkerOptionsLoadCommand(Option);
 
   // Write the actual section data.


        


More information about the llvm-commits mailing list