[llvm] [llvm-pdbutil] Avoid reading EC names from non-EC modules (PR #223253)

via llvm-commits llvm-commits at lists.llvm.org
Wed Sep 16 04:39:48 PDT 2026


https://github.com/oltolm updated https://github.com/llvm/llvm-project/pull/223253

>From 389202d6e3d2ebca8937c7e662766db7855f2b68 Mon Sep 17 00:00:00 2001
From: Oleg Tolmatcev <oleg.tolmatcev at gmail.com>
Date: Sun, 13 Sep 2026 17:05:54 +0200
Subject: [PATCH] [llvm-pdbutil] Handle zero EC name indices without an EC name
 table

The module dumper resolves PDB and source file name indices through the EC
name table even when an index is zero. For PDBs without an EC name table,
this causes `dump --modules` to fail with:

  Unexpected error processing modules: Stream Error: The stream is too short
  to perform the requested operation.

Treat a zero name index as an empty string without consulting the EC name
table. Continue resolving nonzero indices normally.
---
 llvm/tools/llvm-pdbutil/DumpOutputStyle.cpp | 24 +++++++++++++--------
 1 file changed, 15 insertions(+), 9 deletions(-)

diff --git a/llvm/tools/llvm-pdbutil/DumpOutputStyle.cpp b/llvm/tools/llvm-pdbutil/DumpOutputStyle.cpp
index feb23ca2083d5..72b4e34d1e861 100644
--- a/llvm/tools/llvm-pdbutil/DumpOutputStyle.cpp
+++ b/llvm/tools/llvm-pdbutil/DumpOutputStyle.cpp
@@ -503,15 +503,21 @@ Error DumpOutputStyle::dumpModules() {
                      Desc.getModuleStreamIndex(), Desc.getNumberOfFiles(),
                      Desc.hasECInfo());
 
-        auto PdbPathOrErr = Stream.getECName(Desc.getPdbFilePathNameIndex());
-        if (!PdbPathOrErr)
-          return PdbPathOrErr.takeError();
-        StringRef PdbFilePath = *PdbPathOrErr;
-
-        auto SrcPathOrErr = Stream.getECName(Desc.getSourceFileNameIndex());
-        if (!SrcPathOrErr)
-          return SrcPathOrErr.takeError();
-        StringRef SrcFilePath = *SrcPathOrErr;
+        StringRef PdbFilePath;
+        if (Desc.getPdbFilePathNameIndex()) {
+          auto PdbPathOrErr = Stream.getECName(Desc.getPdbFilePathNameIndex());
+          if (!PdbPathOrErr)
+            return PdbPathOrErr.takeError();
+          PdbFilePath = *PdbPathOrErr;
+        }
+
+        StringRef SrcFilePath;
+        if (Desc.getSourceFileNameIndex()) {
+          auto SrcPathOrErr = Stream.getECName(Desc.getSourceFileNameIndex());
+          if (!SrcPathOrErr)
+            return SrcPathOrErr.takeError();
+          SrcFilePath = *SrcPathOrErr;
+        }
 
         P.formatLine("pdb file ni: {0} `{1}`, src file ni: {2} `{3}`",
                      Desc.getPdbFilePathNameIndex(), PdbFilePath,



More information about the llvm-commits mailing list