13#ifndef LLVM_OBJECT_SYMBOLICFILE_H
14#define LLVM_OBJECT_SYMBOLICFILE_H
47template <
typename OStream>
49 OS <<
"(" <<
format(
"0x%08" PRIxPTR,
D.p) <<
" (" <<
format(
"0x%08x",
D.d.a)
50 <<
", " <<
format(
"0x%08x",
D.d.b) <<
"))";
57 return std::memcmp(&a, &b,
sizeof(
DataRefImpl)) == 0;
67 return std::memcmp(&a, &b,
sizeof(
DataRefImpl)) < 0;
82 const content_type *
operator->()
const {
return &Current; }
84 const content_type &
operator*()
const {
return Current; }
87 return Current == other.Current;
91 return !(*
this == other);
181 return v->isSymbolic();
189 : SymbolPimpl(SymbolP), OwningObject(Owner) {}
192 return SymbolPimpl ==
Other.SymbolPimpl;
196 return SymbolPimpl <
Other.SymbolPimpl;
200 return OwningObject->moveSymbolNext(SymbolPimpl);
204 return OwningObject->printSymbolName(OS, SymbolPimpl);
208 return OwningObject->getSymbolFlags(SymbolPimpl);
static GCRegistry::Add< StatepointGC > D("statepoint-example", "an example strategy for statepoint")
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)
const SymbolicFile * getObject() const
DataRefImpl getRawDataRefImpl() const
bool operator==(const BasicSymbolRef &Other) const
Error printName(raw_ostream &OS) const
bool operator<(const BasicSymbolRef &Other) const
Binary(unsigned int Type, MemoryBufferRef Source)
static bool classof(const Binary *v)
virtual basic_symbol_iterator symbol_begin() const =0
iterator_range< basic_symbol_iterator > basic_symbol_iterator_range
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)
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
virtual void moveSymbolNext(DataRefImpl &Symb) const =0
const content_type & operator*() const
const content_type * operator->() const
std::forward_iterator_tag iterator_category
bool operator==(const content_iterator &other) const
content_iterator & operator++()
bool operator!=(const content_iterator &other) const
const ImportDirectoryEntryRef value_type
std::ptrdiff_t difference_type
content_iterator(content_type symb)
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
bool operator!=(const DataRefImpl &a, const DataRefImpl &b)
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.
struct llvm::object::DataRefImpl::@005117267142344013370254144343227032034000327225 d