[llvm] r218268 - MC: ReadOnlyWithRel section kinds should map to rdata in COFF

David Majnemer david.majnemer at gmail.com
Mon Sep 22 13:39:23 PDT 2014


Author: majnemer
Date: Mon Sep 22 15:39:23 2014
New Revision: 218268

URL: http://llvm.org/viewvc/llvm-project?rev=218268&view=rev
Log:
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.

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

Modified: llvm/trunk/lib/CodeGen/TargetLoweringObjectFileImpl.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/TargetLoweringObjectFileImpl.cpp?rev=218268&r1=218267&r2=218268&view=diff
==============================================================================
--- llvm/trunk/lib/CodeGen/TargetLoweringObjectFileImpl.cpp (original)
+++ llvm/trunk/lib/CodeGen/TargetLoweringObjectFileImpl.cpp Mon Sep 22 15:39:23 2014
@@ -865,9 +865,9 @@ static const char *getCOFFSectionNameFor
     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
   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

Modified: llvm/trunk/test/MC/COFF/const-gv-with-rel-init.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/COFF/const-gv-with-rel-init.ll?rev=218268&r1=218267&r2=218268&view=diff
==============================================================================
--- llvm/trunk/test/MC/COFF/const-gv-with-rel-init.ll (original)
+++ llvm/trunk/test/MC/COFF/const-gv-with-rel-init.ll Mon Sep 22 15:39:23 2014
@@ -6,3 +6,6 @@ define void @f() {
 
 @ptr = constant void ()* @f, section ".CRT$XLB", align 8
 ; CHECK:  .section  .CRT$XLB,"rd"
+
+ at weak_array = weak_odr unnamed_addr constant [1 x i8*] [i8* bitcast (void ()* @f to i8*)]
+; CHECK:  .section  .rdata,"rd",discard,weak_array





More information about the llvm-commits mailing list