[PATCH] D87656: [llvm-dwarfdump] --show-sources option to show all sources

Xing GUO via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Tue Sep 15 23:36:52 PDT 2020


Higuoxing added inline comments.


================
Comment at: llvm/tools/llvm-dwarfdump/llvm-dwarfdump.cpp:455
+  for (const auto &CU : DICtx.compile_units()) {
+    const auto *LT = DICtx.getLineTableForUnit(CU.get());
+    for (uint32_t I = 1; I <= LT->Prologue.FileNames.size(); ++I) {
----------------
jhenderson wrote:
> I think we need testing for multiple CUs. The current test only checks a single one. This might go against the yaml2obj usage suggested above though (@Higuoxing, is there support for multiple tables in .debug_line yet?).
> is there support for multiple tables in .debug_line yet?

Yes, `yaml2obj` supports emitting multiple line tables. I'm able to help craft these test cases.

----------------------------

It looks that `LT` isn't checked. If a compilation unit doesn't have an associated line table, `llvm-dwarfdump --show-sources` will crash.

```
const auto *LT = DICtx.getLineTableForUnit(CU.get()); // Can be a null pointer.
for (uint32_t I = 1; I <= LT->Prologue.FileNames.size(); ++I) {
                          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  ...
}
```

We can reproduce it using the following test case.

```
$ yaml2obj %s | llvm-dwarfdump --show-sources -
```

```
--- !ELF
FileHeader:
  Class:   ELFCLASS64
  Data:    ELFDATA2LSB
  Type:    ET_EXEC
  Machine: EM_X86_64
DWARF:
  debug_info:
    - Version: 4
```


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

https://reviews.llvm.org/D87656



More information about the llvm-commits mailing list