Mercurial > hg > Members > tobaru > cbc > CbC_llvm
comparison lib/ExecutionEngine/RuntimeDyld/ObjectImageCommon.h @ 0:95c75e76d11b
LLVM 3.4
author | Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp> |
---|---|
date | Thu, 12 Dec 2013 13:56:28 +0900 |
parents | |
children | e4204d083e25 |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:95c75e76d11b |
---|---|
1 //===-- ObjectImageCommon.h - Format independent executuable object image -===// | |
2 // | |
3 // The LLVM Compiler Infrastructure | |
4 // | |
5 // This file is distributed under the University of Illinois Open Source | |
6 // License. See LICENSE.TXT for details. | |
7 // | |
8 //===----------------------------------------------------------------------===// | |
9 // | |
10 // This file declares a file format independent ObjectImage class. | |
11 // | |
12 //===----------------------------------------------------------------------===// | |
13 | |
14 #ifndef LLVM_RUNTIMEDYLD_OBJECTIMAGECOMMON_H | |
15 #define LLVM_RUNTIMEDYLD_OBJECTIMAGECOMMON_H | |
16 | |
17 #include "llvm/ExecutionEngine/ObjectBuffer.h" | |
18 #include "llvm/ExecutionEngine/ObjectImage.h" | |
19 #include "llvm/Object/ObjectFile.h" | |
20 | |
21 namespace llvm { | |
22 | |
23 class ObjectImageCommon : public ObjectImage { | |
24 ObjectImageCommon(); // = delete | |
25 ObjectImageCommon(const ObjectImageCommon &other); // = delete | |
26 virtual void anchor(); | |
27 | |
28 protected: | |
29 object::ObjectFile *ObjFile; | |
30 | |
31 // This form of the constructor allows subclasses to use | |
32 // format-specific subclasses of ObjectFile directly | |
33 ObjectImageCommon(ObjectBuffer *Input, object::ObjectFile *Obj) | |
34 : ObjectImage(Input), // saves Input as Buffer and takes ownership | |
35 ObjFile(Obj) | |
36 { | |
37 } | |
38 | |
39 public: | |
40 ObjectImageCommon(ObjectBuffer* Input) | |
41 : ObjectImage(Input) // saves Input as Buffer and takes ownership | |
42 { | |
43 ObjFile = object::ObjectFile::createObjectFile(Buffer->getMemBuffer()); | |
44 } | |
45 virtual ~ObjectImageCommon() { delete ObjFile; } | |
46 | |
47 virtual object::symbol_iterator begin_symbols() const | |
48 { return ObjFile->begin_symbols(); } | |
49 virtual object::symbol_iterator end_symbols() const | |
50 { return ObjFile->end_symbols(); } | |
51 | |
52 virtual object::section_iterator begin_sections() const | |
53 { return ObjFile->begin_sections(); } | |
54 virtual object::section_iterator end_sections() const | |
55 { return ObjFile->end_sections(); } | |
56 | |
57 virtual /* Triple::ArchType */ unsigned getArch() const | |
58 { return ObjFile->getArch(); } | |
59 | |
60 virtual StringRef getData() const { return ObjFile->getData(); } | |
61 | |
62 virtual object::ObjectFile* getObjectFile() const { return ObjFile; } | |
63 | |
64 // Subclasses can override these methods to update the image with loaded | |
65 // addresses for sections and common symbols | |
66 virtual void updateSectionAddress(const object::SectionRef &Sec, | |
67 uint64_t Addr) {} | |
68 virtual void updateSymbolAddress(const object::SymbolRef &Sym, uint64_t Addr) | |
69 {} | |
70 | |
71 // Subclasses can override these methods to provide JIT debugging support | |
72 virtual void registerWithDebugger() {} | |
73 virtual void deregisterWithDebugger() {} | |
74 }; | |
75 | |
76 } // end namespace llvm | |
77 | |
78 #endif // LLVM_RUNTIMEDYLD_OBJECT_IMAGE_H | |
79 |