Index: courgette/encoded_program.h |
diff --git a/courgette/encoded_program.h b/courgette/encoded_program.h |
index 814a45cf35306bb8e3274dc87dec64b3bcdc0e05..1169331b1d8d6a94ce47b7c488f60004a893059b 100644 |
--- a/courgette/encoded_program.h |
+++ b/courgette/encoded_program.h |
@@ -12,8 +12,8 @@ |
#include <vector> |
#include "base/macros.h" |
-#include "courgette/disassembler.h" |
-#include "courgette/label_manager.h" |
+#include "courgette/courgette.h" |
+#include "courgette/image_utils.h" |
#include "courgette/memory_allocator.h" |
#include "courgette/types_elf.h" |
@@ -32,14 +32,14 @@ const int kStreamOriginAddresses = kStreamMisc; |
const int kStreamLimit = 9; |
+class LabelManager; |
class SinkStream; |
class SinkStreamSet; |
class SourceStreamSet; |
-// An EncodedProgram is a set of tables that contain a simple 'binary assembly |
-// language' that can be assembled to produce a sequence of bytes, for example, |
-// a Windows 32-bit executable. |
-// |
+// EncodedProgram encodes Courgette's simple "binary assembly language", which |
+// can be assembled to produce a sequence of bytes (e.g., a Windows 32-bit |
+// executable). |
class EncodedProgram { |
public: |
EncodedProgram(); |
@@ -85,27 +85,27 @@ class EncodedProgram { |
// These are part of the patch format. Reusing an existing value will |
// break backwards compatibility. |
enum OP { |
- ORIGIN = 0, // ORIGIN <rva> - set address for subsequent assembly. |
- COPY = 1, // COPY <count> <bytes> - copy bytes to output. |
- COPY1 = 2, // COPY1 <byte> - same as COPY 1 <byte>. |
- REL32 = 3, // REL32 <index> - emit rel32 encoded reference to address at |
- // address table offset <index> |
- ABS32 = 4, // ABS32 <index> - emit abs32 encoded reference to address at |
- // address table offset <index> |
- MAKE_PE_RELOCATION_TABLE = 5, // Emit PE base relocation table blocks. |
- MAKE_ELF_RELOCATION_TABLE = 6, // Emit Elf relocation table for X86 |
- MAKE_ELF_ARM_RELOCATION_TABLE = 7, // Emit Elf relocation table for ARM |
- MAKE_PE64_RELOCATION_TABLE = 8, // Emit PE64 base relocation table blocks. |
- ABS64 = 9, // ABS64 <index> - emit abs64 encoded reference to address at |
- // address table offset <index> |
+ ORIGIN = 0, // ORIGIN <rva> - set address for subsequent assembly. |
+ COPY = 1, // COPY <count> <bytes> - copy bytes to output. |
+ COPY1 = 2, // COPY1 <byte> - same as COPY 1 <byte>. |
+ REL32 = 3, // REL32 <index> - emit rel32 encoded reference to address at |
+ // address table offset <index> |
+ ABS32 = 4, // ABS32 <index> - emit abs32 encoded reference to address at |
+ // address table offset <index> |
+ MAKE_PE_RELOCATION_TABLE = 5, // Emit PE base relocation table blocks. |
+ MAKE_ELF_RELOCATION_TABLE = 6, // Emit Elf relocation table for X86 |
+ MAKE_ELF_ARM_RELOCATION_TABLE = 7, // Emit Elf relocation table for ARM |
+ MAKE_PE64_RELOCATION_TABLE = 8, // Emit PE64 base relocation table blocks. |
+ ABS64 = 9, // ABS64 <index> - emit abs64 encoded reference to address at |
+ // address table offset <index> |
// ARM reserves 0x1000-LAST_ARM, bits 13-16 define the opcode |
// subset, and 1-12 are the compressed ARM op. |
- REL32ARM8 = 0x1000, |
- REL32ARM11 = 0x2000, |
- REL32ARM24 = 0x3000, |
- REL32ARM25 = 0x4000, |
- REL32ARM21 = 0x5000, |
- LAST_ARM = 0x5FFF, |
+ REL32ARM8 = 0x1000, |
+ REL32ARM11 = 0x2000, |
+ REL32ARM24 = 0x3000, |
+ REL32ARM25 = 0x4000, |
+ REL32ARM21 = 0x5000, |
+ LAST_ARM = 0x5FFF, |
}; |
typedef NoThrowBuffer<RVA> RvaVector; |
@@ -126,10 +126,12 @@ class EncodedProgram { |
CheckBool GeneratePeRelocations(SinkStream* buffer, |
uint8_t type) WARN_UNUSED_RESULT; |
CheckBool GenerateElfRelocations(Elf32_Word pending_elf_relocation_table, |
- SinkStream *buffer) WARN_UNUSED_RESULT; |
+ SinkStream* buffer) WARN_UNUSED_RESULT; |
// Decodes and evaluates courgette ops for ARM rel32 addresses. |
- CheckBool EvaluateRel32ARM(OP op, size_t& ix_rel32_ix, RVA& current_rva, |
+ CheckBool EvaluateRel32ARM(OP op, |
+ size_t* ix_rel32_ix, |
+ RVA* current_rva, |
SinkStream* output); |
// Binary assembly language tables. |