OLD | NEW |
1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "courgette/image_info.h" | 5 #include "courgette/image_info.h" |
6 | 6 |
7 #include <memory.h> | 7 #include <memory.h> |
8 #include <algorithm> | 8 #include <algorithm> |
9 #include <map> | 9 #include <map> |
10 #include <set> | 10 #include <set> |
11 #include <sstream> | 11 #include <sstream> |
12 #include <vector> | 12 #include <vector> |
13 | 13 |
14 #include "base/logging.h" | 14 #include "base/logging.h" |
15 | 15 |
16 namespace courgette { | 16 namespace courgette { |
17 | 17 |
18 std::string SectionName(const Section* section) { | 18 std::string SectionName(const Section* section) { |
19 if (section == NULL) | 19 if (section == NULL) |
20 return "<none>"; | 20 return "<none>"; |
21 char name[9]; | 21 char name[9]; |
22 memcpy(name, section->name, 8); | 22 memcpy(name, section->name, 8); |
23 name[8] = '\0'; // Ensure termination. | 23 name[8] = '\0'; // Ensure termination. |
24 return name; | 24 return name; |
25 } | 25 } |
26 | 26 |
27 PEInfo::PEInfo() | 27 PEInfo::PEInfo() |
28 : failure_reason_("uninitialized"), | 28 : failure_reason_("uninitialized"), |
29 start_(0), end_(0), length_(0), | 29 start_(0), |
30 is_PE32_plus_(0), file_length_(0), has_text_section_(false) { | 30 end_(0), |
| 31 length_(0), |
| 32 is_PE32_plus_(false), |
| 33 file_length_(0), |
| 34 optional_header_(NULL), |
| 35 size_of_optional_header_(0), |
| 36 offset_of_data_directories_(0), |
| 37 machine_type_(0), |
| 38 number_of_sections_(0), |
| 39 sections_(NULL), |
| 40 has_text_section_(false), |
| 41 size_of_code_(0), |
| 42 size_of_initialized_data_(0), |
| 43 size_of_uninitialized_data_(0), |
| 44 base_of_code_(0), |
| 45 base_of_data_(0), |
| 46 image_base_(0), |
| 47 size_of_image_(0), |
| 48 number_of_data_directories_(0) { |
31 } | 49 } |
32 | 50 |
33 void PEInfo::Init(const void* start, size_t length) { | 51 void PEInfo::Init(const void* start, size_t length) { |
34 start_ = reinterpret_cast<const uint8*>(start); | 52 start_ = reinterpret_cast<const uint8*>(start); |
35 length_ = length; | 53 length_ = length; |
36 end_ = start_ + length_; | 54 end_ = start_ + length_; |
37 failure_reason_ = "unparsed"; | 55 failure_reason_ = "unparsed"; |
38 } | 56 } |
39 | 57 |
40 // DescribeRVA is for debugging only. I would put it under #ifdef DEBUG except | 58 // DescribeRVA is for debugging only. I would put it under #ifdef DEBUG except |
(...skipping 343 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
384 | 402 |
385 block += size; | 403 block += size; |
386 } | 404 } |
387 | 405 |
388 std::sort(relocs->begin(), relocs->end()); | 406 std::sort(relocs->begin(), relocs->end()); |
389 | 407 |
390 return true; | 408 return true; |
391 } | 409 } |
392 | 410 |
393 } // namespace courgette | 411 } // namespace courgette |
OLD | NEW |