Index: courgette/disassembler_elf_32.h |
diff --git a/courgette/disassembler_elf_32.h b/courgette/disassembler_elf_32.h |
index 8793106957283890b19a70da4ba061410f4d6478..cf3e900f0df22576998457a4be01e9d1eefe68e4 100644 |
--- a/courgette/disassembler_elf_32.h |
+++ b/courgette/disassembler_elf_32.h |
@@ -8,10 +8,10 @@ |
#include <stddef.h> |
#include <stdint.h> |
+#include <memory> |
#include <vector> |
#include "base/macros.h" |
-#include "base/memory/scoped_vector.h" |
#include "courgette/disassembler.h" |
#include "courgette/image_utils.h" |
#include "courgette/memory_allocator.h" |
@@ -46,9 +46,7 @@ class DisassemblerElf32 : public Disassembler { |
void set_relative_target(RVA relative_target) { |
relative_target_ = relative_target; |
} |
- void set_file_offset(FileOffset file_offset) { |
- file_offset_ = file_offset; |
- } |
+ void set_file_offset(FileOffset file_offset) { file_offset_ = file_offset; } |
// Computes the relative jump's offset from the op in p. |
virtual CheckBool ComputeRelativeTarget(const uint8_t* op_pointer) = 0; |
@@ -61,12 +59,14 @@ class DisassemblerElf32 : public Disassembler { |
virtual uint16_t op_size() const = 0; |
// Comparator for sorting, which assumes uniqueness of RVAs. |
- static bool IsLessThanByRVA(TypedRVA* a, TypedRVA* b) { |
+ static bool IsLessThanByRVA(const std::unique_ptr<TypedRVA>& a, |
+ const std::unique_ptr<TypedRVA>& b) { |
return a->rva() < b->rva(); |
} |
// Comparator for sorting, which assumes uniqueness of file offsets. |
- static bool IsLessThanByFileOffset(TypedRVA* a, TypedRVA* b) { |
+ static bool IsLessThanByFileOffset(const std::unique_ptr<TypedRVA>& a, |
+ const std::unique_ptr<TypedRVA>& b) { |
return a->file_offset() < b->file_offset(); |
} |
@@ -92,8 +92,10 @@ class DisassemblerElf32 : public Disassembler { |
virtual e_machine_values ElfEM() const = 0; |
// Public for unittests only |
- std::vector<RVA> &Abs32Locations() { return abs32_locations_; } |
- ScopedVector<TypedRVA> &Rel32Locations() { return rel32_locations_; } |
+ std::vector<RVA>& Abs32Locations() { return abs32_locations_; } |
+ std::vector<std::unique_ptr<TypedRVA>>& Rel32Locations() { |
+ return rel32_locations_; |
+ } |
protected: |
bool UpdateLength(); |
@@ -139,7 +141,8 @@ class DisassemblerElf32 : public Disassembler { |
CheckBool RVAsToFileOffsets(const std::vector<RVA>& rvas, |
std::vector<FileOffset>* file_offsets); |
- CheckBool RVAsToFileOffsets(ScopedVector<TypedRVA>* typed_rvas); |
+ CheckBool RVAsToFileOffsets( |
+ std::vector<std::unique_ptr<TypedRVA>>* typed_rvas); |
// Parsing code for Disassemble(). |
@@ -156,8 +159,8 @@ class DisassemblerElf32 : public Disassembler { |
const Elf32_Shdr* section_header, |
std::vector<FileOffset>::iterator* current_abs_offset, |
std::vector<FileOffset>::iterator end_abs_offset, |
- ScopedVector<TypedRVA>::iterator* current_rel, |
- ScopedVector<TypedRVA>::iterator end_rel, |
+ std::vector<std::unique_ptr<TypedRVA>>::iterator* current_rel, |
+ std::vector<std::unique_ptr<TypedRVA>>::iterator end_rel, |
AssemblyProgram* program) WARN_UNUSED_RESULT; |
CheckBool ParseSimpleRegion(FileOffset start_file_offset, |
@@ -189,7 +192,7 @@ class DisassemblerElf32 : public Disassembler { |
size_t default_string_section_size_; |
std::vector<RVA> abs32_locations_; |
- ScopedVector<TypedRVA> rel32_locations_; |
+ std::vector<std::unique_ptr<TypedRVA>> rel32_locations_; |
DISALLOW_COPY_AND_ASSIGN(DisassemblerElf32); |
}; |