[PATCH] D131270: MC: make section classification a bit more thorough

Saleem Abdulrasool via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Fri Aug 5 10:18:16 PDT 2022


compnerd updated this revision to Diff 450318.

Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D131270/new/

https://reviews.llvm.org/D131270

Files:
  llvm/lib/MC/MCContext.cpp


Index: llvm/lib/MC/MCContext.cpp
===================================================================
--- llvm/lib/MC/MCContext.cpp
+++ llvm/lib/MC/MCContext.cpp
@@ -582,8 +582,24 @@
     Kind = SectionKind::getExecuteOnly();
   else if (Flags & ELF::SHF_EXECINSTR)
     Kind = SectionKind::getText();
-  else
+  else if (~Flags & ELF::SHF_WRITE)
     Kind = SectionKind::getReadOnly();
+  else if (Flags & ELF::SHF_TLS)
+    // FIXME: should we differentiate between SHT_PROGBITS and SHT_NOBITS?
+    Kind = SectionKind::getThreadData();
+  else if (CachedName.startswith(".debug_"))
+    Kind = SectionKind::getMetadata();
+  else
+    Kind = llvm::StringSwitch<SectionKind>(CachedName)
+            .Case(".bss", SectionKind::getBSS())
+            .Case(".data", SectionKind::getData())
+            .Case(".data1", SectionKind::getMergeable1ByteCString())
+            .Case(".data.rel.ro", SectionKind::getReadOnlyWithRel())
+            .Case(".rodata", SectionKind::getReadOnly())
+            .Case(".rodata1", SectionKind::getReadOnly())
+            .Case(".tbss", SectionKind::getThreadBSS())
+            .Case(".tdata", SectionKind::getThreadData())
+            .Default(SectionKind::getText());
 
   MCSectionELF *Result =
       createELFSectionImpl(CachedName, Type, Flags, Kind, EntrySize, GroupSym,


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D131270.450318.patch
Type: text/x-patch
Size: 1318 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20220805/237911f3/attachment.bin>


More information about the llvm-commits mailing list