8#ifndef INCLUDED_BALST_RESOLVERIMPL_XCOFF
9#define INCLUDED_BALST_RESOLVERIMPL_XCOFF
74#include <balscm_version.h>
78#if defined(BALST_OBJECTFILEFORMAT_RESOLVER_XCOFF)
101template <
typename RESOLVER_POLICY>
109class ResolverImpl<ObjectFileFormat::Xcoff> {
127 typedef bdls::FilesystemUtil::Offset
134 struct LoadAuxInfosInfo;
137 enum FindIncludeFileFlags {
140 k_USE_INCLUDE_SOURCE_FILE_NAME = 0x1,
141 k_SUPPRESS_LINE_NUMBER = 0x2
145 Resolver_FileHelper *d_helper;
147 StackTrace *d_stackTrace_p;
155 StackTraceFrame **d_segFramePtrs_p;
161 const void **d_segAddresses_p;
167 AuxInfo *d_segAuxInfos_p;
173 int d_numCurrAddresses;
184 char *d_scratchBuf_p;
188 Offset d_virtualToPhysicalOffset;
194 Offset d_archiveMemberOffset;
199 Offset d_archiveMemberSize;
205 Offset d_symTableOffset;
208 Offset d_stringTableOffset;
227 ResolverImpl(
const ResolverImpl&);
228 ResolverImpl& operator=(
const ResolverImpl&);
231 ResolverImpl(StackTrace *stackTrace,
248 int findArchiveMember(
const char *memberName);
255 Offset findCsectIndex(
const char *symbolAddress,
256 const char *csectEndAddress,
257 Offset primarySymIndex);
263 int findIncludeFile(syment *includeSymEnt,
264 Offset firstLineNumberOffset,
265 Offset lineNumberOffset,
266 Offset symStartIndex,
283 int findLineNumber(
int *outLineNumber_p,
284 Offset *outLineNumberOffset_p,
285 Offset lineBufStartOffset,
286 const void *segAddress);
299 void loadAuxInfos(
const LoadAuxInfosInfo *laiInfo,
300 const char *functionBeginAddress,
301 const char *functionEndAddress);
310 int loadSymbols(Offset numSyms,
317 const char *getSourceName(
const auxent *sourceAuxent);
322 const char *getSymbolName(
const syment *sourceSyment);
328 int resolveSegment(
void *segmentPtr,
330 const char *libraryFileName,
331 const char *displayFileName,
332 const char *archiveMemberName);
347 int resolve(StackTrace *stackTrace,
379int ResolverImpl<ObjectFileFormat::Xcoff>::testFunc()
384 int line = 0, lineCopy = 0;
386 for (
int i = 0;
true; ++i) {
389 const int loopGuard = 0x8edf0000;
391 const int mask = 0xa72c3dca;
393 enum { k_LINE = __LINE__ };
395 for (
int i = 0; !(i & loopGuard); ++i) {
Definition bdlma_heapbypassallocator.h:157
Definition bslma_allocator.h:457
#define BSLS_ASSERT_OPT(X)
Definition bsls_assert.h:1856
#define BSLS_IDENT(str)
Definition bsls_ident.h:195
Definition balst_objectfileformat.h:161
Definition bslmt_qlock.h:271
std::size_t UintPtr
Definition bsls_types.h:126
unsigned long long Uint64
Definition bsls_types.h:137
std::ptrdiff_t IntPtr
Definition bsls_types.h:130
long long Int64
Definition bsls_types.h:132