| OLD | NEW |
| 1 // Copyright 2014 The Crashpad Authors. All rights reserved. | 1 // Copyright 2014 The Crashpad Authors. All rights reserved. |
| 2 // | 2 // |
| 3 // Licensed under the Apache License, Version 2.0 (the "License"); | 3 // Licensed under the Apache License, Version 2.0 (the "License"); |
| 4 // you may not use this file except in compliance with the License. | 4 // you may not use this file except in compliance with the License. |
| 5 // You may obtain a copy of the License at | 5 // You may obtain a copy of the License at |
| 6 // | 6 // |
| 7 // http://www.apache.org/licenses/LICENSE-2.0 | 7 // http://www.apache.org/licenses/LICENSE-2.0 |
| 8 // | 8 // |
| 9 // Unless required by applicable law or agreed to in writing, software | 9 // Unless required by applicable law or agreed to in writing, software |
| 10 // distributed under the License is distributed on an "AS IS" BASIS, | 10 // distributed under the License is distributed on an "AS IS" BASIS, |
| (...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 96 ~MinidumpModuleCodeViewRecordPDB70Writer() { | 96 ~MinidumpModuleCodeViewRecordPDB70Writer() { |
| 97 } | 97 } |
| 98 | 98 |
| 99 MinidumpModuleMiscDebugRecordWriter::MinidumpModuleMiscDebugRecordWriter() | 99 MinidumpModuleMiscDebugRecordWriter::MinidumpModuleMiscDebugRecordWriter() |
| 100 : internal::MinidumpWritable(), | 100 : internal::MinidumpWritable(), |
| 101 image_debug_misc_(), | 101 image_debug_misc_(), |
| 102 data_(), | 102 data_(), |
| 103 data_utf16_() { | 103 data_utf16_() { |
| 104 } | 104 } |
| 105 | 105 |
| 106 MinidumpModuleMiscDebugRecordWriter::~MinidumpModuleMiscDebugRecordWriter() { |
| 107 } |
| 108 |
| 106 void MinidumpModuleMiscDebugRecordWriter::SetData(const std::string& data, | 109 void MinidumpModuleMiscDebugRecordWriter::SetData(const std::string& data, |
| 107 bool utf16) { | 110 bool utf16) { |
| 108 DCHECK_EQ(state(), kStateMutable); | 111 DCHECK_EQ(state(), kStateMutable); |
| 109 | 112 |
| 110 if (!utf16) { | 113 if (!utf16) { |
| 111 data_utf16_.clear(); | 114 data_utf16_.clear(); |
| 112 image_debug_misc_.Unicode = 0; | 115 image_debug_misc_.Unicode = 0; |
| 113 data_ = data; | 116 data_ = data; |
| 114 } else { | 117 } else { |
| 115 data_.clear(); | 118 data_.clear(); |
| (...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 192 void MinidumpModuleWriter::SetName(const std::string& name) { | 195 void MinidumpModuleWriter::SetName(const std::string& name) { |
| 193 DCHECK_EQ(state(), kStateMutable); | 196 DCHECK_EQ(state(), kStateMutable); |
| 194 | 197 |
| 195 if (!name_) { | 198 if (!name_) { |
| 196 name_.reset(new internal::MinidumpUTF16StringWriter()); | 199 name_.reset(new internal::MinidumpUTF16StringWriter()); |
| 197 } | 200 } |
| 198 name_->SetUTF8(name); | 201 name_->SetUTF8(name); |
| 199 } | 202 } |
| 200 | 203 |
| 201 void MinidumpModuleWriter::SetCodeViewRecord( | 204 void MinidumpModuleWriter::SetCodeViewRecord( |
| 202 MinidumpModuleCodeViewRecordWriter* codeview_record) { | 205 scoped_ptr<MinidumpModuleCodeViewRecordWriter> codeview_record) { |
| 203 DCHECK_EQ(state(), kStateMutable); | 206 DCHECK_EQ(state(), kStateMutable); |
| 204 | 207 |
| 205 codeview_record_ = codeview_record; | 208 codeview_record_ = codeview_record.Pass(); |
| 206 } | 209 } |
| 207 | 210 |
| 208 void MinidumpModuleWriter::SetMiscDebugRecord( | 211 void MinidumpModuleWriter::SetMiscDebugRecord( |
| 209 MinidumpModuleMiscDebugRecordWriter* misc_debug_record) { | 212 scoped_ptr<MinidumpModuleMiscDebugRecordWriter> misc_debug_record) { |
| 210 DCHECK_EQ(state(), kStateMutable); | 213 DCHECK_EQ(state(), kStateMutable); |
| 211 | 214 |
| 212 misc_debug_record_ = misc_debug_record; | 215 misc_debug_record_ = misc_debug_record.Pass(); |
| 213 } | 216 } |
| 214 | 217 |
| 215 void MinidumpModuleWriter::SetTimestamp(time_t timestamp) { | 218 void MinidumpModuleWriter::SetTimestamp(time_t timestamp) { |
| 216 DCHECK_EQ(state(), kStateMutable); | 219 DCHECK_EQ(state(), kStateMutable); |
| 217 | 220 |
| 218 internal::MinidumpWriterUtil::AssignTimeT(&module_.TimeDateStamp, timestamp); | 221 internal::MinidumpWriterUtil::AssignTimeT(&module_.TimeDateStamp, timestamp); |
| 219 } | 222 } |
| 220 | 223 |
| 221 void MinidumpModuleWriter::SetFileVersion(uint16_t version_0, | 224 void MinidumpModuleWriter::SetFileVersion(uint16_t version_0, |
| 222 uint16_t version_1, | 225 uint16_t version_1, |
| (...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 281 return 0; | 284 return 0; |
| 282 } | 285 } |
| 283 | 286 |
| 284 std::vector<internal::MinidumpWritable*> MinidumpModuleWriter::Children() { | 287 std::vector<internal::MinidumpWritable*> MinidumpModuleWriter::Children() { |
| 285 DCHECK_GE(state(), kStateFrozen); | 288 DCHECK_GE(state(), kStateFrozen); |
| 286 DCHECK(name_); | 289 DCHECK(name_); |
| 287 | 290 |
| 288 std::vector<MinidumpWritable*> children; | 291 std::vector<MinidumpWritable*> children; |
| 289 children.push_back(name_.get()); | 292 children.push_back(name_.get()); |
| 290 if (codeview_record_) { | 293 if (codeview_record_) { |
| 291 children.push_back(codeview_record_); | 294 children.push_back(codeview_record_.get()); |
| 292 } | 295 } |
| 293 if (misc_debug_record_) { | 296 if (misc_debug_record_) { |
| 294 children.push_back(misc_debug_record_); | 297 children.push_back(misc_debug_record_.get()); |
| 295 } | 298 } |
| 296 | 299 |
| 297 return children; | 300 return children; |
| 298 } | 301 } |
| 299 | 302 |
| 300 bool MinidumpModuleWriter::WriteObject(FileWriterInterface* file_writer) { | 303 bool MinidumpModuleWriter::WriteObject(FileWriterInterface* file_writer) { |
| 301 DCHECK_EQ(state(), kStateWritable); | 304 DCHECK_EQ(state(), kStateWritable); |
| 302 | 305 |
| 303 // This object doesn’t directly write anything itself. Its MINIDUMP_MODULE is | 306 // This object doesn’t directly write anything itself. Its MINIDUMP_MODULE is |
| 304 // written by its parent as part of a MINIDUMP_MODULE_LIST, and its children | 307 // written by its parent as part of a MINIDUMP_MODULE_LIST, and its children |
| 305 // are responsible for writing themselves. | 308 // are responsible for writing themselves. |
| 306 return true; | 309 return true; |
| 307 } | 310 } |
| 308 | 311 |
| 309 MinidumpModuleListWriter::MinidumpModuleListWriter() | 312 MinidumpModuleListWriter::MinidumpModuleListWriter() |
| 310 : MinidumpStreamWriter(), module_list_base_(), modules_() { | 313 : MinidumpStreamWriter(), module_list_base_(), modules_() { |
| 311 } | 314 } |
| 312 | 315 |
| 313 MinidumpModuleListWriter::~MinidumpModuleListWriter() { | 316 MinidumpModuleListWriter::~MinidumpModuleListWriter() { |
| 314 } | 317 } |
| 315 | 318 |
| 316 void MinidumpModuleListWriter::AddModule(MinidumpModuleWriter* module) { | 319 void MinidumpModuleListWriter::AddModule( |
| 320 scoped_ptr<MinidumpModuleWriter> module) { |
| 317 DCHECK_EQ(state(), kStateMutable); | 321 DCHECK_EQ(state(), kStateMutable); |
| 318 | 322 |
| 319 modules_.push_back(module); | 323 modules_.push_back(module.release()); |
| 320 } | 324 } |
| 321 | 325 |
| 322 bool MinidumpModuleListWriter::Freeze() { | 326 bool MinidumpModuleListWriter::Freeze() { |
| 323 DCHECK_EQ(state(), kStateMutable); | 327 DCHECK_EQ(state(), kStateMutable); |
| 324 | 328 |
| 325 if (!MinidumpStreamWriter::Freeze()) { | 329 if (!MinidumpStreamWriter::Freeze()) { |
| 326 return false; | 330 return false; |
| 327 } | 331 } |
| 328 | 332 |
| 329 size_t module_count = modules_.size(); | 333 size_t module_count = modules_.size(); |
| (...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 367 } | 371 } |
| 368 | 372 |
| 369 return file_writer->WriteIoVec(&iovecs); | 373 return file_writer->WriteIoVec(&iovecs); |
| 370 } | 374 } |
| 371 | 375 |
| 372 MinidumpStreamType MinidumpModuleListWriter::StreamType() const { | 376 MinidumpStreamType MinidumpModuleListWriter::StreamType() const { |
| 373 return kMinidumpStreamTypeModuleList; | 377 return kMinidumpStreamTypeModuleList; |
| 374 } | 378 } |
| 375 | 379 |
| 376 } // namespace crashpad | 380 } // namespace crashpad |
| OLD | NEW |