[Courgette] Refactor: Unify Disassembler::Disassemble() and instantiate AssemblyProgram there.

This is part of AssemblyProgram reduction effort. Details:
- Add Disassembler::Disassemble() and dedup separate PE/ELF versions.
  - Instantiate AssemblyProgram there; replaces old behavior where
    caller (program_detector.cc) instantiates and passes as out param.
- Add virtual Disassembler::GetInstructionGenerator().
  - Remove InstructionGenerator's AssemblyProgram* param; update tests.
- Move InstructionReceptor and InstructionGenerator from AssemblyProgram
  to new file instruction_utils.h.
- Rename ParseAbs32Relocs() to ExtractAbs32Locations(); make common.
- Rename ParseRel32Relocs() to ExtractRel32Locations(); make common.
- Make DisassemblerElf32::abs32_locations_ non-mutable.

BUG=660980

Review-Url: https://codereview.chromium.org/2771753004
Cr-Original-Commit-Position: refs/heads/master@{#459272}
Cr-Mirrored-From: https://chromium.googlesource.com/chromium/src
Cr-Mirrored-Commit: 257f9fb084fd9c3a660ef8d7fd2948cb3d3fd1fb
15 files changed
tree: 3b4ede091dba50896b04857a7253daed80adadb4
  1. BUILD.gn
  2. DEPS
  3. OWNERS
  4. adjustment_method.cc
  5. adjustment_method.h
  6. adjustment_method_2.cc
  7. adjustment_method_unittest.cc
  8. analyze_mem_test
  9. analyze_stress_test
  10. assembly_program.cc
  11. assembly_program.h
  12. base_test_unittest.cc
  13. base_test_unittest.h
  14. bsdiff_memory_unittest.cc
  15. consecutive_range_visitor.h
  16. consecutive_range_visitor_unittest.cc
  17. courgette.h
  18. courgette_application.png
  19. courgette_generation.png
  20. courgette_minimal_tool.cc
  21. courgette_tool.cc
  22. crc.cc
  23. crc.h
  24. description.html
  25. description.md
  26. difference_estimator.cc
  27. difference_estimator.h
  28. difference_estimator_unittest.cc
  29. disassembler.cc
  30. disassembler.h
  31. disassembler_elf_32.cc
  32. disassembler_elf_32.h
  33. disassembler_elf_32_arm.cc
  34. disassembler_elf_32_arm.h
  35. disassembler_elf_32_x86.cc
  36. disassembler_elf_32_x86.h
  37. disassembler_elf_32_x86_unittest.cc
  38. disassembler_win32.cc
  39. disassembler_win32.h
  40. disassembler_win32_x64.cc
  41. disassembler_win32_x64.h
  42. disassembler_win32_x64_unittest.cc
  43. disassembler_win32_x86.cc
  44. disassembler_win32_x86.h
  45. disassembler_win32_x86_unittest.cc
  46. encode_decode_unittest.cc
  47. encoded_program.cc
  48. encoded_program.h
  49. encoded_program_fuzz_unittest.cc
  50. encoded_program_unittest.cc
  51. ensemble.cc
  52. ensemble.h
  53. ensemble_apply.cc
  54. ensemble_create.cc
  55. ensemble_unittest.cc
  56. image_utils.h
  57. image_utils_unittest.cc
  58. instruction_utils.h
  59. label_manager.cc
  60. label_manager.h
  61. label_manager_unittest.cc
  62. memory_allocator.cc
  63. memory_allocator.h
  64. memory_allocator_unittest.cc
  65. memory_monitor.cc
  66. patch_generator_x86_32.h
  67. patcher_x86_32.h
  68. program_detector.cc
  69. program_detector.h
  70. program_detector_unittest.cc
  71. region.h
  72. rel32_finder.cc
  73. rel32_finder.h
  74. rel32_finder_unittest.cc
  75. rel32_finder_x64.cc
  76. rel32_finder_x64.h
  77. rel32_finder_x86.cc
  78. rel32_finder_x86.h
  79. run_mem_test
  80. run_stress_test
  81. simple_delta.cc
  82. simple_delta.h
  83. streams.cc
  84. streams.h
  85. streams_unittest.cc
  86. stress_test_common
  87. testdata/
  88. third_party/
  89. typedrva_unittest.cc
  90. types_elf.h
  91. types_win_pe.h
  92. versioning_unittest.cc