forked from OSchip/llvm-project
Revert "Honor -fuse-init-array when os is not specified on x86"
This reverts commit aa5ee8f244
.
This change broke the sanitizer buildbots. See comments at the patchset
(https://reviews.llvm.org/D71360) for more information.
This commit is contained in:
parent
9ab15f303e
commit
2423774cc2
|
@ -97,7 +97,6 @@ void TargetLoweringObjectFileELF::Initialize(MCContext &Ctx,
|
|||
TM = &TgtM;
|
||||
|
||||
CodeModel::Model CM = TgtM.getCodeModel();
|
||||
InitializeELF(TgtM.Options.UseInitArray);
|
||||
|
||||
switch (TgtM.getTargetTriple().getArch()) {
|
||||
case Triple::arm:
|
||||
|
|
|
@ -20,6 +20,7 @@ using namespace dwarf;
|
|||
void AArch64_ELFTargetObjectFile::Initialize(MCContext &Ctx,
|
||||
const TargetMachine &TM) {
|
||||
TargetLoweringObjectFileELF::Initialize(Ctx, TM);
|
||||
InitializeELF(TM.Options.UseInitArray);
|
||||
// AARCH64 ELF ABI does not define static relocation type for TLS offset
|
||||
// within a module. Do not generate AT_location for TLS variables.
|
||||
SupportDebugThreadLocalLocation = false;
|
||||
|
|
|
@ -112,6 +112,7 @@ static const char *getSectionSuffixForSize(unsigned Size) {
|
|||
void HexagonTargetObjectFile::Initialize(MCContext &Ctx,
|
||||
const TargetMachine &TM) {
|
||||
TargetLoweringObjectFileELF::Initialize(Ctx, TM);
|
||||
InitializeELF(TM.Options.UseInitArray);
|
||||
|
||||
SmallDataSection =
|
||||
getContext().getELFSection(".sdata", ELF::SHT_PROGBITS,
|
||||
|
|
|
@ -28,6 +28,7 @@ static cl::opt<unsigned> SSThreshold(
|
|||
void LanaiTargetObjectFile::Initialize(MCContext &Ctx,
|
||||
const TargetMachine &TM) {
|
||||
TargetLoweringObjectFileELF::Initialize(Ctx, TM);
|
||||
InitializeELF(TM.Options.UseInitArray);
|
||||
|
||||
SmallDataSection = getContext().getELFSection(
|
||||
".sdata", ELF::SHT_PROGBITS, ELF::SHF_WRITE | ELF::SHF_ALLOC);
|
||||
|
|
|
@ -44,6 +44,7 @@ EmbeddedData("membedded-data", cl::Hidden,
|
|||
|
||||
void MipsTargetObjectFile::Initialize(MCContext &Ctx, const TargetMachine &TM){
|
||||
TargetLoweringObjectFileELF::Initialize(Ctx, TM);
|
||||
InitializeELF(TM.Options.UseInitArray);
|
||||
|
||||
SmallDataSection = getContext().getELFSection(
|
||||
".sdata", ELF::SHT_PROGBITS,
|
||||
|
|
|
@ -18,6 +18,7 @@ void
|
|||
PPC64LinuxTargetObjectFile::
|
||||
Initialize(MCContext &Ctx, const TargetMachine &TM) {
|
||||
TargetLoweringObjectFileELF::Initialize(Ctx, TM);
|
||||
InitializeELF(TM.Options.UseInitArray);
|
||||
}
|
||||
|
||||
MCSection *PPC64LinuxTargetObjectFile::SelectSectionForGlobal(
|
||||
|
|
|
@ -17,6 +17,7 @@ using namespace llvm;
|
|||
void RISCVELFTargetObjectFile::Initialize(MCContext &Ctx,
|
||||
const TargetMachine &TM) {
|
||||
TargetLoweringObjectFileELF::Initialize(Ctx, TM);
|
||||
InitializeELF(TM.Options.UseInitArray);
|
||||
|
||||
SmallDataSection = getContext().getELFSection(
|
||||
".sdata", ELF::SHT_PROGBITS, ELF::SHF_WRITE | ELF::SHF_ALLOC);
|
||||
|
|
|
@ -17,6 +17,7 @@ using namespace llvm;
|
|||
void SparcELFTargetObjectFile::Initialize(MCContext &Ctx,
|
||||
const TargetMachine &TM) {
|
||||
TargetLoweringObjectFileELF::Initialize(Ctx, TM);
|
||||
InitializeELF(TM.Options.UseInitArray);
|
||||
}
|
||||
|
||||
const MCExpr *SparcELFTargetObjectFile::getTTypeGlobalReference(
|
||||
|
|
|
@ -92,9 +92,19 @@ static std::unique_ptr<TargetLoweringObjectFile> createTLOF(const Triple &TT) {
|
|||
return std::make_unique<TargetLoweringObjectFileMachO>();
|
||||
}
|
||||
|
||||
if (TT.isOSFreeBSD())
|
||||
return std::make_unique<X86FreeBSDTargetObjectFile>();
|
||||
if (TT.isOSLinux() || TT.isOSNaCl() || TT.isOSIAMCU())
|
||||
return std::make_unique<X86LinuxNaClTargetObjectFile>();
|
||||
if (TT.isOSSolaris())
|
||||
return std::make_unique<X86SolarisTargetObjectFile>();
|
||||
if (TT.isOSFuchsia())
|
||||
return std::make_unique<X86FuchsiaTargetObjectFile>();
|
||||
if (TT.isOSBinFormatELF())
|
||||
return std::make_unique<X86ELFTargetObjectFile>();
|
||||
if (TT.isOSBinFormatCOFF())
|
||||
return std::make_unique<TargetLoweringObjectFileCOFF>();
|
||||
return std::make_unique<X86ELFTargetObjectFile>();
|
||||
llvm_unreachable("unknown subtarget type");
|
||||
}
|
||||
|
||||
static std::string computeDataLayout(const Triple &TT) {
|
||||
|
|
|
@ -65,7 +65,28 @@ const MCExpr *X86ELFTargetObjectFile::getDebugThreadLocalSymbol(
|
|||
}
|
||||
|
||||
void
|
||||
X86ELFTargetObjectFile::Initialize(MCContext &Ctx,
|
||||
X86FreeBSDTargetObjectFile::Initialize(MCContext &Ctx,
|
||||
const TargetMachine &TM) {
|
||||
TargetLoweringObjectFileELF::Initialize(Ctx, TM);
|
||||
InitializeELF(TM.Options.UseInitArray);
|
||||
}
|
||||
|
||||
void
|
||||
X86FuchsiaTargetObjectFile::Initialize(MCContext &Ctx,
|
||||
const TargetMachine &TM) {
|
||||
TargetLoweringObjectFileELF::Initialize(Ctx, TM);
|
||||
InitializeELF(TM.Options.UseInitArray);
|
||||
}
|
||||
|
||||
void
|
||||
X86LinuxNaClTargetObjectFile::Initialize(MCContext &Ctx,
|
||||
const TargetMachine &TM) {
|
||||
TargetLoweringObjectFileELF::Initialize(Ctx, TM);
|
||||
InitializeELF(TM.Options.UseInitArray);
|
||||
}
|
||||
|
||||
void X86SolarisTargetObjectFile::Initialize(MCContext &Ctx,
|
||||
const TargetMachine &TM) {
|
||||
TargetLoweringObjectFileELF::Initialize(Ctx, TM);
|
||||
InitializeELF(TM.Options.UseInitArray);
|
||||
}
|
||||
|
|
|
@ -44,11 +44,33 @@ namespace llvm {
|
|||
X86ELFTargetObjectFile() {
|
||||
PLTRelativeVariantKind = MCSymbolRefExpr::VK_PLT;
|
||||
}
|
||||
void Initialize(MCContext &Ctx, const TargetMachine &TM) override;
|
||||
|
||||
/// Describe a TLS variable address within debug info.
|
||||
const MCExpr *getDebugThreadLocalSymbol(const MCSymbol *Sym) const override;
|
||||
};
|
||||
|
||||
/// X86FreeBSDTargetObjectFile - This implementation is used for FreeBSD
|
||||
/// on x86 and x86-64.
|
||||
class X86FreeBSDTargetObjectFile : public X86ELFTargetObjectFile {
|
||||
void Initialize(MCContext &Ctx, const TargetMachine &TM) override;
|
||||
};
|
||||
|
||||
/// This implementation is used for Fuchsia on x86-64.
|
||||
class X86FuchsiaTargetObjectFile : public X86ELFTargetObjectFile {
|
||||
void Initialize(MCContext &Ctx, const TargetMachine &TM) override;
|
||||
};
|
||||
|
||||
/// X86LinuxNaClTargetObjectFile - This implementation is used for linux and
|
||||
/// Native Client on x86 and x86-64.
|
||||
class X86LinuxNaClTargetObjectFile : public X86ELFTargetObjectFile {
|
||||
void Initialize(MCContext &Ctx, const TargetMachine &TM) override;
|
||||
};
|
||||
|
||||
/// This implementation is used for Solaris on x86/x86-64.
|
||||
class X86SolarisTargetObjectFile : public X86ELFTargetObjectFile {
|
||||
void Initialize(MCContext &Ctx, const TargetMachine &TM) override;
|
||||
};
|
||||
|
||||
} // end namespace llvm
|
||||
|
||||
#endif
|
||||
|
|
|
@ -8,7 +8,6 @@
|
|||
; RUN: llc -mtriple i586-intel-elfiamcu -use-ctors < %s | FileCheck %s --check-prefix=MCU-CTORS
|
||||
; RUN: llc -mtriple i586-intel-elfiamcu < %s | FileCheck %s --check-prefix=MCU-INIT-ARRAY
|
||||
; RUN: llc -mtriple x86_64-win32-gnu < %s | FileCheck --check-prefix=COFF-CTOR %s
|
||||
; RUN: llc -mtriple x86_64 -use-ctors=false < %s | FileCheck %s
|
||||
@llvm.global_ctors = appending global [3 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 65535, void ()* @f, i8* null}, { i32, void ()*, i8* } { i32 15, void ()* @g, i8* @v }, { i32, void ()*, i8* } { i32 55555, void ()* @h, i8* @v }]
|
||||
|
||||
@v = weak_odr global i8 0
|
||||
|
@ -70,5 +69,3 @@ entry:
|
|||
; COFF-CTOR-NEXT: .section .ctors,"dw"
|
||||
; COFF-CTOR-NEXT: .p2align 3
|
||||
; COFF-CTOR-NEXT: .quad f
|
||||
|
||||
; CHECK: .init_array
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
; RUN: llc < %s -mtriple=x86_64-netbsd -use-ctors | FileCheck %s
|
||||
; RUN: llc < %s -mtriple=x86_64-netbsd | FileCheck %s
|
||||
|
||||
; Check that our compiler never emits global constructors
|
||||
; inside the .init_array section when building for a non supported target.
|
||||
|
|
Loading…
Reference in New Issue