Skip to content

Commit aa5ee8f

Browse files
kamleshbhaluirnk
authored andcommitted
Honor -fuse-init-array when os is not specified on x86
Currently -fuse-init-array option is not effective when target triple does not specify os, on x86,x86_64. i.e. // -fuse-init-array is not honored. $ clang -target i386 -fuse-init-array test.c -S // -fuse-init-array is honored. $ clang -target i386-linux -fuse-init-array test.c -S This patch fixes first case. And does cleanup. Reviewers: rnk, craig.topper, fhahn, echristo Reviewed By: rnk Differential Revision: https://reviews.llvm.org/D71360
1 parent d7af86b commit aa5ee8f

13 files changed

+8
-64
lines changed

llvm/lib/CodeGen/TargetLoweringObjectFileImpl.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,7 @@ void TargetLoweringObjectFileELF::Initialize(MCContext &Ctx,
9797
TM = &TgtM;
9898

9999
CodeModel::Model CM = TgtM.getCodeModel();
100+
InitializeELF(TgtM.Options.UseInitArray);
100101

101102
switch (TgtM.getTargetTriple().getArch()) {
102103
case Triple::arm:

llvm/lib/Target/AArch64/AArch64TargetObjectFile.cpp

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@ using namespace dwarf;
2020
void AArch64_ELFTargetObjectFile::Initialize(MCContext &Ctx,
2121
const TargetMachine &TM) {
2222
TargetLoweringObjectFileELF::Initialize(Ctx, TM);
23-
InitializeELF(TM.Options.UseInitArray);
2423
// AARCH64 ELF ABI does not define static relocation type for TLS offset
2524
// within a module. Do not generate AT_location for TLS variables.
2625
SupportDebugThreadLocalLocation = false;

llvm/lib/Target/Hexagon/HexagonTargetObjectFile.cpp

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,6 @@ static const char *getSectionSuffixForSize(unsigned Size) {
112112
void HexagonTargetObjectFile::Initialize(MCContext &Ctx,
113113
const TargetMachine &TM) {
114114
TargetLoweringObjectFileELF::Initialize(Ctx, TM);
115-
InitializeELF(TM.Options.UseInitArray);
116115

117116
SmallDataSection =
118117
getContext().getELFSection(".sdata", ELF::SHT_PROGBITS,

llvm/lib/Target/Lanai/LanaiTargetObjectFile.cpp

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,6 @@ static cl::opt<unsigned> SSThreshold(
2828
void LanaiTargetObjectFile::Initialize(MCContext &Ctx,
2929
const TargetMachine &TM) {
3030
TargetLoweringObjectFileELF::Initialize(Ctx, TM);
31-
InitializeELF(TM.Options.UseInitArray);
3231

3332
SmallDataSection = getContext().getELFSection(
3433
".sdata", ELF::SHT_PROGBITS, ELF::SHF_WRITE | ELF::SHF_ALLOC);

llvm/lib/Target/Mips/MipsTargetObjectFile.cpp

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,6 @@ EmbeddedData("membedded-data", cl::Hidden,
4444

4545
void MipsTargetObjectFile::Initialize(MCContext &Ctx, const TargetMachine &TM){
4646
TargetLoweringObjectFileELF::Initialize(Ctx, TM);
47-
InitializeELF(TM.Options.UseInitArray);
4847

4948
SmallDataSection = getContext().getELFSection(
5049
".sdata", ELF::SHT_PROGBITS,

llvm/lib/Target/PowerPC/PPCTargetObjectFile.cpp

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@ void
1818
PPC64LinuxTargetObjectFile::
1919
Initialize(MCContext &Ctx, const TargetMachine &TM) {
2020
TargetLoweringObjectFileELF::Initialize(Ctx, TM);
21-
InitializeELF(TM.Options.UseInitArray);
2221
}
2322

2423
MCSection *PPC64LinuxTargetObjectFile::SelectSectionForGlobal(

llvm/lib/Target/RISCV/RISCVTargetObjectFile.cpp

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@ using namespace llvm;
1717
void RISCVELFTargetObjectFile::Initialize(MCContext &Ctx,
1818
const TargetMachine &TM) {
1919
TargetLoweringObjectFileELF::Initialize(Ctx, TM);
20-
InitializeELF(TM.Options.UseInitArray);
2120

2221
SmallDataSection = getContext().getELFSection(
2322
".sdata", ELF::SHT_PROGBITS, ELF::SHF_WRITE | ELF::SHF_ALLOC);

llvm/lib/Target/Sparc/SparcTargetObjectFile.cpp

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@ using namespace llvm;
1717
void SparcELFTargetObjectFile::Initialize(MCContext &Ctx,
1818
const TargetMachine &TM) {
1919
TargetLoweringObjectFileELF::Initialize(Ctx, TM);
20-
InitializeELF(TM.Options.UseInitArray);
2120
}
2221

2322
const MCExpr *SparcELFTargetObjectFile::getTTypeGlobalReference(

llvm/lib/Target/X86/X86TargetMachine.cpp

Lines changed: 1 addition & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -92,19 +92,9 @@ static std::unique_ptr<TargetLoweringObjectFile> createTLOF(const Triple &TT) {
9292
return std::make_unique<TargetLoweringObjectFileMachO>();
9393
}
9494

95-
if (TT.isOSFreeBSD())
96-
return std::make_unique<X86FreeBSDTargetObjectFile>();
97-
if (TT.isOSLinux() || TT.isOSNaCl() || TT.isOSIAMCU())
98-
return std::make_unique<X86LinuxNaClTargetObjectFile>();
99-
if (TT.isOSSolaris())
100-
return std::make_unique<X86SolarisTargetObjectFile>();
101-
if (TT.isOSFuchsia())
102-
return std::make_unique<X86FuchsiaTargetObjectFile>();
103-
if (TT.isOSBinFormatELF())
104-
return std::make_unique<X86ELFTargetObjectFile>();
10595
if (TT.isOSBinFormatCOFF())
10696
return std::make_unique<TargetLoweringObjectFileCOFF>();
107-
llvm_unreachable("unknown subtarget type");
97+
return std::make_unique<X86ELFTargetObjectFile>();
10898
}
10999

110100
static std::string computeDataLayout(const Triple &TT) {

llvm/lib/Target/X86/X86TargetObjectFile.cpp

Lines changed: 1 addition & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -65,28 +65,7 @@ const MCExpr *X86ELFTargetObjectFile::getDebugThreadLocalSymbol(
6565
}
6666

6767
void
68-
X86FreeBSDTargetObjectFile::Initialize(MCContext &Ctx,
68+
X86ELFTargetObjectFile::Initialize(MCContext &Ctx,
6969
const TargetMachine &TM) {
7070
TargetLoweringObjectFileELF::Initialize(Ctx, TM);
71-
InitializeELF(TM.Options.UseInitArray);
72-
}
73-
74-
void
75-
X86FuchsiaTargetObjectFile::Initialize(MCContext &Ctx,
76-
const TargetMachine &TM) {
77-
TargetLoweringObjectFileELF::Initialize(Ctx, TM);
78-
InitializeELF(TM.Options.UseInitArray);
79-
}
80-
81-
void
82-
X86LinuxNaClTargetObjectFile::Initialize(MCContext &Ctx,
83-
const TargetMachine &TM) {
84-
TargetLoweringObjectFileELF::Initialize(Ctx, TM);
85-
InitializeELF(TM.Options.UseInitArray);
86-
}
87-
88-
void X86SolarisTargetObjectFile::Initialize(MCContext &Ctx,
89-
const TargetMachine &TM) {
90-
TargetLoweringObjectFileELF::Initialize(Ctx, TM);
91-
InitializeELF(TM.Options.UseInitArray);
9271
}

0 commit comments

Comments
 (0)