diff options
| author | Reid Kleckner <rnk@google.com> | 2016-06-03 20:25:09 +0000 |
|---|---|---|
| committer | Reid Kleckner <rnk@google.com> | 2016-06-03 20:25:09 +0000 |
| commit | f27f3f8491dfc7aa41f6cd8a95763acc677d379c (patch) | |
| tree | bfcad7e106f02a36e9fb8ae9263614e633a76405 /llvm/test/tools | |
| parent | 9faa5bcf13748459714fabac98f9109ea8616963 (diff) | |
| download | bcm5719-llvm-f27f3f8491dfc7aa41f6cd8a95763acc677d379c.tar.gz bcm5719-llvm-f27f3f8491dfc7aa41f6cd8a95763acc677d379c.zip | |
[Symbolize] Check if the PE file has a PDB and emit an error if we can't load it
Summary:
Previously we would try to load PDBs for every PE executable we tried to
symbolize. If that failed, we would fall back to DWARF. If there wasn't
any DWARF, we'd print mostly useless symbol information using the export
table.
With this change, we only try to load PDBs for executables that claim to
have them. If that fails, we can now print an error rather than falling
back silently. This should make it a lot easier to diagnose and fix
common symbolization issues, such as not having DIA or not having a PDB.
Reviewers: zturner, eugenis
Subscribers: llvm-commits
Differential Revision: http://reviews.llvm.org/D20982
llvm-svn: 271725
Diffstat (limited to 'llvm/test/tools')
| -rw-r--r-- | llvm/test/tools/llvm-symbolizer/pdb/Inputs/missing_pdb.exe | bin | 0 -> 32256 bytes | |||
| -rw-r--r-- | llvm/test/tools/llvm-symbolizer/pdb/missing_pdb.test | 17 |
2 files changed, 17 insertions, 0 deletions
diff --git a/llvm/test/tools/llvm-symbolizer/pdb/Inputs/missing_pdb.exe b/llvm/test/tools/llvm-symbolizer/pdb/Inputs/missing_pdb.exe Binary files differnew file mode 100644 index 00000000000..320e1f30e58 --- /dev/null +++ b/llvm/test/tools/llvm-symbolizer/pdb/Inputs/missing_pdb.exe diff --git a/llvm/test/tools/llvm-symbolizer/pdb/missing_pdb.test b/llvm/test/tools/llvm-symbolizer/pdb/missing_pdb.test new file mode 100644 index 00000000000..0478dfbc05e --- /dev/null +++ b/llvm/test/tools/llvm-symbolizer/pdb/missing_pdb.test @@ -0,0 +1,17 @@ +RUN: grep '^ADDR:' %s | sed -s 's/ADDR: //' \ +RUN: | llvm-symbolizer -obj="%p/Inputs/missing_pdb.exe" 2>%t.err \ +RUN: | FileCheck %s +RUN: FileCheck --check-prefix=ERROR %s < %t.err + +ADDR: 0x401000 +ADDR: 0x401001 + +llvm-symbolizer should print one error and two unknown line info records. + +ERROR: LLVMSymbolizer: error reading file: PDB Error: Unable to load PDB. Make sure the file exists and is readable. +ERROR-NOT: error reading file + +CHECK: ?? +CHECK: ??:0:0 +CHECK: ?? +CHECK: ??:0:0 |

