[llvm] [llvm-symbolizer] Make symbolizer parse section relative syntax (PR #168524)

James Henderson via llvm-commits llvm-commits at lists.llvm.org
Fri May 1 00:55:56 PDT 2026


================
@@ -807,20 +810,62 @@ Expected<DataRefImpl> XCOFFObjectFile::getSectionByNum(int16_t Num) const {
   return DRI;
 }
 
-DataRefImpl
+static StringRef getSectionTypeName(XCOFF::SectionTypeFlags SectType) {
+  switch (SectType) {
+  case XCOFF::STYP_PAD:
+    return "PAD";
+  case XCOFF::STYP_DWARF:
+    return "DWARF";
+  case XCOFF::STYP_TEXT:
+    return "TEXT";
+  case XCOFF::STYP_DATA:
+    return "DATA";
+  case XCOFF::STYP_BSS:
+    return "BSS";
+  case XCOFF::STYP_EXCEPT:
+    return "EXCEPT";
+  case XCOFF::STYP_INFO:
+    return "INFO";
+  case XCOFF::STYP_TDATA:
+    return "TDATA";
+  case XCOFF::STYP_TBSS:
+    return "TBSS";
+  case XCOFF::STYP_LOADER:
+    return "LOADER";
+  case XCOFF::STYP_DEBUG:
+    return "DEBUG";
+  case XCOFF::STYP_TYPCHK:
+    return "TYPCHK";
+  case XCOFF::STYP_OVRFLO:
+    return "OVRFLO";
+  }
+  return "";
+}
+
+Expected<DataRefImpl>
 XCOFFObjectFile::getSectionByType(XCOFF::SectionTypeFlags SectType) const {
-  DataRefImpl DRI;
-  auto GetSectionAddr = [&](const auto &Sections) -> uintptr_t {
-    for (const auto &Sec : Sections)
-      if (Sec.getSectionType() == SectType)
-        return reinterpret_cast<uintptr_t>(&Sec);
-    return uintptr_t(0);
+  DataRefImpl Result;
+  Result.p = 0;
+  auto FindSection = [&](const auto &Sections) -> Error {
----------------
jh7370 wrote:

I think this lambda is getting a bit long. I'd prefer it just to be a standalone function with appropriate parameters.

Also, I'm not sure we benefit from `auto` here and in the loop either (see my other comments).

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


More information about the llvm-commits mailing list