[llvm] 1193f62 - MachObjectWriter: Remove the MCAssembler argument from getSymbolAddress

Fangrui Song via llvm-commits llvm-commits at lists.llvm.org
Sun May 25 12:38:13 PDT 2025


Author: Fangrui Song
Date: 2025-05-25T12:38:08-07:00
New Revision: 1193f62f7c19e4e0cc36ee5006fa27ec108dc466

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

LOG: MachObjectWriter: Remove the MCAssembler argument from getSymbolAddress

Added: 
    

Modified: 
    llvm/include/llvm/MC/MCLinkerOptimizationHint.h
    llvm/include/llvm/MC/MCMachObjectWriter.h
    llvm/lib/MC/MCLinkerOptimizationHint.cpp
    llvm/lib/MC/MachObjectWriter.cpp
    llvm/lib/Target/AArch64/MCTargetDesc/AArch64MachObjectWriter.cpp
    llvm/lib/Target/ARM/MCTargetDesc/ARMMachObjectWriter.cpp
    llvm/lib/Target/X86/MCTargetDesc/X86MachObjectWriter.cpp

Removed: 
    


################################################################################
diff  --git a/llvm/include/llvm/MC/MCLinkerOptimizationHint.h b/llvm/include/llvm/MC/MCLinkerOptimizationHint.h
index 530f2883ab9ee..dc086f94e5c59 100644
--- a/llvm/include/llvm/MC/MCLinkerOptimizationHint.h
+++ b/llvm/include/llvm/MC/MCLinkerOptimizationHint.h
@@ -108,7 +108,7 @@ class MCLOHDirective {
   /// Emit this directive in \p OutStream using the information available
   /// in the given \p ObjWriter and \p Layout to get the address of the
   /// arguments within the object file.
-  void emit_impl(const MCAssembler &Asm, raw_ostream &OutStream,
+  void emit_impl(raw_ostream &OutStream,
                  const MachObjectWriter &ObjWriter) const;
 
 public:

diff  --git a/llvm/include/llvm/MC/MCMachObjectWriter.h b/llvm/include/llvm/MC/MCMachObjectWriter.h
index 2dbe2e619324b..1b6c182d086dd 100644
--- a/llvm/include/llvm/MC/MCMachObjectWriter.h
+++ b/llvm/include/llvm/MC/MCMachObjectWriter.h
@@ -208,7 +208,7 @@ class MachObjectWriter final : public MCObjectWriter {
   uint64_t getSectionAddress(const MCSection *Sec) const {
     return SectionAddress.lookup(Sec);
   }
-  uint64_t getSymbolAddress(const MCSymbol &S, const MCAssembler &Asm) const;
+  uint64_t getSymbolAddress(const MCSymbol &S) const;
 
   uint64_t getFragmentAddress(const MCAssembler &Asm,
                               const MCFragment *Fragment) const;

diff  --git a/llvm/lib/MC/MCLinkerOptimizationHint.cpp b/llvm/lib/MC/MCLinkerOptimizationHint.cpp
index a0901af4f124b..34d29191468b6 100644
--- a/llvm/lib/MC/MCLinkerOptimizationHint.cpp
+++ b/llvm/lib/MC/MCLinkerOptimizationHint.cpp
@@ -23,20 +23,20 @@ using namespace llvm;
 // - Its argN.
 // <arg1> to <argN> are absolute addresses in the object file, i.e.,
 // relative addresses from the beginning of the object file.
-void MCLOHDirective::emit_impl(const MCAssembler &Asm, raw_ostream &OutStream,
+void MCLOHDirective::emit_impl(raw_ostream &OutStream,
                                const MachObjectWriter &ObjWriter
 
 ) const {
   encodeULEB128(Kind, OutStream);
   encodeULEB128(Args.size(), OutStream);
   for (const MCSymbol *Arg : Args)
-    encodeULEB128(ObjWriter.getSymbolAddress(*Arg, Asm), OutStream);
+    encodeULEB128(ObjWriter.getSymbolAddress(*Arg), OutStream);
 }
 
 void MCLOHDirective::emit(const MCAssembler &Asm,
                           MachObjectWriter &ObjWriter) const {
   raw_ostream &OutStream = ObjWriter.W.OS;
-  emit_impl(Asm, OutStream, ObjWriter);
+  emit_impl(OutStream, ObjWriter);
 }
 
 uint64_t MCLOHDirective::getEmitSize(const MCAssembler &Asm,
@@ -54,6 +54,6 @@ uint64_t MCLOHDirective::getEmitSize(const MCAssembler &Asm,
   };
 
   raw_counting_ostream OutStream;
-  emit_impl(Asm, OutStream, ObjWriter);
+  emit_impl(OutStream, ObjWriter);
   return OutStream.tell();
 }

diff  --git a/llvm/lib/MC/MachObjectWriter.cpp b/llvm/lib/MC/MachObjectWriter.cpp
index 76194e275d27e..44d7b75cf3fdb 100644
--- a/llvm/lib/MC/MachObjectWriter.cpp
+++ b/llvm/lib/MC/MachObjectWriter.cpp
@@ -94,8 +94,7 @@ MachObjectWriter::getFragmentAddress(const MCAssembler &Asm,
          Asm.getFragmentOffset(*Fragment);
 }
 
-uint64_t MachObjectWriter::getSymbolAddress(const MCSymbol &S,
-                                            const MCAssembler &Asm) const {
+uint64_t MachObjectWriter::getSymbolAddress(const MCSymbol &S) const {
   // If this is a variable, then recursively evaluate now.
   if (S.isVariable()) {
     if (const MCConstantExpr *C =
@@ -103,7 +102,7 @@ uint64_t MachObjectWriter::getSymbolAddress(const MCSymbol &S,
       return C->getValue();
 
     MCValue Target;
-    if (!S.getVariableValue()->evaluateAsRelocatable(Target, &Asm))
+    if (!S.getVariableValue()->evaluateAsRelocatable(Target, Asm))
       report_fatal_error("unable to evaluate offset for variable '" +
                          S.getName() + "'");
 
@@ -117,14 +116,14 @@ uint64_t MachObjectWriter::getSymbolAddress(const MCSymbol &S,
 
     uint64_t Address = Target.getConstant();
     if (Target.getAddSym())
-      Address += getSymbolAddress(*Target.getAddSym(), Asm);
+      Address += getSymbolAddress(*Target.getAddSym());
     if (Target.getSubSym())
-      Address -= getSymbolAddress(*Target.getSubSym(), Asm);
+      Address -= getSymbolAddress(*Target.getSubSym());
     return Address;
   }
 
   return getSectionAddress(S.getFragment()->getParent()) +
-         Asm.getSymbolOffset(S);
+         Asm->getSymbolOffset(S);
 }
 
 uint64_t MachObjectWriter::getPaddingSize(const MCAssembler &Asm,
@@ -432,7 +431,7 @@ void MachObjectWriter::writeNlist(MachSymbolData &MSD, const MCAssembler &Asm) {
   if (IsAlias && Symbol->isUndefined())
     Address = AliaseeInfo->StringIndex;
   else if (Symbol->isDefined())
-    Address = getSymbolAddress(OrigSymbol, Asm);
+    Address = getSymbolAddress(OrigSymbol);
   else if (Symbol->isCommon()) {
     // Common symbols are encoded with the size in the address
     // field, and their alignment in the flags.
@@ -1052,10 +1051,10 @@ uint64_t MachObjectWriter::writeObject() {
 
   // Write out the data-in-code region payload, if there is one.
   for (DataRegionData Data : DataRegions) {
-    uint64_t Start = getSymbolAddress(*Data.Start, Asm);
+    uint64_t Start = getSymbolAddress(*Data.Start);
     uint64_t End;
     if (Data.End)
-      End = getSymbolAddress(*Data.End, Asm);
+      End = getSymbolAddress(*Data.End);
     else
       report_fatal_error("Data region not terminated");
 

diff  --git a/llvm/lib/Target/AArch64/MCTargetDesc/AArch64MachObjectWriter.cpp b/llvm/lib/Target/AArch64/MCTargetDesc/AArch64MachObjectWriter.cpp
index d2c7e7871ae82..04ca434c764c2 100644
--- a/llvm/lib/Target/AArch64/MCTargetDesc/AArch64MachObjectWriter.cpp
+++ b/llvm/lib/Target/AArch64/MCTargetDesc/AArch64MachObjectWriter.cpp
@@ -274,14 +274,14 @@ void AArch64MachObjectWriter::recordRelocation(
       return;
     }
 
-    Value += (!A->getFragment() ? 0 : Writer->getSymbolAddress(*A, Asm)) -
-             (!A_Base || !A_Base->getFragment()
-                  ? 0
-                  : Writer->getSymbolAddress(*A_Base, Asm));
-    Value -= (!B->getFragment() ? 0 : Writer->getSymbolAddress(*B, Asm)) -
-             (!B_Base || !B_Base->getFragment()
-                  ? 0
-                  : Writer->getSymbolAddress(*B_Base, Asm));
+    Value +=
+        (!A->getFragment() ? 0 : Writer->getSymbolAddress(*A)) -
+        (!A_Base || !A_Base->getFragment() ? 0
+                                           : Writer->getSymbolAddress(*A_Base));
+    Value -=
+        (!B->getFragment() ? 0 : Writer->getSymbolAddress(*B)) -
+        (!B_Base || !B_Base->getFragment() ? 0
+                                           : Writer->getSymbolAddress(*B_Base));
 
     Type = MachO::ARM64_RELOC_UNSIGNED;
 
@@ -350,7 +350,7 @@ void AArch64MachObjectWriter::recordRelocation(
       // The index is the section ordinal (1-based).
       const MCSection &Sec = Symbol->getSection();
       Index = Sec.getOrdinal() + 1;
-      Value += Writer->getSymbolAddress(*Symbol, Asm);
+      Value += Writer->getSymbolAddress(*Symbol);
 
       if (IsPCRel)
         Value -= Writer->getFragmentAddress(Asm, Fragment) + Fixup.getOffset() +

diff  --git a/llvm/lib/Target/ARM/MCTargetDesc/ARMMachObjectWriter.cpp b/llvm/lib/Target/ARM/MCTargetDesc/ARMMachObjectWriter.cpp
index 009607eb357f1..72502c5749d91 100644
--- a/llvm/lib/Target/ARM/MCTargetDesc/ARMMachObjectWriter.cpp
+++ b/llvm/lib/Target/ARM/MCTargetDesc/ARMMachObjectWriter.cpp
@@ -158,7 +158,7 @@ void ARMMachObjectWriter::recordARMScatteredHalfRelocation(
     return;
   }
 
-  uint32_t Value = Writer->getSymbolAddress(*A, Asm);
+  uint32_t Value = Writer->getSymbolAddress(*A);
   uint32_t Value2 = 0;
   uint64_t SecAddr = Writer->getSectionAddress(A->getFragment()->getParent());
   FixedValue += SecAddr;
@@ -174,7 +174,7 @@ void ARMMachObjectWriter::recordARMScatteredHalfRelocation(
 
     // Select the appropriate 
diff erence relocation type.
     Type = MachO::ARM_RELOC_HALF_SECTDIFF;
-    Value2 = Writer->getSymbolAddress(*SB, Asm);
+    Value2 = Writer->getSymbolAddress(*SB);
     FixedValue -= Writer->getSectionAddress(SB->getFragment()->getParent());
   }
 
@@ -266,7 +266,7 @@ void ARMMachObjectWriter::recordARMScatteredRelocation(
     return;
   }
 
-  uint32_t Value = Writer->getSymbolAddress(*A, Asm);
+  uint32_t Value = Writer->getSymbolAddress(*A);
   uint64_t SecAddr = Writer->getSectionAddress(A->getFragment()->getParent());
   FixedValue += SecAddr;
   uint32_t Value2 = 0;
@@ -284,7 +284,7 @@ void ARMMachObjectWriter::recordARMScatteredRelocation(
 
     // Select the appropriate 
diff erence relocation type.
     Type = MachO::ARM_RELOC_SECTDIFF;
-    Value2 = Writer->getSymbolAddress(*SB, Asm);
+    Value2 = Writer->getSymbolAddress(*SB);
     FixedValue -= Writer->getSectionAddress(SB->getFragment()->getParent());
   }
 
@@ -422,8 +422,8 @@ void ARMMachObjectWriter::recordRelocation(MachObjectWriter *Writer,
       int64_t Res = Val.getConstant();
       bool isAbs = Val.isAbsolute();
       if (Relocatable && Val.getAddSym() && Val.getSubSym()) {
-        Res += Writer->getSymbolAddress(*Val.getAddSym(), Asm) -
-               Writer->getSymbolAddress(*Val.getSubSym(), Asm);
+        Res += Writer->getSymbolAddress(*Val.getAddSym()) -
+               Writer->getSymbolAddress(*Val.getSubSym());
         isAbs = true;
       }
       if (isAbs) {

diff  --git a/llvm/lib/Target/X86/MCTargetDesc/X86MachObjectWriter.cpp b/llvm/lib/Target/X86/MCTargetDesc/X86MachObjectWriter.cpp
index 10df56a05c4e4..896c1c3712266 100644
--- a/llvm/lib/Target/X86/MCTargetDesc/X86MachObjectWriter.cpp
+++ b/llvm/lib/Target/X86/MCTargetDesc/X86MachObjectWriter.cpp
@@ -191,10 +191,10 @@ void X86MachObjectWriter::RecordX86_64Relocation(
       return;
     }
 
-    Value += Writer->getSymbolAddress(*A, Asm) -
-             (!A_Base ? 0 : Writer->getSymbolAddress(*A_Base, Asm));
-    Value -= Writer->getSymbolAddress(*B, Asm) -
-             (!B_Base ? 0 : Writer->getSymbolAddress(*B_Base, Asm));
+    Value += Writer->getSymbolAddress(*A) -
+             (!A_Base ? 0 : Writer->getSymbolAddress(*A_Base));
+    Value -= Writer->getSymbolAddress(*B) -
+             (!B_Base ? 0 : Writer->getSymbolAddress(*B_Base));
 
     if (!A_Base)
       Index = A->getFragment()->getParent()->getOrdinal() + 1;
@@ -241,12 +241,12 @@ void X86MachObjectWriter::RecordX86_64Relocation(
     } else if (Symbol->isInSection() && !Symbol->isVariable()) {
       // The index is the section ordinal (1-based).
       Index = Symbol->getFragment()->getParent()->getOrdinal() + 1;
-      Value += Writer->getSymbolAddress(*Symbol, Asm);
+      Value += Writer->getSymbolAddress(*Symbol);
 
       if (IsPCRel)
         Value -= FixupAddress + (1 << Log2Size);
     } else if (Symbol->isVariable()) {
-      FixedValue = Writer->getSymbolAddress(*Symbol, Asm);
+      FixedValue = Writer->getSymbolAddress(*Symbol);
       return;
     } else {
       Asm.getContext().reportError(
@@ -369,7 +369,7 @@ bool X86MachObjectWriter::recordScatteredRelocation(MachObjectWriter *Writer,
     return false;
   }
 
-  uint32_t Value = Writer->getSymbolAddress(*A, Asm);
+  uint32_t Value = Writer->getSymbolAddress(*A);
   uint64_t SecAddr = Writer->getSectionAddress(A->getFragment()->getParent());
   FixedValue += SecAddr;
   uint32_t Value2 = 0;
@@ -390,7 +390,7 @@ bool X86MachObjectWriter::recordScatteredRelocation(MachObjectWriter *Writer,
     // pedantic compatibility with 'as'.
     Type = A->isExternal() ? (unsigned)MachO::GENERIC_RELOC_SECTDIFF
                            : (unsigned)MachO::GENERIC_RELOC_LOCAL_SECTDIFF;
-    Value2 = Writer->getSymbolAddress(*SB, Asm);
+    Value2 = Writer->getSymbolAddress(*SB);
     FixedValue -= Writer->getSectionAddress(SB->getFragment()->getParent());
   }
 
@@ -466,8 +466,8 @@ void X86MachObjectWriter::recordTLVPRelocation(MachObjectWriter *Writer,
     uint32_t FixupAddress =
         Writer->getFragmentAddress(Asm, Fragment) + Fixup.getOffset();
     IsPCRel = 1;
-    FixedValue = FixupAddress - Writer->getSymbolAddress(*SymB, Asm) +
-                 Target.getConstant();
+    FixedValue =
+        FixupAddress - Writer->getSymbolAddress(*SymB) + Target.getConstant();
     FixedValue += 1ULL << Log2Size;
   } else {
     FixedValue = 0;
@@ -543,8 +543,8 @@ void X86MachObjectWriter::RecordX86Relocation(MachObjectWriter *Writer,
       int64_t Res = Val.getConstant();
       bool isAbs = Val.isAbsolute();
       if (Relocatable && Val.getAddSym() && Val.getSubSym()) {
-        Res += Writer->getSymbolAddress(*Val.getAddSym(), Asm) -
-               Writer->getSymbolAddress(*Val.getSubSym(), Asm);
+        Res += Writer->getSymbolAddress(*Val.getAddSym()) -
+               Writer->getSymbolAddress(*Val.getSubSym());
         isAbs = true;
       }
       if (isAbs) {


        


More information about the llvm-commits mailing list