LLVM API Documentation

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
MachineModuleInfoImpls.h
Go to the documentation of this file.
1 //===-- llvm/CodeGen/MachineModuleInfoImpls.h -------------------*- C++ -*-===//
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 defines object-file format specific implementations of
11 // MachineModuleInfoImpl.
12 //
13 //===----------------------------------------------------------------------===//
14 
15 #ifndef LLVM_CODEGEN_MACHINEMODULEINFOIMPLS_H
16 #define LLVM_CODEGEN_MACHINEMODULEINFOIMPLS_H
17 
19 
20 namespace llvm {
21  class MCSymbol;
22 
23  /// MachineModuleInfoMachO - This is a MachineModuleInfoImpl implementation
24  /// for MachO targets.
26  /// FnStubs - Darwin '$stub' stubs. The key is something like "Lfoo$stub",
27  /// the value is something like "_foo".
29 
30  /// GVStubs - Darwin '$non_lazy_ptr' stubs. The key is something like
31  /// "Lfoo$non_lazy_ptr", the value is something like "_foo". The extra bit
32  /// is true if this GV is external.
34 
35  /// HiddenGVStubs - Darwin '$non_lazy_ptr' stubs. The key is something like
36  /// "Lfoo$non_lazy_ptr", the value is something like "_foo". Unlike GVStubs
37  /// these are for things with hidden visibility. The extra bit is true if
38  /// this GV is external.
40 
41  virtual void anchor(); // Out of line virtual method.
42  public:
44 
46  assert(Sym && "Key cannot be null");
47  return FnStubs[Sym];
48  }
49 
51  assert(Sym && "Key cannot be null");
52  return GVStubs[Sym];
53  }
54 
56  assert(Sym && "Key cannot be null");
57  return HiddenGVStubs[Sym];
58  }
59 
60  /// Accessor methods to return the set of stubs in sorted order.
62  return GetSortedStubs(FnStubs);
63  }
65  return GetSortedStubs(GVStubs);
66  }
68  return GetSortedStubs(HiddenGVStubs);
69  }
70  };
71 
72  /// MachineModuleInfoELF - This is a MachineModuleInfoImpl implementation
73  /// for ELF targets.
75  /// GVStubs - These stubs are used to materialize global addresses in PIC
76  /// mode.
78 
79  virtual void anchor(); // Out of line virtual method.
80  public:
82 
84  assert(Sym && "Key cannot be null");
85  return GVStubs[Sym];
86  }
87 
88  /// Accessor methods to return the set of stubs in sorted order.
89 
91  return GetSortedStubs(GVStubs);
92  }
93  };
94 
95 } // end namespace llvm
96 
97 #endif
StubValueTy & getHiddenGVStubEntry(MCSymbol *Sym)
static SymbolListTy GetSortedStubs(const DenseMap< MCSymbol *, StubValueTy > &)
SymbolListTy GetFnStubList() const
Accessor methods to return the set of stubs in sorted order.
std::vector< std::pair< MCSymbol *, StubValueTy > > SymbolListTy
SymbolListTy GetGVStubList() const
SymbolListTy GetGVStubList() const
Accessor methods to return the set of stubs in sorted order.
StubValueTy & getGVStubEntry(MCSymbol *Sym)
StubValueTy & getGVStubEntry(MCSymbol *Sym)
MachineModuleInfoELF(const MachineModuleInfo &)
StubValueTy & getFnStubEntry(MCSymbol *Sym)
MachineModuleInfoMachO(const MachineModuleInfo &)
SymbolListTy GetHiddenGVStubList() const