| OLD | NEW |
| 1 //===-- ELFWriter.h - Target-independent ELF writer support -----*- C++ -*-===// | 1 //===-- ELFWriter.h - Target-independent ELF writer support -----*- C++ -*-===// |
| 2 // | 2 // |
| 3 // The LLVM Compiler Infrastructure | 3 // The LLVM Compiler Infrastructure |
| 4 // | 4 // |
| 5 // This file is distributed under the University of Illinois Open Source | 5 // This file is distributed under the University of Illinois Open Source |
| 6 // License. See LICENSE.TXT for details. | 6 // License. See LICENSE.TXT for details. |
| 7 // | 7 // |
| 8 //===----------------------------------------------------------------------===// | 8 //===----------------------------------------------------------------------===// |
| 9 // | 9 // |
| 10 // This file defines the ELFWriter class. | 10 // This file defines the ELFWriter class. |
| (...skipping 17 matching lines...) Expand all Loading... |
| 28 class ELFSection; | 28 class ELFSection; |
| 29 struct ELFSym; | 29 struct ELFSym; |
| 30 class GlobalVariable; | 30 class GlobalVariable; |
| 31 class JITDebugRegisterer; | 31 class JITDebugRegisterer; |
| 32 class Mangler; | 32 class Mangler; |
| 33 class MachineCodeEmitter; | 33 class MachineCodeEmitter; |
| 34 class MachineConstantPoolEntry; | 34 class MachineConstantPoolEntry; |
| 35 class ObjectCodeEmitter; | 35 class ObjectCodeEmitter; |
| 36 class MCAsmInfo; | 36 class MCAsmInfo; |
| 37 class TargetELFWriterInfo; | 37 class TargetELFWriterInfo; |
| 38 class TargetELFRelocHelper; |
| 38 class TargetLoweringObjectFile; | 39 class TargetLoweringObjectFile; |
| 39 class raw_ostream; | 40 class raw_ostream; |
| 40 class SectionKind; | 41 class SectionKind; |
| 41 class MCContext; | 42 class MCContext; |
| 42 class TargetMachine; | 43 class TargetMachine; |
| 43 | 44 |
| 44 typedef std::vector<ELFSym*>::iterator ELFSymIter; | 45 typedef std::vector<ELFSym*>::iterator ELFSymIter; |
| 45 typedef std::vector<ELFSection*>::iterator ELFSectionIter; | 46 typedef std::vector<ELFSection*>::iterator ELFSectionIter; |
| 46 typedef SetVector<const GlobalValue*>::const_iterator PendingGblsIter; | 47 typedef SetVector<const GlobalValue*>::const_iterator PendingGblsIter; |
| 47 typedef SetVector<const char *>::const_iterator PendingExtsIter; | 48 typedef SetVector<const char *>::const_iterator PendingExtsIter; |
| (...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 86 ELFCodeEmitter *ElfCE; | 87 ELFCodeEmitter *ElfCE; |
| 87 | 88 |
| 88 /// TLOF - Target Lowering Object File, provide section names for globals | 89 /// TLOF - Target Lowering Object File, provide section names for globals |
| 89 /// and other object file specific stuff | 90 /// and other object file specific stuff |
| 90 const TargetLoweringObjectFile &TLOF; | 91 const TargetLoweringObjectFile &TLOF; |
| 91 | 92 |
| 92 /// MAI - Target Asm Info, provide information about section names for | 93 /// MAI - Target Asm Info, provide information about section names for |
| 93 /// globals and other target specific stuff. | 94 /// globals and other target specific stuff. |
| 94 const MCAsmInfo *MAI; | 95 const MCAsmInfo *MAI; |
| 95 | 96 |
| 97 /// TERH - Target ELF Relocation Helper - used to emit |
| 98 /// nontrivial in-line arch-specific relocations. |
| 99 TargetELFRelocHelper *TERH; |
| 100 |
| 96 //===------------------------------------------------------------------===// | 101 //===------------------------------------------------------------------===// |
| 97 // Properties inferred automatically from the target machine. | 102 // Properties inferred automatically from the target machine. |
| 98 //===------------------------------------------------------------------===// | 103 //===------------------------------------------------------------------===// |
| 99 | 104 |
| 100 /// is64Bit/isLittleEndian - This information is inferred from the target | 105 /// is64Bit/isLittleEndian - This information is inferred from the target |
| 101 /// machine directly, indicating whether to emit a 32- or 64-bit ELF file. | 106 /// machine directly, indicating whether to emit a 32- or 64-bit ELF file. |
| 102 bool is64Bit, isLittleEndian; | 107 bool is64Bit, isLittleEndian; |
| 103 | 108 |
| 104 /// doInitialization - Emit the file header and all of the global variables | 109 /// doInitialization - Emit the file header and all of the global variables |
| 105 /// for the module to the ELF file. | 110 /// for the module to the ELF file. |
| (...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 235 void EmitXXStructorList(Constant *List, ELFSection &Xtor); | 240 void EmitXXStructorList(Constant *List, ELFSection &Xtor); |
| 236 void EmitRelocations(); | 241 void EmitRelocations(); |
| 237 void EmitRelocation(BinaryObject &RelSec, ELFRelocation &Rel, bool HasRelA); | 242 void EmitRelocation(BinaryObject &RelSec, ELFRelocation &Rel, bool HasRelA); |
| 238 void EmitSectionHeader(BinaryObject &SHdrTab, const ELFSection &SHdr); | 243 void EmitSectionHeader(BinaryObject &SHdrTab, const ELFSection &SHdr); |
| 239 void EmitSectionTableStringTable(); | 244 void EmitSectionTableStringTable(); |
| 240 void EmitSymbol(BinaryObject &SymbolTable, ELFSym &Sym); | 245 void EmitSymbol(BinaryObject &SymbolTable, ELFSym &Sym); |
| 241 void EmitSymbolTable(); | 246 void EmitSymbolTable(); |
| 242 void EmitStringTable(const std::string &ModuleName); | 247 void EmitStringTable(const std::string &ModuleName); |
| 243 void OutputSectionsAndSectionTable(); | 248 void OutputSectionsAndSectionTable(); |
| 244 void RelocateField(BinaryObject &BO, uint32_t Offset, int64_t Value, | 249 void RelocateField(BinaryObject &BO, uint32_t Offset, int64_t Value, |
| 245 unsigned Size); | 250 unsigned Size, const MachineRelocation &MR); |
| 246 unsigned SortSymbols(); | 251 unsigned SortSymbols(); |
| 247 CstExprResTy ResolveConstantExpr(const Constant *CV); | 252 CstExprResTy ResolveConstantExpr(const Constant *CV); |
| 248 }; | 253 }; |
| 249 } | 254 } |
| 250 | 255 |
| 251 #endif | 256 #endif |
| OLD | NEW |