Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(135)

Unified Diff: courgette/encoded_program.h

Issue 2858593002: [Courgette] Clean up EnsembleProgram. (Closed)
Patch Set: Created 3 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | courgette/encoded_program.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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.
« no previous file with comments | « no previous file | courgette/encoded_program.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698