From f4c164c2b5bbaa2be4f1d8fedcf9df621378340d Mon Sep 17 00:00:00 2001 From: Nick Lewycky Date: Sun, 4 Nov 2007 17:32:10 +0000 Subject: [PATCH] Fix crash before main on ppc/linux with static constructors. PR1771 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43676 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Target/PowerPC/PPCAsmPrinter.cpp | 2 ++ lib/Target/PowerPC/PPCTargetAsmInfo.cpp | 2 ++ 2 files changed, 4 insertions(+) diff --git a/lib/Target/PowerPC/PPCAsmPrinter.cpp b/lib/Target/PowerPC/PPCAsmPrinter.cpp index 9ff41cab90c..53412792180 100644 --- a/lib/Target/PowerPC/PPCAsmPrinter.cpp +++ b/lib/Target/PowerPC/PPCAsmPrinter.cpp @@ -668,6 +668,8 @@ bool LinuxAsmPrinter::doFinalization(Module &M) { if (I->hasExternalLinkage()) { O << "\t.global " << name << '\n'; O << "\t.type " << name << ", @object\n"; + if (TAI->getBSSSection()) + SwitchToDataSection(TAI->getBSSSection(), I); O << name << ":\n"; O << "\t.zero " << Size << "\n"; } else if (I->hasInternalLinkage()) { diff --git a/lib/Target/PowerPC/PPCTargetAsmInfo.cpp b/lib/Target/PowerPC/PPCTargetAsmInfo.cpp index 7d9acd9c360..992b090edd5 100644 --- a/lib/Target/PowerPC/PPCTargetAsmInfo.cpp +++ b/lib/Target/PowerPC/PPCTargetAsmInfo.cpp @@ -60,6 +60,7 @@ DarwinTargetAsmInfo::DarwinTargetAsmInfo(const PPCTargetMachine &TM) HiddenDirective = "\t.private_extern\t"; SupportsExceptionHandling = false; NeedsIndirectEncoding = true; + BSSSection = 0; DwarfAbbrevSection = ".section __DWARF,__debug_abbrev,regular,debug"; DwarfInfoSection = ".section __DWARF,__debug_info,regular,debug"; @@ -94,6 +95,7 @@ LinuxTargetAsmInfo::LinuxTargetAsmInfo(const PPCTargetMachine &TM) StaticDtorsSection = ".section\t.dtors,\"aw\",@progbits"; UsedDirective = "\t# .no_dead_strip\t"; WeakRefDirective = "\t.weak\t"; + BSSSection = "\t.section\t\".sbss\",\"aw\",@nobits"; DwarfAbbrevSection = "\t.section\t.debug_abbrev,\"\",@progbits"; DwarfInfoSection = "\t.section\t.debug_info,\"\",@progbits"; -- 2.34.1