[clang] [llvm] [clang] Implement pragma clang section on COFF targets (PR #112714)

Vinicius Tadeu Zein via cfe-commits cfe-commits at lists.llvm.org
Fri Nov 22 08:09:42 PST 2024


================
@@ -1677,6 +1677,22 @@ MCSection *TargetLoweringObjectFileCOFF::getExplicitSectionGlobal(
       Name == getInstrProfSectionName(IPSK_covname, Triple::COFF,
                                       /*AddSegmentInfo=*/false))
     Kind = SectionKind::getMetadata();
+
+  const GlobalVariable *GV = dyn_cast<GlobalVariable>(GO);
+  if (GV && GV->hasImplicitSection()) {
+    auto Attrs = GV->getAttributes();
+    if (Attrs.hasAttribute("bss-section") && Kind.isBSS()) {
+      Name = Attrs.getAttribute("bss-section").getValueAsString();
+    } else if (Attrs.hasAttribute("rodata-section") && Kind.isReadOnly()) {
+      Name = Attrs.getAttribute("rodata-section").getValueAsString();
+    } else if (Attrs.hasAttribute("relro-section") &&
+               Kind.isReadOnlyWithRel()) {
+      Name = Attrs.getAttribute("relro-section").getValueAsString();
+    } else if (Attrs.hasAttribute("data-section") && Kind.isData()) {
+      Name = Attrs.getAttribute("data-section").getValueAsString();
+    }
----------------
vtz wrote:

"would falling through without setting name be ok?" yes, in this case we would keep the section's original name, I don't see the need for an explicit else here.

https://github.com/llvm/llvm-project/pull/112714


More information about the cfe-commits mailing list