Index: third_party/courgette/encoded_program.h |
=================================================================== |
--- third_party/courgette/encoded_program.h (revision 15668) |
+++ third_party/courgette/encoded_program.h (working copy) |
@@ -1,84 +0,0 @@ |
-// Copyright (c) 2009 The Chromium Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
-#ifndef COURGETTE_ENCODED_PROGRAM_H_ |
-#define COURGETTE_ENCODED_PROGRAM_H_ |
- |
-#include <vector> |
- |
-#include "base/basictypes.h" |
-#include "third_party/courgette/image_info.h" |
- |
-namespace courgette { |
- |
-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. |
-// |
-class EncodedProgram { |
- public: |
- EncodedProgram(); |
- ~EncodedProgram(); |
- |
- // Generating an EncodedProgram: |
- // |
- // (1) The image base can be specified at any time. |
- void set_image_base(uint64 base) { image_base_ = base; } |
- |
- // (2) Address tables and indexes defined first. |
- void DefineRel32Label(int index, RVA address); |
- void DefineAbs32Label(int index, RVA address); |
- void EndLabels(); |
- |
- // (3) Add instructions in the order needed to generate bytes of file. |
- void AddOrigin(RVA rva); |
- void AddCopy(int count, const void* bytes); |
- void AddRel32(int label_index); |
- void AddAbs32(int label_index); |
- void AddMakeRelocs(); |
- |
- // (3) Serialize binary assembly language tables to a set of streams. |
- void WriteTo(SinkStreamSet *streams); |
- |
- // Using an EncodedProgram to generate a byte stream: |
- // |
- // (4) Deserializes a fresh EncodedProgram from a set of streams. |
- bool ReadFrom(SourceStreamSet *streams); |
- |
- // (5) Assembles the 'binary assembly language' into final file. |
- bool AssembleTo(SinkStream *buffer); |
- |
- private: |
- enum OP; // Binary assembly language operations. |
- |
- void DebuggingSummary(); |
- void GenerateBaseRelocations(SinkStream *buffer); |
- void DefineLabelCommon(std::vector<RVA>*, int, RVA); |
- void FinishLabelsCommon(std::vector<RVA>* addresses); |
- |
- // Binary assembly language tables. |
- uint64 image_base_; |
- std::vector<RVA> rel32_rva_; |
- std::vector<RVA> abs32_rva_; |
- std::vector<OP> ops_; |
- std::vector<RVA> origins_; |
- std::vector<int> copy_counts_; |
- std::vector<uint8> copy_bytes_; |
- std::vector<uint32> rel32_ix_; |
- std::vector<uint32> abs32_ix_; |
- |
- // Table of the addresses containing abs32 relocations; computed during |
- // assembly, used to generate base relocation table. |
- std::vector<uint32> abs32_relocs_; |
- |
- DISALLOW_COPY_AND_ASSIGN(EncodedProgram); |
-}; |
- |
-} // namespace courgette |
-#endif // COURGETTE_ENCODED_FORMAT_H_ |
- |