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 {

42 uintptr_t p;

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