1 //===-- llvm/Target/TargetObjInfo.h - Object File Info ----------*- C++ -*-===//
3 // The LLVM Compiler Infrastructure
5 // This file was developed by Bill Wendling and is distributed under the
6 // University of Illinois Open Source License. See LICENSE.TXT for details.
8 //===----------------------------------------------------------------------===//
10 // This file contains a class to be used as the basis for target specific object
13 //===----------------------------------------------------------------------===//
15 #ifndef LLVM_TARGET_OBJ_INFO_H
16 #define LLVM_TARGET_OBJ_INFO_H
23 struct TargetObjInfo {
25 virtual ~TargetObjInfo() {}
27 typedef std::vector<unsigned char> DataBuffer;
29 virtual void align(DataBuffer &Output, unsigned Boundary) const = 0;
31 //===------------------------------------------------------------------===//
32 // Out Functions - Output the specified value to the data buffer.
34 virtual void outbyte(DataBuffer &Output, unsigned char X) const = 0;
35 virtual void outhalf(DataBuffer &Output, unsigned short X) const = 0;
36 virtual void outword(DataBuffer &Output, unsigned X) const = 0;
37 virtual void outxword(DataBuffer &Output, uint64_t X) const = 0;
38 virtual void outaddr32(DataBuffer &Output, unsigned X) const = 0;
39 virtual void outaddr64(DataBuffer &Output, uint64_t X) const = 0;
40 virtual void outaddr(DataBuffer &Output, uint64_t X) const = 0;
41 virtual void outstring(DataBuffer &Output, std::string &S,
42 unsigned Length) const = 0;
44 //===------------------------------------------------------------------===//
45 // Fix Functions - Replace an existing entry at an offset.
47 virtual void fixhalf(DataBuffer &Output, unsigned short X,
48 unsigned Offset) const = 0;
49 virtual void fixword(DataBuffer &Output, unsigned X,
50 unsigned Offset) const = 0;
51 virtual void fixaddr(DataBuffer &Output, uint64_t X,
52 unsigned Offset) const = 0;
55 } // end llvm namespace
57 #endif // LLVM_TARGET_OBJ_INFO_H