OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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/disassembler_elf_32_arm.h" | 5 #include "courgette/disassembler_elf_32_arm.h" |
6 | 6 |
7 #include <memory> | 7 #include <memory> |
8 #include <utility> | 8 #include <utility> |
9 #include <vector> | 9 #include <vector> |
10 | 10 |
(...skipping 348 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
359 const Elf32_Rel* section_relocs_iter = reinterpret_cast<const Elf32_Rel*>( | 359 const Elf32_Rel* section_relocs_iter = reinterpret_cast<const Elf32_Rel*>( |
360 FileOffsetToPointer(section_header->sh_offset)); | 360 FileOffsetToPointer(section_header->sh_offset)); |
361 | 361 |
362 uint32_t section_relocs_count = | 362 uint32_t section_relocs_count = |
363 section_header->sh_size / section_header->sh_entsize; | 363 section_header->sh_size / section_header->sh_entsize; |
364 | 364 |
365 if (abs32_locations_.size() > section_relocs_count) | 365 if (abs32_locations_.size() > section_relocs_count) |
366 match = false; | 366 match = false; |
367 | 367 |
368 if (!abs32_locations_.empty()) { | 368 if (!abs32_locations_.empty()) { |
369 std::vector<RVA>::iterator reloc_iter = abs32_locations_.begin(); | 369 std::vector<RVA>::const_iterator reloc_iter = abs32_locations_.begin(); |
370 | 370 |
371 for (uint32_t i = 0; i < section_relocs_count; ++i) { | 371 for (uint32_t i = 0; i < section_relocs_count; ++i) { |
372 if (section_relocs_iter->r_offset == *reloc_iter) | 372 if (section_relocs_iter->r_offset == *reloc_iter) |
373 break; | 373 break; |
374 | 374 |
375 if (!ParseSimpleRegion(file_offset, file_offset + sizeof(Elf32_Rel), | 375 if (!ParseSimpleRegion(file_offset, file_offset + sizeof(Elf32_Rel), |
376 receptor)) { | 376 receptor)) { |
377 return false; | 377 return false; |
378 } | 378 } |
379 | 379 |
(...skipping 139 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
519 // Move 2 bytes at a time, but track 32-bit boundaries | 519 // Move 2 bytes at a time, but track 32-bit boundaries |
520 p += 2; | 520 p += 2; |
521 on_32bit = ((on_32bit + 1) % 2) != 0; | 521 on_32bit = ((on_32bit + 1) % 2) != 0; |
522 } | 522 } |
523 } | 523 } |
524 | 524 |
525 return true; | 525 return true; |
526 } | 526 } |
527 | 527 |
528 } // namespace courgette | 528 } // namespace courgette |
OLD | NEW |