| Index: courgette/encoded_program.h
|
| diff --git a/courgette/encoded_program.h b/courgette/encoded_program.h
|
| index b1203535f25b1296cb45ab8679d78ee51c3cb782..62f143917b74208de5ea83aadbeff8ad4f572385 100644
|
| --- a/courgette/encoded_program.h
|
| +++ b/courgette/encoded_program.h
|
| @@ -43,7 +43,8 @@ class EncodedProgram {
|
| CheckBool AddCopy(uint32 count, const void* bytes) WARN_UNUSED_RESULT;
|
| CheckBool AddRel32(int label_index) WARN_UNUSED_RESULT;
|
| CheckBool AddAbs32(int label_index) WARN_UNUSED_RESULT;
|
| - CheckBool AddMakeRelocs() WARN_UNUSED_RESULT;
|
| + CheckBool AddPeMakeRelocs() WARN_UNUSED_RESULT;
|
| + CheckBool AddElfMakeRelocs() WARN_UNUSED_RESULT;
|
|
|
| // (3) Serialize binary assembly language tables to a set of streams.
|
| CheckBool WriteTo(SinkStreamSet* streams) WARN_UNUSED_RESULT;
|
| @@ -58,16 +59,18 @@ class EncodedProgram {
|
|
|
| private:
|
| // Binary assembly language operations.
|
| + // These are part of the patch format. Reusing an existing value will
|
| + // break backwards compatibility.
|
| enum OP {
|
| - ORIGIN, // ORIGIN <rva> - set address for subsequent assembly.
|
| - COPY, // COPY <count> <bytes> - copy bytes to output.
|
| - COPY1, // COPY1 <byte> - same as COPY 1 <byte>.
|
| - REL32, // REL32 <index> - emit rel32 encoded reference to address at
|
| - // address table offset <index>
|
| - ABS32, // ABS32 <index> - emit abs32 encoded reference to address at
|
| - // address table offset <index>
|
| - MAKE_BASE_RELOCATION_TABLE, // Emit base relocation table blocks.
|
| - OP_LAST
|
| + 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.
|
| };
|
|
|
| typedef NoThrowBuffer<RVA> RvaVector;
|
| @@ -76,7 +79,8 @@ class EncodedProgram {
|
| typedef NoThrowBuffer<OP> OPVector;
|
|
|
| void DebuggingSummary();
|
| - CheckBool GenerateBaseRelocations(SinkStream *buffer) WARN_UNUSED_RESULT;
|
| + CheckBool GeneratePeRelocations(SinkStream *buffer) WARN_UNUSED_RESULT;
|
| + CheckBool GenerateElfRelocations(SinkStream *buffer) WARN_UNUSED_RESULT;
|
| CheckBool DefineLabelCommon(RvaVector*, int, RVA) WARN_UNUSED_RESULT;
|
| void FinishLabelsCommon(RvaVector* addresses);
|
|
|
|
|