[-cxx-abi microsoft] Stick zero initialized symbols into the .bss section for COFF

Summary:
We need to do two things:

- Initialize BSSSection in MCObjectFileInfo::InitCOFFMCObjectFileInfo
- Teach TargetLoweringObjectFileCOFF::SelectSectionForGlobal what to do
  with it

This fixes PR16861.

Reviewers: rnk

Reviewed By: rnk

CC: llvm-commits

Differential Revision: http://llvm-reviews.chandlerc.com/D1361

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188244 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
David Majnemer 2013-08-13 01:23:53 +00:00
parent 0710bfa866
commit 6aa9315353
3 changed files with 19 additions and 4 deletions

View File

@ -771,15 +771,18 @@ SelectSectionForGlobal(const GlobalValue *GV, SectionKind Kind,
}
if (Kind.isText())
return getTextSection();
return TextSection;
if (Kind.isThreadLocal())
return getTLSDataSection();
return TLSDataSection;
if (Kind.isReadOnly() && ReadOnlySection != 0)
if (Kind.isReadOnly())
return ReadOnlySection;
return getDataSection();
if (Kind.isBSS())
return BSSSection;
return DataSection;
}
void TargetLoweringObjectFileCOFF::

View File

@ -496,6 +496,12 @@ void MCObjectFileInfo::InitELFMCObjectFileInfo(Triple T) {
void MCObjectFileInfo::InitCOFFMCObjectFileInfo(Triple T) {
// COFF
BSSSection =
Ctx->getCOFFSection(".bss",
COFF::IMAGE_SCN_CNT_UNINITIALIZED_DATA |
COFF::IMAGE_SCN_MEM_READ |
COFF::IMAGE_SCN_MEM_WRITE,
SectionKind::getBSS());
TextSection =
Ctx->getCOFFSection(".text",
COFF::IMAGE_SCN_CNT_CODE |

View File

@ -0,0 +1,6 @@
; RUN: llc -mtriple i386-pc-win32 < %s | FileCheck %s
%struct.foo = type { i32, i32 }
@"\01?thingy@@3Ufoo@@B" = global %struct.foo zeroinitializer, align 4
; CHECK: .bss