mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-26 04:32:44 +01:00
Simplify interface now that we don't need to pass IsPCRel. NFC.
llvm-svn: 307734
This commit is contained in:
parent
0e7c60c216
commit
d9a5728a85
@ -233,8 +233,7 @@ public:
|
||||
|
||||
void recordRelocation(MCAssembler &Asm, const MCAsmLayout &Layout,
|
||||
const MCFragment *Fragment, const MCFixup &Fixup,
|
||||
MCValue Target, bool &IsPCRel,
|
||||
uint64_t &FixedValue) override;
|
||||
MCValue Target, uint64_t &FixedValue) override;
|
||||
|
||||
void bindIndirectSymbols(MCAssembler &Asm);
|
||||
|
||||
|
@ -86,7 +86,7 @@ public:
|
||||
virtual void recordRelocation(MCAssembler &Asm, const MCAsmLayout &Layout,
|
||||
const MCFragment *Fragment,
|
||||
const MCFixup &Fixup, MCValue Target,
|
||||
bool &IsPCRel, uint64_t &FixedValue) = 0;
|
||||
uint64_t &FixedValue) = 0;
|
||||
|
||||
/// Check whether the difference (A - B) between two symbol references is
|
||||
/// fully resolved.
|
||||
|
@ -19,6 +19,7 @@
|
||||
#include "llvm/ADT/StringRef.h"
|
||||
#include "llvm/ADT/Twine.h"
|
||||
#include "llvm/BinaryFormat/ELF.h"
|
||||
#include "llvm/MC/MCAsmBackend.h"
|
||||
#include "llvm/MC/MCAsmInfo.h"
|
||||
#include "llvm/MC/MCAsmLayout.h"
|
||||
#include "llvm/MC/MCAssembler.h"
|
||||
@ -26,6 +27,7 @@
|
||||
#include "llvm/MC/MCELFObjectWriter.h"
|
||||
#include "llvm/MC/MCExpr.h"
|
||||
#include "llvm/MC/MCFixup.h"
|
||||
#include "llvm/MC/MCFixupKindInfo.h"
|
||||
#include "llvm/MC/MCFragment.h"
|
||||
#include "llvm/MC/MCObjectWriter.h"
|
||||
#include "llvm/MC/MCSection.h"
|
||||
@ -204,8 +206,7 @@ public:
|
||||
|
||||
void recordRelocation(MCAssembler &Asm, const MCAsmLayout &Layout,
|
||||
const MCFragment *Fragment, const MCFixup &Fixup,
|
||||
MCValue Target, bool &IsPCRel,
|
||||
uint64_t &FixedValue) override;
|
||||
MCValue Target, uint64_t &FixedValue) override;
|
||||
|
||||
// Map from a signature symbol to the group section index
|
||||
using RevGroupMapTy = DenseMap<const MCSymbol *, unsigned>;
|
||||
@ -626,7 +627,10 @@ void ELFObjectWriter::recordRelocation(MCAssembler &Asm,
|
||||
const MCAsmLayout &Layout,
|
||||
const MCFragment *Fragment,
|
||||
const MCFixup &Fixup, MCValue Target,
|
||||
bool &IsPCRel, uint64_t &FixedValue) {
|
||||
uint64_t &FixedValue) {
|
||||
MCAsmBackend &Backend = Asm.getBackend();
|
||||
bool IsPCRel = Backend.getFixupKindInfo(Fixup.getKind()).Flags &
|
||||
MCFixupKindInfo::FKF_IsPCRel;
|
||||
const MCSectionELF &FixupSection = cast<MCSectionELF>(*Fragment->getParent());
|
||||
uint64_t C = Target.getConstant();
|
||||
uint64_t FixupOffset = Layout.getFragmentOffset(Fragment) + Fixup.getOffset();
|
||||
|
@ -653,15 +653,12 @@ MCAssembler::handleFixup(const MCAsmLayout &Layout, MCFragment &F,
|
||||
// Evaluate the fixup.
|
||||
MCValue Target;
|
||||
uint64_t FixedValue;
|
||||
bool IsPCRel = Backend.getFixupKindInfo(Fixup.getKind()).Flags &
|
||||
MCFixupKindInfo::FKF_IsPCRel;
|
||||
bool IsResolved = evaluateFixup(Layout, Fixup, &F, Target, FixedValue);
|
||||
if (!IsResolved) {
|
||||
// The fixup was unresolved, we need a relocation. Inform the object
|
||||
// writer of the relocation, and give it an opportunity to adjust the
|
||||
// fixup value if need be.
|
||||
getWriter().recordRelocation(*this, Layout, &F, Fixup, Target, IsPCRel,
|
||||
FixedValue);
|
||||
getWriter().recordRelocation(*this, Layout, &F, Fixup, Target, FixedValue);
|
||||
}
|
||||
return std::make_tuple(Target, FixedValue, IsResolved);
|
||||
}
|
||||
|
@ -449,7 +449,7 @@ void MachObjectWriter::recordRelocation(MCAssembler &Asm,
|
||||
const MCAsmLayout &Layout,
|
||||
const MCFragment *Fragment,
|
||||
const MCFixup &Fixup, MCValue Target,
|
||||
bool &IsPCRel, uint64_t &FixedValue) {
|
||||
uint64_t &FixedValue) {
|
||||
TargetObjectWriter->recordRelocation(this, Asm, Layout, Fragment, Fixup,
|
||||
Target, FixedValue);
|
||||
}
|
||||
|
@ -232,8 +232,7 @@ private:
|
||||
|
||||
void recordRelocation(MCAssembler &Asm, const MCAsmLayout &Layout,
|
||||
const MCFragment *Fragment, const MCFixup &Fixup,
|
||||
MCValue Target, bool &IsPCRel,
|
||||
uint64_t &FixedValue) override;
|
||||
MCValue Target, uint64_t &FixedValue) override;
|
||||
|
||||
void executePostLayoutBinding(MCAssembler &Asm,
|
||||
const MCAsmLayout &Layout) override;
|
||||
@ -353,7 +352,10 @@ void WasmObjectWriter::recordRelocation(MCAssembler &Asm,
|
||||
const MCAsmLayout &Layout,
|
||||
const MCFragment *Fragment,
|
||||
const MCFixup &Fixup, MCValue Target,
|
||||
bool &IsPCRel, uint64_t &FixedValue) {
|
||||
uint64_t &FixedValue) {
|
||||
MCAsmBackend &Backend = Asm.getBackend();
|
||||
bool IsPCRel = Backend.getFixupKindInfo(Fixup.getKind()).Flags &
|
||||
MCFixupKindInfo::FKF_IsPCRel;
|
||||
const auto &FixupSection = cast<MCSectionWasm>(*Fragment->getParent());
|
||||
uint64_t C = Target.getConstant();
|
||||
uint64_t FixupOffset = Layout.getFragmentOffset(Fragment) + Fixup.getOffset();
|
||||
|
@ -197,8 +197,7 @@ public:
|
||||
|
||||
void recordRelocation(MCAssembler &Asm, const MCAsmLayout &Layout,
|
||||
const MCFragment *Fragment, const MCFixup &Fixup,
|
||||
MCValue Target, bool &IsPCRel,
|
||||
uint64_t &FixedValue) override;
|
||||
MCValue Target, uint64_t &FixedValue) override;
|
||||
|
||||
void createFileSymbols(MCAssembler &Asm);
|
||||
void assignSectionNumbers();
|
||||
@ -708,9 +707,11 @@ bool WinCOFFObjectWriter::isSymbolRefDifferenceFullyResolvedImpl(
|
||||
InSet, IsPCRel);
|
||||
}
|
||||
|
||||
void WinCOFFObjectWriter::recordRelocation(
|
||||
MCAssembler &Asm, const MCAsmLayout &Layout, const MCFragment *Fragment,
|
||||
const MCFixup &Fixup, MCValue Target, bool &IsPCRel, uint64_t &FixedValue) {
|
||||
void WinCOFFObjectWriter::recordRelocation(MCAssembler &Asm,
|
||||
const MCAsmLayout &Layout,
|
||||
const MCFragment *Fragment,
|
||||
const MCFixup &Fixup, MCValue Target,
|
||||
uint64_t &FixedValue) {
|
||||
assert(Target.getSymA() && "Relocation must reference a symbol!");
|
||||
|
||||
const MCSymbol &A = Target.getSymA()->getSymbol();
|
||||
|
Loading…
Reference in New Issue
Block a user