~ubuntu-branches/ubuntu/feisty/clamav/feisty

« back to all changes in this revision

Viewing changes to libclamav/c++/llvm/include/llvm/CodeGen/MachineModuleInfoImpls.h

  • Committer: Bazaar Package Importer
  • Author(s): Kees Cook
  • Date: 2007-02-20 10:33:44 UTC
  • mto: This revision was merged to the branch mainline in revision 16.
  • Revision ID: james.westby@ubuntu.com-20070220103344-zgcu2psnx9d98fpa
Tags: upstream-0.90
ImportĀ upstreamĀ versionĀ 0.90

Show diffs side-by-side

added added

removed removed

Lines of Context:
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
 
 
18
 
#include "llvm/CodeGen/MachineModuleInfo.h"
19
 
 
20
 
namespace llvm {
21
 
  class MCSymbol;
22
 
 
23
 
  /// MachineModuleInfoMachO - This is a MachineModuleInfoImpl implementation
24
 
  /// for MachO targets.
25
 
  class MachineModuleInfoMachO : public MachineModuleInfoImpl {
26
 
    /// FnStubs - Darwin '$stub' stubs.  The key is something like "Lfoo$stub",
27
 
    /// the value is something like "_foo".
28
 
    DenseMap<MCSymbol*, StubValueTy> FnStubs;
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.
33
 
    DenseMap<MCSymbol*, StubValueTy> GVStubs;
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.
39
 
    DenseMap<MCSymbol*, StubValueTy> HiddenGVStubs;
40
 
    
41
 
    virtual void Anchor();  // Out of line virtual method.
42
 
  public:
43
 
    MachineModuleInfoMachO(const MachineModuleInfo &) {}
44
 
    
45
 
    StubValueTy &getFnStubEntry(MCSymbol *Sym) {
46
 
      assert(Sym && "Key cannot be null");
47
 
      return FnStubs[Sym];
48
 
    }
49
 
 
50
 
    StubValueTy &getGVStubEntry(MCSymbol *Sym) {
51
 
      assert(Sym && "Key cannot be null");
52
 
      return GVStubs[Sym];
53
 
    }
54
 
 
55
 
    StubValueTy &getHiddenGVStubEntry(MCSymbol *Sym) {
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.
61
 
    SymbolListTy GetFnStubList() const {
62
 
      return GetSortedStubs(FnStubs);
63
 
    }
64
 
    SymbolListTy GetGVStubList() const {
65
 
      return GetSortedStubs(GVStubs);
66
 
    }
67
 
    SymbolListTy GetHiddenGVStubList() const {
68
 
      return GetSortedStubs(HiddenGVStubs);
69
 
    }
70
 
  };
71
 
 
72
 
  /// MachineModuleInfoELF - This is a MachineModuleInfoImpl implementation
73
 
  /// for ELF targets.
74
 
  class MachineModuleInfoELF : public MachineModuleInfoImpl {
75
 
    /// GVStubs - These stubs are used to materialize global addresses in PIC
76
 
    /// mode.
77
 
    DenseMap<MCSymbol*, StubValueTy> GVStubs;
78
 
 
79
 
    virtual void Anchor();  // Out of line virtual method.
80
 
  public:
81
 
    MachineModuleInfoELF(const MachineModuleInfo &) {}
82
 
 
83
 
    StubValueTy &getGVStubEntry(MCSymbol *Sym) {
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
 
 
90
 
    SymbolListTy GetGVStubList() const {
91
 
      return GetSortedStubs(GVStubs);
92
 
    }
93
 
  };
94
 
 
95
 
} // end namespace llvm
96
 
 
97
 
#endif