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
125 StackTrace *d_stackTrace_p;
133 char *d_scratchBufA_p;
135 char *d_scratchBufB_p;
137 char *d_scratchBufC_p;
139 char *d_scratchBufD_p;
141 char *d_scratchBufE_p;
149 ResolverImpl(
const ResolverImpl&);
150 ResolverImpl& operator=(
const ResolverImpl&);
159 ResolverImpl(StackTrace *stackTrace,
160 bool demanglingPreferredFlag);
163 ~ResolverImpl() =
default;
173 int loadSymbols(
int matched);
181 int resolveSegment(
void *segmentBaseAddress,
184 const char *libraryFileName);
194 void setFrameSymbolName(StackTraceFrame *frame,
196 bsl::size_t bufferLen)
const;
206 static int resolve(StackTrace *stackTrace,
207 bool demanglingPreferredFlag);
230 int processLoadedImage(
const char *fileName,
231 const void *programHeaders,
232 int numProgramHeaders,
240 int numUnmatchedFrames()
const;
244int ResolverImpl<ObjectFileFormat::Elf>::test()
250 ResolverImpl<ObjectFileFormat::Elf> resolver(&st,
true);
252 return (resolver.numUnmatchedFrames() << 14) | ret;
Definition bdlma_heapbypassallocator.h:157
#define BSLS_IDENT(str)
Definition bsls_ident.h:195
Definition balst_objectfileformat.h:161
std::size_t UintPtr
Definition bsls_types.h:126
std::ptrdiff_t IntPtr
Definition bsls_types.h:130