MC: Change MCObjectWriter::RecordRelocation to take an MCFragment (instead of a MCDataFragment). Object files should only need the generic MCFragment features.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99205 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Daniel Dunbar 2010-03-22 20:35:50 +00:00
parent f70f477024
commit b751418a39
4 changed files with 17 additions and 17 deletions

View File

@ -17,7 +17,7 @@
namespace llvm { namespace llvm {
class MCAsmFixup; class MCAsmFixup;
class MCAssembler; class MCAssembler;
class MCDataFragment; class MCFragment;
class MCValue; class MCValue;
class raw_ostream; class raw_ostream;
@ -69,7 +69,7 @@ public:
/// information about the relocation so that it can be emitted during /// information about the relocation so that it can be emitted during
/// WriteObject(). /// WriteObject().
virtual void RecordRelocation(const MCAssembler &Asm, virtual void RecordRelocation(const MCAssembler &Asm,
const MCDataFragment &Fragment, const MCFragment *Fragment,
const MCAsmFixup &Fixup, MCValue Target, const MCAsmFixup &Fixup, MCValue Target,
uint64_t &FixedValue) = 0; uint64_t &FixedValue) = 0;

View File

@ -17,7 +17,7 @@
namespace llvm { namespace llvm {
class MCAsmFixup; class MCAsmFixup;
class MCAssembler; class MCAssembler;
class MCDataFragment; class MCFragment;
class MCValue; class MCValue;
class raw_ostream; class raw_ostream;
@ -31,7 +31,7 @@ public:
virtual void ExecutePostLayoutBinding(MCAssembler &Asm); virtual void ExecutePostLayoutBinding(MCAssembler &Asm);
virtual void RecordRelocation(const MCAssembler &Asm, virtual void RecordRelocation(const MCAssembler &Asm,
const MCDataFragment &Fragment, const MCFragment *Fragment,
const MCAsmFixup &Fixup, MCValue Target, const MCAsmFixup &Fixup, MCValue Target,
uint64_t &FixedValue); uint64_t &FixedValue);

View File

@ -573,7 +573,7 @@ void MCAssembler::Finish() {
// The fixup was unresolved, we need a relocation. Inform the object // The fixup was unresolved, we need a relocation. Inform the object
// writer of the relocation, and give it an opportunity to adjust the // writer of the relocation, and give it an opportunity to adjust the
// fixup value if need be. // fixup value if need be.
Writer->RecordRelocation(*this, *DF, Fixup, Target, FixedValue); Writer->RecordRelocation(*this, DF, Fixup, Target, FixedValue);
} }
getBackend().ApplyFixup(Fixup, *DF, FixedValue); getBackend().ApplyFixup(Fixup, *DF, FixedValue);

View File

@ -438,7 +438,7 @@ public:
} }
void RecordX86_64Relocation(const MCAssembler &Asm, void RecordX86_64Relocation(const MCAssembler &Asm,
const MCDataFragment &Fragment, const MCFragment *Fragment,
const MCAsmFixup &Fixup, MCValue Target, const MCAsmFixup &Fixup, MCValue Target,
uint64_t &FixedValue) { uint64_t &FixedValue) {
unsigned IsPCRel = isFixupKindPCRel(Fixup.Kind); unsigned IsPCRel = isFixupKindPCRel(Fixup.Kind);
@ -446,7 +446,7 @@ public:
unsigned Log2Size = getFixupKindLog2Size(Fixup.Kind); unsigned Log2Size = getFixupKindLog2Size(Fixup.Kind);
// See <reloc.h>. // See <reloc.h>.
uint32_t Address = Fragment.getOffset() + Fixup.Offset; uint32_t Address = Fragment->getOffset() + Fixup.Offset;
int64_t Value = 0; int64_t Value = 0;
unsigned Index = 0; unsigned Index = 0;
unsigned IsExtern = 0; unsigned IsExtern = 0;
@ -521,7 +521,7 @@ public:
(Log2Size << 25) | (Log2Size << 25) |
(IsExtern << 27) | (IsExtern << 27) |
(Type << 28)); (Type << 28));
Relocations[Fragment.getParent()].push_back(MRE); Relocations[Fragment->getParent()].push_back(MRE);
Index = B_Base->getIndex(); Index = B_Base->getIndex();
IsExtern = 1; IsExtern = 1;
@ -622,14 +622,14 @@ public:
(Log2Size << 25) | (Log2Size << 25) |
(IsExtern << 27) | (IsExtern << 27) |
(Type << 28)); (Type << 28));
Relocations[Fragment.getParent()].push_back(MRE); Relocations[Fragment->getParent()].push_back(MRE);
} }
void RecordScatteredRelocation(const MCAssembler &Asm, void RecordScatteredRelocation(const MCAssembler &Asm,
const MCFragment &Fragment, const MCFragment *Fragment,
const MCAsmFixup &Fixup, MCValue Target, const MCAsmFixup &Fixup, MCValue Target,
uint64_t &FixedValue) { uint64_t &FixedValue) {
uint32_t Address = Fragment.getOffset() + Fixup.Offset; uint32_t Address = Fragment->getOffset() + Fixup.Offset;
unsigned IsPCRel = isFixupKindPCRel(Fixup.Kind); unsigned IsPCRel = isFixupKindPCRel(Fixup.Kind);
unsigned Log2Size = getFixupKindLog2Size(Fixup.Kind); unsigned Log2Size = getFixupKindLog2Size(Fixup.Kind);
unsigned Type = RIT_Vanilla; unsigned Type = RIT_Vanilla;
@ -670,7 +670,7 @@ public:
(IsPCRel << 30) | (IsPCRel << 30) |
RF_Scattered); RF_Scattered);
MRE.Word1 = Value2; MRE.Word1 = Value2;
Relocations[Fragment.getParent()].push_back(MRE); Relocations[Fragment->getParent()].push_back(MRE);
} }
MachRelocationEntry MRE; MachRelocationEntry MRE;
@ -680,10 +680,10 @@ public:
(IsPCRel << 30) | (IsPCRel << 30) |
RF_Scattered); RF_Scattered);
MRE.Word1 = Value; MRE.Word1 = Value;
Relocations[Fragment.getParent()].push_back(MRE); Relocations[Fragment->getParent()].push_back(MRE);
} }
void RecordRelocation(const MCAssembler &Asm, const MCDataFragment &Fragment, void RecordRelocation(const MCAssembler &Asm, const MCFragment *Fragment,
const MCAsmFixup &Fixup, MCValue Target, const MCAsmFixup &Fixup, MCValue Target,
uint64_t &FixedValue) { uint64_t &FixedValue) {
if (Is64Bit) { if (Is64Bit) {
@ -707,7 +707,7 @@ public:
} }
// See <reloc.h>. // See <reloc.h>.
uint32_t Address = Fragment.getOffset() + Fixup.Offset; uint32_t Address = Fragment->getOffset() + Fixup.Offset;
uint32_t Value = 0; uint32_t Value = 0;
unsigned Index = 0; unsigned Index = 0;
unsigned IsExtern = 0; unsigned IsExtern = 0;
@ -752,7 +752,7 @@ public:
(Log2Size << 25) | (Log2Size << 25) |
(IsExtern << 27) | (IsExtern << 27) |
(Type << 28)); (Type << 28));
Relocations[Fragment.getParent()].push_back(MRE); Relocations[Fragment->getParent()].push_back(MRE);
} }
void BindIndirectSymbols(MCAssembler &Asm) { void BindIndirectSymbols(MCAssembler &Asm) {
@ -1097,7 +1097,7 @@ void MachObjectWriter::ExecutePostLayoutBinding(MCAssembler &Asm) {
} }
void MachObjectWriter::RecordRelocation(const MCAssembler &Asm, void MachObjectWriter::RecordRelocation(const MCAssembler &Asm,
const MCDataFragment &Fragment, const MCFragment *Fragment,
const MCAsmFixup &Fixup, MCValue Target, const MCAsmFixup &Fixup, MCValue Target,
uint64_t &FixedValue) { uint64_t &FixedValue) {
((MachObjectWriterImpl*) Impl)->RecordRelocation(Asm, Fragment, Fixup, ((MachObjectWriterImpl*) Impl)->RecordRelocation(Asm, Fragment, Fixup,