diff options
Diffstat (limited to 'src/common/windows/pdb_source_line_writer.h')
-rw-r--r-- | src/common/windows/pdb_source_line_writer.h | 25 |
1 files changed, 17 insertions, 8 deletions
diff --git a/src/common/windows/pdb_source_line_writer.h b/src/common/windows/pdb_source_line_writer.h index e9e89bb2..5a8bcbe7 100644 --- a/src/common/windows/pdb_source_line_writer.h +++ b/src/common/windows/pdb_source_line_writer.h @@ -92,7 +92,9 @@ class PDBSourceLineWriter { ANY_FILE // try PDB_FILE and then EXE_FILE }; - explicit PDBSourceLineWriter(); + // NB: |enable_multiple_field| is temporary while transitioning to enabling + // writing the multiple field permanently. + explicit PDBSourceLineWriter(bool enable_multiple_field = false); ~PDBSourceLineWriter(); // Opens the given file. For executable files, the corresponding pdb @@ -138,11 +140,12 @@ class PDBSourceLineWriter { bool PrintLines(IDiaEnumLineNumbers *lines); // Outputs a function address and name, followed by its source line list. - // block can be the same object as function, or it can be a reference - // to a code block that is lexically part of this function, but - // resides at a separate address. - // Returns true on success. - bool PrintFunction(IDiaSymbol *function, IDiaSymbol *block); + // block can be the same object as function, or it can be a reference to a + // code block that is lexically part of this function, but resides at a + // separate address. If has_multiple_symbols is true, this function's + // instructions correspond to multiple symbols. Returns true on success. + bool PrintFunction(IDiaSymbol *function, IDiaSymbol *block, + bool has_multiple_symbols); // Outputs all functions as described above. Returns true on success. bool PrintFunctions(); @@ -167,8 +170,10 @@ class PDBSourceLineWriter { // Outputs a single public symbol address and name, if the symbol corresponds // to a code address. Returns true on success. If symbol is does not - // correspond to code, returns true without outputting anything. - bool PrintCodePublicSymbol(IDiaSymbol *symbol); + // correspond to code, returns true without outputting anything. If + // has_multiple_symbols is true, the symbol corresponds to a code address and + // the instructions correspond to multiple symbols. + bool PrintCodePublicSymbol(IDiaSymbol *symbol, bool has_multiple_symbols); // Outputs a line identifying the PDB file that is being dumped, along with // its uuid and age. @@ -227,6 +232,10 @@ class PDBSourceLineWriter { // a failure, returns 0, which is also a valid number of bytes. static int GetFunctionStackParamSize(IDiaSymbol *function); + // True if the optional 'm' field on FUNC and PUBLIC for multiple symbols at + // the same address should be output. + bool enable_multiple_field_; + // The filename of the PE file corresponding to the currently-open // pdb file. wstring code_file_; |