8#ifndef INCLUDED_BALST_RESOLVERIMPL_ELF
9#define INCLUDED_BALST_RESOLVERIMPL_ELF
71#include <balscm_version.h>
75#if defined(BALST_OBJECTFILEFORMAT_RESOLVER_ELF)
86#include <bsl_vector.h>
91template <
class RESOLVER_POLICY>
105class ResolverImpl<ObjectFileFormat::Elf> {
113 typedef bdls::FilesystemUtil::Offset
117 typedef bsl::span<char> Span;
127 StackTrace *d_stackTrace_p;
135 char *d_scratchBufA_p;
137 char *d_scratchBufB_p;
139 char *d_scratchBufC_p;
141 char *d_scratchBufD_p;
143 char *d_scratchBufE_p;
149 bool d_isMainExecutable;
155 ResolverImpl(
const ResolverImpl&);
156 ResolverImpl& operator=(
const ResolverImpl&);
165 ResolverImpl(StackTrace *stackTrace,
166 bool demanglingPreferredFlag);
169 ~ResolverImpl() =
default;
179 int loadSymbols(
int matched);
187 int resolveSegment(
void *segmentBaseAddress,
190 const char *libraryFileName);
199 void setFrameSymbolName(StackTraceFrame *frame,
200 const Span& scratchSpan)
const;
211 static int resolve(StackTrace *stackTrace,
212 bool demanglingPreferredFlag);
239 int processLoadedImage(
const char *libraryFileName,
240 const void *programHeaders,
241 int numProgramHeaders,
244 bool isMainExecutable);
250 int numUnmatchedFrames()
const;
254int ResolverImpl<ObjectFileFormat::Elf>::test()
260 ResolverImpl<ObjectFileFormat::Elf> resolver(&st,
true);
262 return (resolver.numUnmatchedFrames() << 14) | ret;
Definition bdlma_heapbypassallocator.h:158
#define BSLS_IDENT(str)
BSLS_IDENT() - insert string into .comment binary segment (if supported)
Definition bsls_ident.h:238
Definition balst_objectfileformat.h:152
std::size_t UintPtr
Definition bsls_types.h:128
std::ptrdiff_t IntPtr
Definition bsls_types.h:132