MC: ReadOnlyWithRel section kinds should map to rdata in COFF
authorDavid Majnemer <david.majnemer@gmail.com>
Mon, 22 Sep 2014 20:39:23 +0000 (20:39 +0000)
committerDavid Majnemer <david.majnemer@gmail.com>
Mon, 22 Sep 2014 20:39:23 +0000 (20:39 +0000)
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

lib/CodeGen/TargetLoweringObjectFileImpl.cpp
test/MC/COFF/const-gv-with-rel-init.ll

index 6d5e27c00e80ef29f62c435f663fb857c276b3b5..c7570ba76e125c2033e3b8b6a07e7f3ecd2019ad 100644 (file)
@@ -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
index 7e1b61b846befa8839ccd9fa65860069aa8577ab..7d3c5f631881927af577c58aeb5d21836aaa091e 100644 (file)
@@ -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