diff options
author | mmentovai <mmentovai@4c0a9323-5329-0410-9bdc-e9ce6186880e> | 2006-10-20 01:46:38 +0000 |
---|---|---|
committer | mmentovai <mmentovai@4c0a9323-5329-0410-9bdc-e9ce6186880e> | 2006-10-20 01:46:38 +0000 |
commit | 246f4068280b5b191303ff13671e43a0522987de (patch) | |
tree | 9de2b66c7d8f0241de53669de045318d6283da7e /src/processor/minidump.cc | |
parent | Improvements for Windows client/tool-side code. r=bryner (diff) | |
download | breakpad-246f4068280b5b191303ff13671e43a0522987de.tar.xz |
Handle frame pointer omission, (#21), part 4 (final part!): FPO stackwalker.
r=bryner
- This change allows Airbag to properly walk win32 stacks produced by code
built with MSVC's frame pointer omission optimization (/Oy). This
optimization is enabled at /O1 and /O2.
- There too many interface and file format changes to list here.
http://groups.google.com/group/airbag-dev/browse_thread/thread/85ce85bfa8457ece
git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@42 4c0a9323-5329-0410-9bdc-e9ce6186880e
Diffstat (limited to 'src/processor/minidump.cc')
-rw-r--r-- | src/processor/minidump.cc | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/src/processor/minidump.cc b/src/processor/minidump.cc index 2c751e07..6b33aeed 100644 --- a/src/processor/minidump.cc +++ b/src/processor/minidump.cc @@ -647,7 +647,7 @@ const u_int8_t* MinidumpMemoryRegion::GetMemory() { return NULL; // TODO(mmentovai): verify rational size! - auto_ptr<vector<u_int8_t> > memory( + auto_ptr< vector<u_int8_t> > memory( new vector<u_int8_t>(descriptor_->memory.data_size)); if (!minidump_->ReadBytes(&(*memory)[0], descriptor_->memory.data_size)) @@ -1086,7 +1086,7 @@ const u_int8_t* MinidumpModule::GetCVRecord() { // variable-sized due to their pdb_file_name fields; these structures // are not sizeof(MDCVInfoPDB70) or sizeof(MDCVInfoPDB20) and treating // them as such would result in incomplete structures or overruns. - auto_ptr<vector<u_int8_t> > cv_record( + auto_ptr< vector<u_int8_t> > cv_record( new vector<u_int8_t>(module_.cv_record.data_size)); if (!minidump_->ReadBytes(&(*cv_record)[0], module_.cv_record.data_size)) @@ -1161,7 +1161,7 @@ const MDImageDebugMisc* MinidumpModule::GetMiscRecord() { // because the MDImageDebugMisc is variable-sized due to its data field; // this structure is not sizeof(MDImageDebugMisc) and treating it as such // would result in an incomplete structure or an overrun. - auto_ptr<vector<u_int8_t> > misc_record_mem( + auto_ptr< vector<u_int8_t> > misc_record_mem( new vector<u_int8_t>(module_.misc_record.data_size)); MDImageDebugMisc* misc_record = reinterpret_cast<MDImageDebugMisc*>(&(*misc_record_mem)[0]); |