mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-07-25 13:24:46 +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:
@@ -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
|
||||
}
|
||||
|
Reference in New Issue
Block a user