summaryrefslogtreecommitdiffstats
path: root/llvm/tools/llvm-pdbdump/llvm-pdbdump.cpp
Commit message (Collapse)AuthorAgeFilesLines
...
* Make windows.h less evil.Benjamin Kramer2015-10-151-0/+3
| | | | llvm-svn: 250386
* [llvm-pdbdump] Remove oddly placed parens that MSVC doesn't likeBenjamin Kramer2015-10-151-1/+1
| | | | llvm-svn: 250385
* Speculatively unbreak Windows buildDavid Majnemer2015-10-151-2/+2
| | | | | | | | <windows.h> defines macros named min and max in conflict with <algorithm>. Prevent macro expansion by wrapping std::min in parenthesis. llvm-svn: 250383
* [llvm-pdbdump] Provide a mechanism to dump the raw contents of a PDBDavid Majnemer2015-10-151-7/+275
| | | | | | | | | A PDB can be thought of as a very simple file system. It is occasionally illuminating to see the contents of the underlying files. Differential Revision: http://reviews.llvm.org/D13674 llvm-svn: 250356
* [llvm-pdbdump] Add include-only filters.Zachary Turner2015-09-291-0/+14
| | | | | | | | | | | | | | | | PDB files have a lot of noise in them, with hundreds (or thousands) of symbols from system libraries and compiler generated types. If you're only looking for a specific type, this can be problematic. This CL allows you to display *only* types, variables, or compilands matching a particular pattern. These filters can even be combined with exclude filters. Include-only filters are given priority, so that first the set of items to display is limited only to those that match the include filters, and then the set of exclude filters is applied to those. If there are no include filters specified, then it means "display everything". llvm-svn: 248822
* [llvm-pdbdump] Support dynamic load address and external symbols.Zachary Turner2015-05-011-0/+19
| | | | | | | | | | | This patch adds the --load-address command line option to llvm-pdbdump, which dumps all addresses assuming the module has loaded at the specified address. Additionally, this patch adds an option to llvm-pdbdump to support dumping of public symbols (i.e. symbols with external linkage). llvm-svn: 236342
* [PDB] Support executables and source/line info.Zachary Turner2015-04-171-1/+1
| | | | | | | | | | | | Previously DebugInfoPDB could only load data for a PDB given a path to the PDB. It could not open an EXE and find the matching PDB and verify it matched, etc. This patch adds support for that so that we can simply load debug information for a PDB directly. Additionally, this patch extends DebugInfoPDB to support getting source and line information for symbols. llvm-svn: 235237
* [llvm-pdbdump] Display full enum definitions.Zachary Turner2015-03-041-8/+7
| | | | | | | | | | | This will now display enum definitions both at the global scope as well as nested inside of classes. Additionally, it will no longer display enums at the global scope if the enum is nested. Instead, it will omit the definition of the enum globally and instead emit it in the corresponding class definition. llvm-svn: 231215
* [llvm-pdbdump] Many minor fixes and improvementsZachary Turner2015-03-021-15/+45
| | | | | | | | | | | | | | | | | A short list of some of the improvements: 1) Now supports -all command line argument, which implies many other command line arguments to simplify usage. 2) Now supports -no-compiler-generated command line argument to exclude compiler generated types. 3) Prints base class list. 4) -class-definitions implies -types. 5) Proper display of bitfields. 6) Can now distinguish between struct/class/interface/union. And a few other minor tweaks. llvm-svn: 230933
* [llvm-pdbdump] Clean up method signatures.Zachary Turner2015-03-011-6/+6
| | | | llvm-svn: 230889
* [llvm-pdbdump] Add regex-based filtering.Zachary Turner2015-03-011-1/+19
| | | | llvm-svn: 230888
* [llvm-pdbdump] Better error handling.Zachary Turner2015-02-281-5/+20
| | | | | | | | | | | | | Previously it was impossible to distinguish between "There is no PDB implementation for this platform" and "I tried to load the PDB, but couldn't find the file", making it hard to figure out if you built llvm-pdbdump incorrectly or if you just mistyped a file name. This patch adds proper error handling so that we can know exactly what went wrong. llvm-svn: 230868
* [llvm-pdbdump] Colorize output.Zachary Turner2015-02-271-20/+53
| | | | llvm-svn: 230746
* [llvm-pdbdump] Add support for dumping global variables.Zachary Turner2015-02-271-12/+48
| | | | llvm-svn: 230744
* [llvm-pdbdump] Add an option to dump full class definitions.Zachary Turner2015-02-231-1/+3
| | | | | | | | | | | This adds the --class-definitions flag. If specified, when dumping types, instead of "class Foo" you will see the full class definition, with member functions, constructors, access specifiers. NOTE: Using this option can be very slow, as generating a full class definition requires accessing many different parts of the PDB. llvm-svn: 230203
* [llvm-pdbdump] Fix a few compilation failures.Zachary Turner2015-02-221-1/+0
| | | | llvm-svn: 230186
* [llvm-pdbdump] Rewrite dumper using visitor pattern.Zachary Turner2015-02-221-15/+32
| | | | | | | | | | This increases the flexibility of how to dump different symbol types -- necessary for context-sensitive formatting of symbol types -- and also improves the modularity by allowing the dumping to be implemented in the actual dumper, as opposed to in the PDB library. llvm-svn: 230184
* [llvm-pdbdump] Simplify options and output.Zachary Turner2015-02-221-71/+15
| | | | | | | | | This removes a wealth of options, and instead now only provides three options. -symbols, -types, and -compilands. This greatly simplifies use of the tool, and makes it easier to understand what you're going to see when you run the tool. llvm-svn: 230182
* llvm-pdbdump: Fix warning caused by missing sentinel value.Zachary Turner2015-02-151-3/+3
| | | | llvm-svn: 229331
* llvm-pdbdump: Add flags controlling the type of values to dump.Zachary Turner2015-02-151-9/+76
| | | | llvm-svn: 229330
* Re-sort #include lines using my handy dandy ./utils/sort_includes.pyChandler Carruth2015-02-131-5/+5
| | | | | | script. This is in preparation for changes to lots of include lines. llvm-svn: 229088
* llvm-pdbdump: Add more comprehensive dumping of symbol types.Zachary Turner2015-02-131-1/+2
| | | | | | | | | In particular this patch adds the ability to dump complete function signature information including argument types as correctly formatted strings. A side effect of this is that almost all symbol and meta types are now formatted. llvm-svn: 229076
* Add concrete type overloads to PDBSymbol::findChildren().Zachary Turner2015-02-121-5/+3
| | | | | | | | | | | | Frequently you only want to iterate over children of a specific type (e.g. functions). Previously you would get back a generic interface that allowed iteration over the base symbol type, which you would have to dyn_cast<> each one of. With this patch, we allow the user to specify the concrete type as a template parameter, and it will return an iterator which returns instances of the concrete type directly. llvm-svn: 228960
* Oops. Don't call Windows functions on non-windows.Zachary Turner2015-02-101-0/+8
| | | | llvm-svn: 228756
* Rewrite llvm-pdbdump in terms of LLVMDebugInfoPDB.Zachary Turner2015-02-101-304/+21
| | | | | | | | | | | | | This makes llvm-pdbdump available on all platforms, although it will currently fail to create a dumper if there is no PDB reader implementation for the current platform. It implements dumping of compilands and children, which is less information than was previously available, but it has to be rewritten from scratch using the new set of interfaces, so the rest of the functionality will be added back in subsequent commits. llvm-svn: 228755
* [llvm-pdbdump] Add basic symbol dumping.Zachary Turner2015-01-281-5/+44
| | | | | | | | | | This adds two command line options: --symbols dumps a list of all symbols found in the PDB. --symbol-details dumps the same list, but with detailed information for every symbol such as type, attributes, etc. llvm-svn: 227286
* [llvm-pdbdump] Add support for printing source files and compilands.Zachary Turner2015-01-281-5/+132
| | | | | | | | | | | | | This adds two command line options to llvm-pdbdump. --source-files prints a flat list of all source files in the PDB. --compilands prints a list of all compilands (e.g. object files) that the PDB knows about, and for each one, a list of source files that the compiland is composed of as well as a hash of the original source file. llvm-svn: 227276
* Add support for dumping debug tables to llvm-pdbdump.Zachary Turner2015-01-271-22/+82
| | | | | | | | | | | | | PDB stores some of its data in streams and some in tables. This patch teaches llvm-pdbdump to dump basic summary data for the debug tables. In support of this, this patch also adds some DIA helper classes, such as a wrapper around an IDiaSymbol interface, as well as helpers for outputting various enumerations to a raw_ostream. llvm-svn: 227257
* Add llvm-pdbdump to tools.Zachary Turner2015-01-271-0/+155
llvm-pdbdump is a tool which can be used to dump the contents of Microsoft-generated PDB files. It makes use of the Microsoft DIA SDK, which is a COM based library designed specifically for this purpose. The initial commit of this tool dumps the raw bytes from PDB data streams. Future commits will dump more semantic information such as types, symbols, source files, etc similar to the types of information accessible via llvm-dwarfdump. Reviewed by: Aaron Ballman, Reid Kleckner, Chandler Carruth Differential Revision: http://reviews.llvm.org/D7153 llvm-svn: 227241
OpenPOWER on IntegriCloud