From c75aac42a635bf710e818487592ea3bc5d7ef9b1 Mon Sep 17 00:00:00 2001 From: Jonas Devlieghere Date: Fri, 3 Jan 2020 09:30:20 -0800 Subject: [PATCH] [DWARF] Don't assume optional always has a value. When getting the file name form the line table prologue we assume that a valid string form value can always be extracted as a string. If you look at the implementation of DWARFormValue this is not necessarily true. I hit this assertion from LLDB when I create a "dummy" DWARFContext that was missing the string section. --- llvm/lib/DebugInfo/DWARF/DWARFDebugLine.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/llvm/lib/DebugInfo/DWARF/DWARFDebugLine.cpp b/llvm/lib/DebugInfo/DWARF/DWARFDebugLine.cpp index 5c86858f31af..51535e88285b 100644 --- a/llvm/lib/DebugInfo/DWARF/DWARFDebugLine.cpp +++ b/llvm/lib/DebugInfo/DWARF/DWARFDebugLine.cpp @@ -1026,7 +1026,10 @@ bool DWARFDebugLine::Prologue::getFileNameByIndex( if (Kind == FileLineInfoKind::None || !hasFileAtIndex(FileIndex)) return false; const FileNameEntry &Entry = getFileNameEntry(FileIndex); - StringRef FileName = Entry.Name.getAsCString().getValue(); + Optional Name = Entry.Name.getAsCString(); + if (!Name) + return false; + StringRef FileName = *Name; if (Kind != FileLineInfoKind::AbsoluteFilePath || isPathAbsoluteOnWindowsOrPosix(FileName)) { Result = FileName;