This patch adds prologue verification, which is already present in Apple's dwarfdump. It checks for invalid directory indices and warns about duplicate file paths.
Details
Diff Detail
- Repository
- rL LLVM
Event Timeline
| lib/DebugInfo/DWARF/DWARFVerifier.cpp | ||
|---|---|---|
| 455 | Don't branch-to-unreachable. Use an assert instead. Is the false return from getFileNameByIndex really impossible? (has the FileIndex been checked for validity? What other error paths does getFileNameByIndex have, if any?) | |
| lib/DebugInfo/DWARF/DWARFVerifier.cpp | ||
|---|---|---|
| 455 | Thanks, an assert definitely better expresses the intent. The only path that returns false is this: if (Kind == FileLineInfoKind::None || !hasFileAtIndex(FileIndex)) return false; The FileLineInfoKind is hard-coded so that can't trigger it. The index can't really be invalid either as we're iterating over the list of indices. If this returns false here it must be a programmer error. | |
| lib/DebugInfo/DWARF/DWARFVerifier.cpp | ||
|---|---|---|
| 455 | What about the unused variable though? I need the function call to populate the string, so I'd have to assign it to a bool that's only used in the assert. | |
Why assert and not emit an error???
| lib/DebugInfo/DWARF/DWARFVerifier.cpp | ||
|---|---|---|
| 455 | This is a verifier that is trying to validate that the DWARF is valid. A bad file index is quite possible. Why not emit an appropriate error message here? | |
| llvm/trunk/unittests/DebugInfo/DWARF/DWARFDebugInfoTest.cpp | ||
|---|---|---|
| 2072 ↗ | (On Diff #114327) | Porlogue? :-) |
Don't branch-to-unreachable. Use an assert instead.
Is the false return from getFileNameByIndex really impossible? (has the FileIndex been checked for validity? What other error paths does getFileNameByIndex have, if any?)