mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-02-08 21:32:39 +00:00
PPC: Share applyFixup between ELF and Darwin.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@168540 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
8f2dce0cda
commit
e8ca482c97
@ -92,6 +92,20 @@ public:
|
|||||||
return Infos[Kind - FirstTargetFixupKind];
|
return Infos[Kind - FirstTargetFixupKind];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void applyFixup(const MCFixup &Fixup, char *Data, unsigned DataSize,
|
||||||
|
uint64_t Value) const {
|
||||||
|
Value = adjustFixupValue(Fixup.getKind(), Value);
|
||||||
|
if (!Value) return; // Doesn't change encoding.
|
||||||
|
|
||||||
|
unsigned Offset = Fixup.getOffset();
|
||||||
|
|
||||||
|
// For each byte of the fragment that the fixup touches, mask in the bits
|
||||||
|
// from the fixup value. The Value has been "split up" into the appropriate
|
||||||
|
// bitfields above.
|
||||||
|
for (unsigned i = 0; i != 4; ++i)
|
||||||
|
Data[Offset + i] |= uint8_t((Value >> ((4 - i - 1)*8)) & 0xff);
|
||||||
|
}
|
||||||
|
|
||||||
bool mayNeedRelaxation(const MCInst &Inst) const {
|
bool mayNeedRelaxation(const MCInst &Inst) const {
|
||||||
// FIXME.
|
// FIXME.
|
||||||
return false;
|
return false;
|
||||||
@ -135,11 +149,6 @@ namespace {
|
|||||||
public:
|
public:
|
||||||
DarwinPPCAsmBackend(const Target &T) : PPCAsmBackend(T) { }
|
DarwinPPCAsmBackend(const Target &T) : PPCAsmBackend(T) { }
|
||||||
|
|
||||||
void applyFixup(const MCFixup &Fixup, char *Data, unsigned DataSize,
|
|
||||||
uint64_t Value) const {
|
|
||||||
llvm_unreachable("UNIMP");
|
|
||||||
}
|
|
||||||
|
|
||||||
MCObjectWriter *createObjectWriter(raw_ostream &OS) const {
|
MCObjectWriter *createObjectWriter(raw_ostream &OS) const {
|
||||||
bool is64 = getPointerSize() == 8;
|
bool is64 = getPointerSize() == 8;
|
||||||
return createMachObjectWriter(new PPCMachObjectWriter(
|
return createMachObjectWriter(new PPCMachObjectWriter(
|
||||||
@ -161,19 +170,6 @@ namespace {
|
|||||||
ELFPPCAsmBackend(const Target &T, uint8_t OSABI) :
|
ELFPPCAsmBackend(const Target &T, uint8_t OSABI) :
|
||||||
PPCAsmBackend(T), OSABI(OSABI) { }
|
PPCAsmBackend(T), OSABI(OSABI) { }
|
||||||
|
|
||||||
void applyFixup(const MCFixup &Fixup, char *Data, unsigned DataSize,
|
|
||||||
uint64_t Value) const {
|
|
||||||
Value = adjustFixupValue(Fixup.getKind(), Value);
|
|
||||||
if (!Value) return; // Doesn't change encoding.
|
|
||||||
|
|
||||||
unsigned Offset = Fixup.getOffset();
|
|
||||||
|
|
||||||
// For each byte of the fragment that the fixup touches, mask in the bits from
|
|
||||||
// the fixup value. The Value has been "split up" into the appropriate
|
|
||||||
// bitfields above.
|
|
||||||
for (unsigned i = 0; i != 4; ++i)
|
|
||||||
Data[Offset + i] |= uint8_t((Value >> ((4 - i - 1)*8)) & 0xff);
|
|
||||||
}
|
|
||||||
|
|
||||||
MCObjectWriter *createObjectWriter(raw_ostream &OS) const {
|
MCObjectWriter *createObjectWriter(raw_ostream &OS) const {
|
||||||
bool is64 = getPointerSize() == 8;
|
bool is64 = getPointerSize() == 8;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user