LLVM: include/llvm/Object/SymbolicFile.h Source File (original) (raw)
1
2
3
4
5
6
7
8
9
10
11
12
13#ifndef LLVM_OBJECT_SYMBOLICFILE_H
14#define LLVM_OBJECT_SYMBOLICFILE_H
15
23#include
24#include
25#include
26#include
27#include
28
29namespace llvm {
30
33
35
37
38
39 struct {
43
45};
46
47template
49 OS << "(" << format("0x%08" PRIxPTR, D.p) << " (" << format("0x%08x", D.d.a)
50 << ", " << format("0x%08x", D.d.b) << "))";
51 return OS;
52}
53
55
56
57 return std::memcmp(&a, &b, sizeof(DataRefImpl)) == 0;
58}
59
63
65
66
67 return std::memcmp(&a, &b, sizeof(DataRefImpl)) < 0;
68}
69
71 content_type Current;
72
73public:
79
81
82 const content_type *operator->() const { return &Current; }
83
84 const content_type &operator*() const { return Current; }
85
87 return Current == other.Current;
88 }
89
91 return !(*this == other);
92 }
93
95 Current.moveNext();
96 return *this;
97 }
98};
99
100class SymbolicFile;
101
102
103
107
108public:
126
129
132
134
136
137
139
142};
143
145
147public:
150
151
153
155
157
159
161
163
164
169
170
173 LLVMContext *Context, bool InitContent = true);
174
179
181 return v->isSymbolic();
182 }
183
185};
186
189 : SymbolPimpl(SymbolP), OwningObject(Owner) {}
190
192 return SymbolPimpl == Other.SymbolPimpl;
193}
194
196 return SymbolPimpl < Other.SymbolPimpl;
197}
198
200 return OwningObject->moveSymbolNext(SymbolPimpl);
201}
202
204 return OwningObject->printSymbolName(OS, SymbolPimpl);
205}
206
208 return OwningObject->getSymbolFlags(SymbolPimpl);
209}
210
212 return SymbolPimpl;
213}
214
216 return OwningObject;
217}
218
219}
220}
221
222#endif
static GCRegistry::Add< StatepointGC > D("statepoint-example", "an example strategy for statepoint")
static ManagedStatic< DebugCounterOwner > Owner
Lightweight error class with error context and mandatory checking.
Tagged union holding either a T or a Error.
This is an important class for using LLVM in a threaded context.
The instances of the Type class are immutable: once they are created, they are never changed.
A range adaptor for a pair of iterators.
Expected< uint32_t > getFlags() const
Get symbol flags (bitwise OR of SymbolRef::Flags)
Definition SymbolicFile.h:207
const SymbolicFile * getObject() const
Definition SymbolicFile.h:215
DataRefImpl getRawDataRefImpl() const
Definition SymbolicFile.h:211
Flags
Definition SymbolicFile.h:109
@ SF_Global
Definition SymbolicFile.h:112
@ SF_Hidden
Definition SymbolicFile.h:121
@ SF_Executable
Definition SymbolicFile.h:123
@ SF_Exported
Definition SymbolicFile.h:117
@ SF_Thumb
Definition SymbolicFile.h:120
@ SF_Common
Definition SymbolicFile.h:115
@ SF_Indirect
Definition SymbolicFile.h:116
@ SF_FormatSpecific
Definition SymbolicFile.h:118
@ SF_Weak
Definition SymbolicFile.h:113
@ SF_Absolute
Definition SymbolicFile.h:114
@ SF_Undefined
Definition SymbolicFile.h:111
@ SF_None
Definition SymbolicFile.h:110
@ SF_Const
Definition SymbolicFile.h:122
bool operator==(const BasicSymbolRef &Other) const
Definition SymbolicFile.h:191
Error printName(raw_ostream &OS) const
Definition SymbolicFile.h:203
bool operator<(const BasicSymbolRef &Other) const
Definition SymbolicFile.h:195
void moveNext()
Definition SymbolicFile.h:199
Binary(unsigned int Type, MemoryBufferRef Source)
Definition SymbolicFile.h:146
static bool classof(const Binary *v)
Definition SymbolicFile.h:180
virtual basic_symbol_iterator symbol_begin() const =0
iterator_range< basic_symbol_iterator > basic_symbol_iterator_range
Definition SymbolicFile.h:165
static Expected< std::unique_ptr< SymbolicFile > > createSymbolicFile(MemoryBufferRef Object, llvm::file_magic Type, LLVMContext *Context, bool InitContent=true)
virtual bool is64Bit() const =0
virtual basic_symbol_iterator symbol_end() const =0
SymbolicFile(unsigned int Type, MemoryBufferRef Source)
static Expected< std::unique_ptr< SymbolicFile > > createSymbolicFile(MemoryBufferRef Object)
Definition SymbolicFile.h:176
virtual Error printSymbolName(raw_ostream &OS, DataRefImpl Symb) const =0
virtual Expected< uint32_t > getSymbolFlags(DataRefImpl Symb) const =0
basic_symbol_iterator_range symbols() const
Definition SymbolicFile.h:166
virtual void moveSymbolNext(DataRefImpl &Symb) const =0
Definition SymbolicFile.h:70
const content_type & operator*() const
Definition SymbolicFile.h:84
const content_type * operator->() const
Definition SymbolicFile.h:82
std::forward_iterator_tag iterator_category
Definition SymbolicFile.h:74
bool operator==(const content_iterator &other) const
Definition SymbolicFile.h:86
content_iterator & operator++()
Definition SymbolicFile.h:94
bool operator!=(const content_iterator &other) const
Definition SymbolicFile.h:90
value_type & reference
Definition SymbolicFile.h:78
const ImportDirectoryEntryRef value_type
Definition SymbolicFile.h:75
std::ptrdiff_t difference_type
Definition SymbolicFile.h:76
content_iterator(content_type symb)
Definition SymbolicFile.h:80
value_type * pointer
Definition SymbolicFile.h:77
This class implements an extremely fast bulk output stream that can only output to a stream.
This provides a very simple, boring adaptor for a begin and end iterator into a range type.
bool operator<(const ELFSymbolRef &A, const ELFSymbolRef &B)
content_iterator< BasicSymbolRef > basic_symbol_iterator
Definition SymbolicFile.h:144
bool operator!=(const DataRefImpl &a, const DataRefImpl &b)
Definition SymbolicFile.h:60
bool operator==(const SectionedAddress &LHS, const SectionedAddress &RHS)
LLVM_ABI raw_ostream & operator<<(raw_ostream &OS, const SectionedAddress &Addr)
This is an optimization pass for GlobalISel generic memory operations.
format_object< Ts... > format(const char *Fmt, const Ts &... Vals)
These are helper functions used to produce formatted output.
OutputIt move(R &&Range, OutputIt Out)
Provide wrappers to std::move which take ranges instead of having to pass begin/end explicitly.
Implement std::hash so that hash_code can be used in STL containers.
file_magic - An "enum class" enumeration of file types based on magic (the first N bytes of the file)...
@ unknown
Unrecognized file.
Definition SymbolicFile.h:36
uint32_t b
Definition SymbolicFile.h:40
uintptr_t p
Definition SymbolicFile.h:42
struct llvm::object::DataRefImpl::@005117267142344013370254144343227032034000327225 d
uint32_t a
Definition SymbolicFile.h:40
DataRefImpl()
Definition SymbolicFile.h:44