diff options
author | ted.mielczarek <ted.mielczarek@4c0a9323-5329-0410-9bdc-e9ce6186880e> | 2010-10-05 19:39:23 +0000 |
---|---|---|
committer | ted.mielczarek <ted.mielczarek@4c0a9323-5329-0410-9bdc-e9ce6186880e> | 2010-10-05 19:39:23 +0000 |
commit | d35f113d020aa1cb4f18aace03eca4eb8705dad2 (patch) | |
tree | c06b506129ba2f3b480d5b8f461e5cbf38a78925 /src/common/windows/pdb_source_line_writer.h | |
parent | ditch libtool, only build static libs (diff) | |
download | breakpad-d35f113d020aa1cb4f18aace03eca4eb8705dad2.tar.xz |
Make dump_syms output an INFO CODE_ID line that includes the code file and code identifier. (Currently disabled to give Breakpad users time to update their processor code.)
R=mark at http://breakpad.appspot.com/180001/show
git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@710 4c0a9323-5329-0410-9bdc-e9ce6186880e
Diffstat (limited to 'src/common/windows/pdb_source_line_writer.h')
-rw-r--r-- | src/common/windows/pdb_source_line_writer.h | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/src/common/windows/pdb_source_line_writer.h b/src/common/windows/pdb_source_line_writer.h index 8524d8b0..ef2a27db 100644 --- a/src/common/windows/pdb_source_line_writer.h +++ b/src/common/windows/pdb_source_line_writer.h @@ -67,6 +67,21 @@ struct PDBModuleInfo { wstring cpu; }; +// A structure that carries information that identifies a PE file, +// either an EXE or a DLL. +struct PEModuleInfo { + // The basename of the PE file. + wstring code_file; + + // The PE file's code identifier, which consists of its timestamp + // and file size concatenated together into a single hex string. + // (The fields IMAGE_OPTIONAL_HEADER::SizeOfImage and + // IMAGE_FILE_HEADER::TimeDateStamp, as defined in the ImageHlp + // documentation.) This is not well documented, if it's documented + // at all, but it's what symstore does and what DbgHelp supports. + wstring code_identifier; +}; + class PDBSourceLineWriter { public: enum FileFormat { @@ -100,6 +115,10 @@ class PDBSourceLineWriter { // true on success and false on failure. bool GetModuleInfo(PDBModuleInfo *info); + // Retrieves information about the module's PE file. Returns + // true on success and false on failure. + bool GetPEInfo(PEModuleInfo *info); + // Sets uses_guid to true if the opened file uses a new-style CodeView // record with a 128-bit GUID, or false if the opened file uses an old-style // CodeView record. When no GUID is available, a 32-bit signature should be @@ -139,6 +158,11 @@ class PDBSourceLineWriter { // its uuid and age. bool PrintPDBInfo(); + // Outputs a line identifying the PE file corresponding to the PDB + // file that is being dumped, along with its code identifier, + // which consists of its timestamp and file size. + bool PrintPEInfo(); + // Returns true if this filename has already been seen, // and an ID is stored for it, or false if it has not. bool FileIDIsCached(const wstring &file) { @@ -170,6 +194,10 @@ class PDBSourceLineWriter { return iter->second; }; + // Find the PE file corresponding to the loaded PDB file, and + // set the code_file_ member. Returns false on failure. + bool FindPEFile(); + // Returns the function name for a symbol. If possible, the name is // undecorated. If the symbol's decorated form indicates the size of // parameters on the stack, this information is returned in stack_param_size. @@ -183,6 +211,10 @@ class PDBSourceLineWriter { // a failure, returns 0, which is also a valid number of bytes. static int GetFunctionStackParamSize(IDiaSymbol *function); + // The filename of the PE file corresponding to the currently-open + // pdb file. + wstring code_file_; + // The session for the currently-open pdb file. CComPtr<IDiaSession> session_; |