mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-11-06 05:06:45 +00:00
the apple "ld_classic" linker doesn't support .literal16 in 32-bit
mode, and "ld64" (the default linker) falls back to it in -static mode. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77334 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
a02446a9d5
commit
4bb253c60f
@ -160,7 +160,7 @@ class TargetLoweringObjectFileMachO : public TargetLoweringObjectFile {
|
||||
const Section *EightByteConstantSection;
|
||||
const Section *SixteenByteConstantSection;
|
||||
public:
|
||||
TargetLoweringObjectFileMachO();
|
||||
TargetLoweringObjectFileMachO(const TargetMachine &TM);
|
||||
virtual const Section *SelectSectionForGlobal(const GlobalValue *GV,
|
||||
SectionKind Kind,
|
||||
const TargetMachine &TM) const;
|
||||
|
@ -106,7 +106,7 @@ void ARMTargetLowering::addQRTypeForNEON(MVT VT) {
|
||||
|
||||
static TargetLoweringObjectFile *createTLOF(TargetMachine &TM) {
|
||||
if (TM.getSubtarget<ARMSubtarget>().isTargetDarwin())
|
||||
return new TargetLoweringObjectFileMachO();
|
||||
return new TargetLoweringObjectFileMachO(TM);
|
||||
return new TargetLoweringObjectFileELF(true);
|
||||
}
|
||||
|
||||
|
@ -59,7 +59,7 @@ cl::desc("enable preincrement load/store generation on PPC (experimental)"),
|
||||
|
||||
static TargetLoweringObjectFile *CreateTLOF(const PPCTargetMachine &TM) {
|
||||
if (TM.getSubtargetImpl()->isDarwin())
|
||||
return new TargetLoweringObjectFileMachO();
|
||||
return new TargetLoweringObjectFileMachO(TM);
|
||||
return new TargetLoweringObjectFileELF(false, true);
|
||||
}
|
||||
|
||||
|
@ -486,7 +486,7 @@ getSectionForMergeableConstant(SectionKind Kind) const {
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
TargetLoweringObjectFileMachO::
|
||||
TargetLoweringObjectFileMachO() {
|
||||
TargetLoweringObjectFileMachO(const TargetMachine &TM) {
|
||||
TextSection = getOrCreateSection("\t.text", true, SectionKind::Text);
|
||||
DataSection = getOrCreateSection("\t.data", true, SectionKind::DataRel);
|
||||
|
||||
@ -496,8 +496,15 @@ TargetLoweringObjectFileMachO() {
|
||||
SectionKind::MergeableConst4);
|
||||
EightByteConstantSection = getOrCreateSection("\t.literal8\n", true,
|
||||
SectionKind::MergeableConst8);
|
||||
SixteenByteConstantSection =
|
||||
getOrCreateSection("\t.literal16\n", true, SectionKind::MergeableConst16);
|
||||
|
||||
// ld_classic doesn't support .literal16 in 32-bit mode, and ld64 falls back
|
||||
// to using it in -static mode.
|
||||
if (TM.getRelocationModel() != Reloc::Static &&
|
||||
TM.getTargetData()->getPointerSize() == 32)
|
||||
SixteenByteConstantSection =
|
||||
getOrCreateSection("\t.literal16\n", true, SectionKind::MergeableConst16);
|
||||
else
|
||||
SixteenByteConstantSection = 0;
|
||||
|
||||
ReadOnlySection = getOrCreateSection("\t.const", true, SectionKind::ReadOnly);
|
||||
|
||||
@ -551,7 +558,7 @@ TargetLoweringObjectFileMachO::SelectSectionForGlobal(const GlobalValue *GV,
|
||||
return FourByteConstantSection;
|
||||
if (Kind.isMergeableConst8())
|
||||
return EightByteConstantSection;
|
||||
if (Kind.isMergeableConst16())
|
||||
if (Kind.isMergeableConst16() && SixteenByteConstantSection)
|
||||
return SixteenByteConstantSection;
|
||||
return ReadOnlySection; // .const
|
||||
}
|
||||
@ -582,7 +589,7 @@ getSectionForMergeableConstant(SectionKind Kind) const {
|
||||
return FourByteConstantSection;
|
||||
if (Kind.isMergeableConst8())
|
||||
return EightByteConstantSection;
|
||||
if (Kind.isMergeableConst16())
|
||||
if (Kind.isMergeableConst16() && SixteenByteConstantSection)
|
||||
return SixteenByteConstantSection;
|
||||
return ReadOnlySection; // .const
|
||||
}
|
||||
|
@ -55,7 +55,7 @@ static TargetLoweringObjectFile *createTLOF(X86TargetMachine &TM) {
|
||||
switch (TM.getSubtarget<X86Subtarget>().TargetType) {
|
||||
default: llvm_unreachable("unknown subtarget type");
|
||||
case X86Subtarget::isDarwin:
|
||||
return new TargetLoweringObjectFileMachO();
|
||||
return new TargetLoweringObjectFileMachO(TM);
|
||||
case X86Subtarget::isELF:
|
||||
return new TargetLoweringObjectFileELF();
|
||||
case X86Subtarget::isMingw:
|
||||
|
Loading…
Reference in New Issue
Block a user