Go to the documentation of this file.
13 #ifndef LLVM_DEBUGINFO_SYMBOLIZE_SYMBOLIZE_H
14 #define LLVM_DEBUGINFO_SYMBOLIZE_SYMBOLIZE_H
33 class ELFObjectFileBase;
34 class MachOObjectFile;
36 struct SectionedAddress;
41 class SymbolizableModule;
55 bool UseSymbolTable =
true;
57 bool RelativeAddresses =
false;
58 bool UntagAddresses =
false;
68 :
static_cast<size_t>(4ULL * 1024 * 1024 * 1024) ;
87 symbolizeInlinedCode(
const std::string &
ModuleName,
115 DemangleName(
const std::string &
Name,
119 DIFetchers.push_back(
std::move(Fetcher));
125 using ObjectPair = std::pair<const ObjectFile *, const ObjectFile *>;
127 template <
typename T>
129 symbolizeCodeCommon(
const T &ModuleSpecifier,
131 template <
typename T>
133 symbolizeInlinedCodeCommon(
const T &ModuleSpecifier,
135 template <
typename T>
138 template <
typename T>
140 symbolizeFrameCommon(
const T &ModuleSpecifier,
148 getOrCreateModuleInfo(
const std::string &
ModuleName);
161 ObjectFile *lookUpDsymFile(
const std::string &Path,
163 const std::string &ArchName);
164 ObjectFile *lookUpDebuglinkObject(
const std::string &Path,
166 const std::string &ArchName);
167 ObjectFile *lookUpBuildIDObject(
const std::string &Path,
169 const std::string &ArchName);
171 bool findDebugBinary(
const std::string &OrigPath,
172 const std::string &DebuglinkName,
uint32_t CRCHash,
173 std::string &Result);
176 std::string &Result);
180 const std::string &ArchName);
186 const std::string &ArchName);
191 std::map<std::string, std::unique_ptr<SymbolizableModule>, std::less<>>
196 std::map<std::pair<std::string, std::string>, ObjectPair>
197 ObjectPairForPathArch;
200 std::map<std::string, CachedBinary> BinaryForPath;
205 size_t CacheSize = 0;
209 std::map<std::pair<std::string, std::string>, std::unique_ptr<ObjectFile>>
210 ObjectForUBPathAndArch;
239 size_t size() {
return Bin.getBinary()->getData().size(); }
251 #endif // LLVM_DEBUGINFO_SYMBOLIZE_SYMBOLIZE_H
OwningBinary< Binary > * operator->()
This is an optimization pass for GlobalISel generic memory operations.
void addDIFetcher(std::unique_ptr< DIFetcher > Fetcher)
This is a 'vector' (really, a variable-sized array), optimized for the case when the array is small.
std::vector< std::string > DebugFileDirectory
Tagged union holding either a T or a Error.
std::vector< std::string > DsymHints
DINameKind
A DINameKind is passed to name search methods to specify a preference regarding the type of name reso...
const char LLVMTargetMachineRef LLVMPassBuilderOptionsRef Options
bar al al movzbl eax ret Missed when stored in a memory object
CachedBinary(OwningBinary< Binary > Bin)
Optional< ArrayRef< uint8_t > > getBuildID(const ELFObjectFileBase *Obj)
compiles ldr LCPI1_0 ldr ldr mov lsr tst moveq r1 ldr LCPI1_1 and r0 bx lr It would be better to do something like to fold the shift into the conditional move
OutputIt move(R &&Range, OutputIt Out)
Provide wrappers to std::move which take ranges instead of having to pass begin/end explicitly.
OwningBinary< Binary > & operator*()
print Print MemDeps of function
StringRef - Represent a constant reference to a string, i.e.
This class is the base class for all object file types.
std::string FallbackDebugPath
DINameKind FunctionNameKind
A simple intrusive list implementation.
bool pruneCache(StringRef Path, CachePruningPolicy Policy)
Peform pruning using the supplied policy, returns true if pruning occurred, i.e.
DILineInfoSpecifier::FunctionNameKind FunctionNameKind