[llvm] 734660b - ELFObjectWriter: Simplify STT_SECTION adjustment
Fangrui Song via llvm-commits
llvm-commits at lists.llvm.org
Sat Apr 12 21:35:02 PDT 2025
Author: Fangrui Song
Date: 2025-04-12T21:34:57-07:00
New Revision: 734660b6dd95d37604ac43f43de4f8da518e7319
URL: https://github.com/llvm/llvm-project/commit/734660b6dd95d37604ac43f43de4f8da518e7319
DIFF: https://github.com/llvm/llvm-project/commit/734660b6dd95d37604ac43f43de4f8da518e7319.diff
LOG: ELFObjectWriter: Simplify STT_SECTION adjustment
Added:
Modified:
llvm/lib/MC/ELFObjectWriter.cpp
Removed:
################################################################################
diff --git a/llvm/lib/MC/ELFObjectWriter.cpp b/llvm/lib/MC/ELFObjectWriter.cpp
index 75450aa7de9d9..6e37dad7b753e 100644
--- a/llvm/lib/MC/ELFObjectWriter.cpp
+++ b/llvm/lib/MC/ELFObjectWriter.cpp
@@ -1364,8 +1364,7 @@ void ELFObjectWriter::recordRelocation(MCAssembler &Asm,
}
// We either rejected the fixup or folded B into C at this point.
- const auto *RefA = Target.getAddSym();
- const auto *SymA = RefA ? cast<MCSymbolELF>(RefA) : nullptr;
+ const auto *SymA = cast_or_null<MCSymbolELF>(Target.getAddSym());
bool ViaWeakRef = false;
if (SymA && SymA->isVariable()) {
@@ -1398,33 +1397,26 @@ void ELFObjectWriter::recordRelocation(MCAssembler &Asm,
uint64_t Addend = UseSectionSym ? C + Asm.getSymbolOffset(*SymA) : C;
FixedValue = usesRela(TO, FixupSection) ? 0 : Addend;
if (UseSectionSym) {
- const auto *SectionSymbol =
- SecA ? cast<MCSymbolELF>(SecA->getBeginSymbol()) : nullptr;
- if (SectionSymbol)
- SectionSymbol->setUsedInReloc();
- ELFRelocationEntry Rec(FixupOffset, SectionSymbol, Type, Addend);
- Relocations[&FixupSection].push_back(Rec);
- return;
- }
-
- // In PPC64 ELFv1, .quad .TOC. at tocbase in the .opd section is expected to
- // reference the null symbol.
- if (Type == ELF::R_PPC64_TOC &&
- TargetObjectWriter->getEMachine() == ELF::EM_PPC64)
- SymA = nullptr;
-
- const MCSymbolELF *RenamedSymA = SymA;
- if (SymA) {
- if (const MCSymbolELF *R = Renames.lookup(SymA))
- RenamedSymA = R;
-
- if (ViaWeakRef)
- RenamedSymA->setIsWeakrefUsedInReloc();
- else
- RenamedSymA->setUsedInReloc();
+ SymA = cast<MCSymbolELF>(SecA->getBeginSymbol());
+ SymA->setUsedInReloc();
+ } else {
+ // In PPC64 ELFv1, .quad .TOC. at tocbase in the .opd section is expected to
+ // reference the null symbol.
+ if (Type == ELF::R_PPC64_TOC &&
+ TargetObjectWriter->getEMachine() == ELF::EM_PPC64)
+ SymA = nullptr;
+
+ if (SymA) {
+ if (const MCSymbolELF *R = Renames.lookup(SymA))
+ SymA = R;
+
+ if (ViaWeakRef)
+ SymA->setIsWeakrefUsedInReloc();
+ else
+ SymA->setUsedInReloc();
+ }
}
- ELFRelocationEntry Rec(FixupOffset, RenamedSymA, Type, Addend);
- Relocations[&FixupSection].push_back(Rec);
+ Relocations[&FixupSection].emplace_back(FixupOffset, SymA, Type, Addend);
}
bool ELFObjectWriter::usesRela(const MCTargetOptions *TO,
More information about the llvm-commits
mailing list