From: David Majnemer Date: Mon, 22 Sep 2014 20:39:23 +0000 (+0000) Subject: MC: ReadOnlyWithRel section kinds should map to rdata in COFF X-Git-Url: http://plrg.eecs.uci.edu/git/?a=commitdiff_plain;h=d80fc698f3d7de7458069a7b019d1117fb605dc5;p=oota-llvm.git MC: ReadOnlyWithRel section kinds should map to rdata in COFF Don't consider ReadOnlyWithRel as a writable section in COFF, they really belong in .rdata. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@218268 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/CodeGen/TargetLoweringObjectFileImpl.cpp b/lib/CodeGen/TargetLoweringObjectFileImpl.cpp index 6d5e27c00e8..c7570ba76e1 100644 --- a/lib/CodeGen/TargetLoweringObjectFileImpl.cpp +++ b/lib/CodeGen/TargetLoweringObjectFileImpl.cpp @@ -865,9 +865,9 @@ static const char *getCOFFSectionNameForUniqueGlobal(SectionKind Kind) { return ".bss"; if (Kind.isThreadLocal()) return ".tls$"; - if (Kind.isWriteable()) - return ".data"; - return ".rdata"; + if (Kind.isReadOnly() || Kind.isReadOnlyWithRel()) + return ".rdata"; + return ".data"; } @@ -915,7 +915,7 @@ SelectSectionForGlobal(const GlobalValue *GV, SectionKind Kind, if (Kind.isThreadLocal()) return TLSDataSection; - if (Kind.isReadOnly()) + if (Kind.isReadOnly() || Kind.isReadOnlyWithRel()) return ReadOnlySection; // Note: we claim that common symbols are put in BSSSection, but they are diff --git a/test/MC/COFF/const-gv-with-rel-init.ll b/test/MC/COFF/const-gv-with-rel-init.ll index 7e1b61b846b..7d3c5f63188 100644 --- a/test/MC/COFF/const-gv-with-rel-init.ll +++ b/test/MC/COFF/const-gv-with-rel-init.ll @@ -6,3 +6,6 @@ define void @f() { @ptr = constant void ()* @f, section ".CRT$XLB", align 8 ; CHECK: .section .CRT$XLB,"rd" + +@weak_array = weak_odr unnamed_addr constant [1 x i8*] [i8* bitcast (void ()* @f to i8*)] +; CHECK: .section .rdata,"rd",discard,weak_array