| Index: courgette/disassembler_elf_32.cc
|
| diff --git a/courgette/disassembler_elf_32.cc b/courgette/disassembler_elf_32.cc
|
| index e35a3af1851f8983268a105662561cca54cdde64..14f0383bd6e4e3595dac0fc2482a230105e36d97 100644
|
| --- a/courgette/disassembler_elf_32.cc
|
| +++ b/courgette/disassembler_elf_32.cc
|
| @@ -163,28 +163,6 @@ bool DisassemblerElf32::ParseHeader() {
|
| return Good();
|
| }
|
|
|
| -bool DisassemblerElf32::Disassemble(AssemblyProgram* program) {
|
| - if (!ok())
|
| - return false;
|
| -
|
| - if (!ParseAbs32Relocs())
|
| - return false;
|
| -
|
| - if (!ParseRel32RelocsFromSections()) // Does not sort rel32 locations.
|
| - return false;
|
| -
|
| - PrecomputeLabels(program);
|
| - RemoveUnusedRel32Locations(program);
|
| -
|
| - if (!program->GenerateInstructions(
|
| - base::Bind(&DisassemblerElf32::ParseFile, base::Unretained(this)))) {
|
| - return false;
|
| - }
|
| -
|
| - program->DefaultAssignIndexes();
|
| - return true;
|
| -}
|
| -
|
| CheckBool DisassemblerElf32::IsValidTargetRVA(RVA rva) const {
|
| if (rva == kUnassignedRVA)
|
| return false;
|
| @@ -316,7 +294,7 @@ CheckBool DisassemblerElf32::RVAsToFileOffsets(
|
| return true;
|
| }
|
|
|
| -CheckBool DisassemblerElf32::ParseAbs32Relocs() {
|
| +bool DisassemblerElf32::ExtractAbs32Locations() {
|
| abs32_locations_.clear();
|
|
|
| // Loop through sections for relocation sections
|
| @@ -350,7 +328,7 @@ CheckBool DisassemblerElf32::ParseAbs32Relocs() {
|
| return true;
|
| }
|
|
|
| -CheckBool DisassemblerElf32::ParseRel32RelocsFromSections() {
|
| +bool DisassemblerElf32::ExtractRel32Locations() {
|
| rel32_locations_.clear();
|
| bool found_rel32 = false;
|
|
|
| @@ -411,6 +389,12 @@ void DisassemblerElf32::RemoveUnusedRel32Locations(AssemblyProgram* program) {
|
| rel32_locations_.resize(std::distance(rel32_locations_.begin(), tail_it));
|
| }
|
|
|
| +InstructionGenerator DisassemblerElf32::GetInstructionGenerator(
|
| + AssemblyProgram* program) {
|
| + return base::Bind(&DisassemblerElf32::ParseFile, base::Unretained(this),
|
| + program);
|
| +}
|
| +
|
| CheckBool DisassemblerElf32::ParseFile(AssemblyProgram* program,
|
| InstructionReceptor* receptor) const {
|
| // Walk all the bytes in the file, whether or not in a section.
|
|
|