VirtualBox

source: vbox/trunk/src/VBox/Runtime/include/internal/dbgmod.h@ 46168

Last change on this file since 46168 was 46164, checked in by vboxsync, 12 years ago

More exteran .dSYM and .dwo bundles/files changes.

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 24.2 KB
Line 
1/* $Id: dbgmod.h 46164 2013-05-19 16:58:01Z vboxsync $ */
2/** @file
3 * IPRT - Internal Header for RTDbgMod and the associated interpreters.
4 */
5
6/*
7 * Copyright (C) 2008-2012 Oracle Corporation
8 *
9 * This file is part of VirtualBox Open Source Edition (OSE), as
10 * available from http://www.virtualbox.org. This file is free software;
11 * you can redistribute it and/or modify it under the terms of the GNU
12 * General Public License (GPL) as published by the Free Software
13 * Foundation, in version 2 as it comes in the "COPYING" file of the
14 * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
15 * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
16 *
17 * The contents of this file may alternatively be used under the terms
18 * of the Common Development and Distribution License Version 1.0
19 * (CDDL) only, as it comes in the "COPYING.CDDL" file of the
20 * VirtualBox OSE distribution, in which case the provisions of the
21 * CDDL are applicable instead of those of the GPL.
22 *
23 * You may elect to license modified versions of this file under the
24 * terms and conditions of either the GPL or the CDDL or both.
25 */
26
27#ifndef ___internal_dbgmod_h
28#define ___internal_dbgmod_h
29
30#include <iprt/types.h>
31#include <iprt/critsect.h>
32#include <iprt/ldr.h> /* for PFNRTLDRENUMDBG */
33#include "internal/magics.h"
34
35RT_C_DECLS_BEGIN
36
37/** @addtogroup grp_rt_dbgmod
38 * @internal
39 * @{
40 */
41
42
43/** Pointer to the internal module structure. */
44typedef struct RTDBGMODINT *PRTDBGMODINT;
45
46/**
47 * Virtual method table for executable image interpreters.
48 */
49typedef struct RTDBGMODVTIMG
50{
51 /** Magic number (RTDBGMODVTIMG_MAGIC). */
52 uint32_t u32Magic;
53 /** Reserved. */
54 uint32_t fReserved;
55 /** The name of the interpreter. */
56 const char *pszName;
57
58 /**
59 * Try open the image.
60 *
61 * This combines probing and opening.
62 *
63 * @returns IPRT status code. No informational returns defined.
64 *
65 * @param pMod Pointer to the module that is being opened.
66 *
67 * The RTDBGMOD::pszDbgFile member will point to
68 * the filename of any debug info we're aware of
69 * on input. Also, or alternatively, it is expected
70 * that the interpreter will look for debug info in
71 * the executable image file when present and that it
72 * may ask the image interpreter for this when it's
73 * around.
74 *
75 * Upon successful return the method is expected to
76 * initialize pImgOps and pvImgPriv.
77 * @param enmArch The desired architecture.
78 */
79 DECLCALLBACKMEMBER(int, pfnTryOpen)(PRTDBGMODINT pMod, RTLDRARCH enmArch);
80
81 /**
82 * Close the interpreter, freeing all associated resources.
83 *
84 * The caller sets the pDbgOps and pvDbgPriv RTDBGMOD members
85 * to NULL upon return.
86 *
87 * @param pMod Pointer to the module structure.
88 */
89 DECLCALLBACKMEMBER(int, pfnClose)(PRTDBGMODINT pMod);
90
91 /**
92 * Enumerate the debug info contained in the executable image.
93 *
94 * Identical to RTLdrEnumDbgInfo.
95 *
96 * @returns IPRT status code or whatever pfnCallback returns.
97 *
98 * @param pMod Pointer to the module structure.
99 * @param pfnCallback The callback function. Ignore the module
100 * handle argument!
101 * @param pvUser The user argument.
102 */
103 DECLCALLBACKMEMBER(int, pfnEnumDbgInfo)(PRTDBGMODINT pMod, PFNRTLDRENUMDBG pfnCallback, void *pvUser);
104
105 /**
106 * Enumerate the segments in the executable image.
107 *
108 * Identical to RTLdrEnumSegments.
109 *
110 * @returns IPRT status code or whatever pfnCallback returns.
111 *
112 * @param pMod Pointer to the module structure.
113 * @param pfnCallback The callback function. Ignore the module
114 * handle argument!
115 * @param pvUser The user argument.
116 */
117 DECLCALLBACKMEMBER(int, pfnEnumSegments)(PRTDBGMODINT pMod, PFNRTLDRENUMSEGS pfnCallback, void *pvUser);
118
119 /**
120 * Enumerates the symbols exported by the module.
121 *
122 * @returns iprt status code, which might have been returned by pfnCallback.
123 * @param pMod Pointer to the module structure.
124 * @param fFlags Flags indicating what to return and such.
125 * @param BaseAddress The image base addressto use when calculating the
126 * symbol values.
127 * @param pfnCallback The callback function which each symbol is to be fed
128 * to.
129 * @param pvUser User argument to pass to the enumerator.
130 */
131 DECLCALLBACKMEMBER(int, pfnEnumSymbols)(PRTDBGMODINT pMod, uint32_t fFlags, RTLDRADDR BaseAddress,
132 PFNRTLDRENUMSYMS pfnCallback, void *pvUser);
133
134 /**
135 * Gets the size of the loaded image.
136 *
137 * Identical to RTLdrSize.
138 *
139 * @returns The size in bytes, RTUINTPTR_MAX on failure.
140 *
141 * @param pMod Pointer to the module structure.
142 */
143 DECLCALLBACKMEMBER(RTUINTPTR, pfnImageSize)(PRTDBGMODINT pMod);
144
145 /**
146 * Converts a link address to a segment:offset address (RVA included).
147 *
148 * @returns IPRT status code.
149 *
150 * @param pMod Pointer to the module structure.
151 * @param LinkAddress The link address to convert.
152 * @param piSeg The segment index.
153 * @param poffSeg Where to return the segment offset.
154 */
155 DECLCALLBACKMEMBER(int, pfnLinkAddressToSegOffset)(PRTDBGMODINT pMod, RTLDRADDR LinkAddress,
156 PRTDBGSEGIDX piSeg, PRTLDRADDR poffSeg);
157
158 /**
159 * Converts an image relative virtual address to a segment:offset.
160 *
161 * @returns IPRT status code.
162 *
163 * @param pMod Pointer to the loader module structure.
164 * @param Rva The RVA to convert.
165 * @param piSeg The segment index.
166 * @param poffSeg Where to return the segment offset.
167 */
168 DECLCALLBACKMEMBER(int, pfnRvaToSegOffset)(PRTDBGMODINT pMod, RTLDRADDR Rva, uint32_t *piSeg, PRTLDRADDR poffSeg);
169
170 /**
171 * Creates a read-only mapping of a part of the image file.
172 *
173 * @returns IPRT status code and *ppvMap set on success.
174 *
175 * @param pMod Pointer to the module structure.
176 * @param iDbgInfo The debug info ordinal number if the request
177 * corresponds exactly to a debug info part from
178 * pfnEnumDbgInfo. Otherwise, pass UINT32_MAX.
179 * @param off The offset into the image file.
180 * @param cb The number of bytes to map.
181 * @param ppvMap Where to return the mapping address on success.
182 *
183 * @remarks Fixups will only be applied if @a iDbgInfo is specified.
184 */
185 DECLCALLBACKMEMBER(int, pfnMapPart)(PRTDBGMODINT pMod, uint32_t iDbgInfo, RTFOFF off, size_t cb, void const **ppvMap);
186
187 /**
188 * Unmaps memory previously mapped by pfnMapPart.
189 *
190 * @returns IPRT status code, *ppvMap set to NULL on success.
191 *
192 * @param pMod Pointer to the module structure.
193 * @param cb The size of the mapping.
194 * @param ppvMap The mapping address on input, NULL on
195 * successful return.
196 */
197 DECLCALLBACKMEMBER(int, pfnUnmapPart)(PRTDBGMODINT pMod, size_t cb, void const **ppvMap);
198
199 /**
200 * Gets the image format.
201 *
202 * @returns Valid image format on success, RTLDRFMT_INVALID if not supported.
203 * @param pMod Pointer to the module structure.
204 */
205 DECLCALLBACKMEMBER(RTLDRFMT, pfnGetFormat)(PRTDBGMODINT pMod);
206
207 /**
208 * Gets the image architecture.
209 *
210 * @returns Valid image architecutre on success, RTLDRARCH_WHATEVER if not
211 * supported.
212 * @param pMod Pointer to the module structure.
213 */
214 DECLCALLBACKMEMBER(RTLDRARCH, pfnGetArch)(PRTDBGMODINT pMod);
215
216 /** For catching initialization errors (RTDBGMODVTIMG_MAGIC). */
217 uint32_t u32EndMagic;
218} RTDBGMODVTIMG;
219/** Pointer to a const RTDBGMODVTIMG. */
220typedef RTDBGMODVTIMG const *PCRTDBGMODVTIMG;
221
222
223/**
224 * Virtual method table for debug info interpreters.
225 */
226typedef struct RTDBGMODVTDBG
227{
228 /** Magic number (RTDBGMODVTDBG_MAGIC). */
229 uint32_t u32Magic;
230 /** Mask of supported debug info types, see grp_rt_dbg_type.
231 * Used to speed up the search for a suitable interpreter. */
232 uint32_t fSupports;
233 /** The name of the interpreter. */
234 const char *pszName;
235
236 /**
237 * Try open the image.
238 *
239 * This combines probing and opening.
240 *
241 * @returns IPRT status code. No informational returns defined.
242 *
243 * @param pMod Pointer to the module that is being opened.
244 *
245 * The RTDBGMOD::pszDbgFile member will point to
246 * the filename of any debug info we're aware of
247 * on input. Also, or alternatively, it is expected
248 * that the interpreter will look for debug info in
249 * the executable image file when present and that it
250 * may ask the image interpreter for this when it's
251 * around.
252 *
253 * Upon successful return the method is expected to
254 * initialize pDbgOps and pvDbgPriv.
255 * @param enmArch The desired architecture.
256 */
257 DECLCALLBACKMEMBER(int, pfnTryOpen)(PRTDBGMODINT pMod, RTLDRARCH enmArch);
258
259 /**
260 * Close the interpreter, freeing all associated resources.
261 *
262 * The caller sets the pDbgOps and pvDbgPriv RTDBGMOD members
263 * to NULL upon return.
264 *
265 * @param pMod Pointer to the module structure.
266 */
267 DECLCALLBACKMEMBER(int, pfnClose)(PRTDBGMODINT pMod);
268
269
270
271 /**
272 * Converts an image relative virtual address address to a segmented address.
273 *
274 * @returns Segment index on success, NIL_RTDBGSEGIDX on failure.
275 * @param pMod Pointer to the module structure.
276 * @param uRva The image relative address to convert.
277 * @param poffSeg Where to return the segment offset. Optional.
278 */
279 DECLCALLBACKMEMBER(RTDBGSEGIDX, pfnRvaToSegOff)(PRTDBGMODINT pMod, RTUINTPTR uRva, PRTUINTPTR poffSeg);
280
281 /**
282 * Image size when mapped if segments are mapped adjacently.
283 *
284 * For ELF, PE, and Mach-O images this is (usually) a natural query, for LX and
285 * NE and such it's a bit odder and the answer may not make much sense for them.
286 *
287 * @returns Image mapped size.
288 * @param pMod Pointer to the module structure.
289 */
290 DECLCALLBACKMEMBER(RTUINTPTR, pfnImageSize)(PRTDBGMODINT pMod);
291
292
293
294 /**
295 * Adds a segment to the module (optional).
296 *
297 * @returns IPRT status code.
298 * @retval VERR_NOT_SUPPORTED if the interpreter doesn't support this feature.
299 * @retval VERR_DBG_SEGMENT_INDEX_CONFLICT if the segment index exists already.
300 *
301 * @param pMod Pointer to the module structure.
302 * @param uRva The segment image relative address.
303 * @param cb The segment size.
304 * @param pszName The segment name.
305 * @param cchName The length of the segment name.
306 * @param fFlags Segment flags.
307 * @param piSeg The segment index or NIL_RTDBGSEGIDX on input.
308 * The assigned segment index on successful return.
309 * Optional.
310 */
311 DECLCALLBACKMEMBER(int, pfnSegmentAdd)(PRTDBGMODINT pMod, RTUINTPTR uRva, RTUINTPTR cb, const char *pszName, size_t cchName,
312 uint32_t fFlags, PRTDBGSEGIDX piSeg);
313
314 /**
315 * Gets the segment count.
316 *
317 * @returns Number of segments.
318 * @retval NIL_RTDBGSEGIDX if unknown.
319 *
320 * @param pMod Pointer to the module structure.
321 */
322 DECLCALLBACKMEMBER(RTDBGSEGIDX, pfnSegmentCount)(PRTDBGMODINT pMod);
323
324 /**
325 * Gets information about a segment.
326 *
327 * @returns IPRT status code.
328 * @retval VERR_DBG_INVALID_SEGMENT_INDEX if iSeg is too high.
329 *
330 * @param pMod Pointer to the module structure.
331 * @param iSeg The segment.
332 * @param pSegInfo Where to store the segment information.
333 */
334 DECLCALLBACKMEMBER(int, pfnSegmentByIndex)(PRTDBGMODINT pMod, RTDBGSEGIDX iSeg, PRTDBGSEGMENT pSegInfo);
335
336
337
338 /**
339 * Adds a symbol to the module (optional).
340 *
341 * @returns IPRT code.
342 * @retval VERR_NOT_SUPPORTED if the interpreter doesn't support this feature.
343 *
344 * @param pMod Pointer to the module structure.
345 * @param pszSymbol The symbol name.
346 * @param cchSymbol The length for the symbol name.
347 * @param iSeg The segment number (0-based). RTDBGMOD_SEG_RVA can be used.
348 * @param off The offset into the segment.
349 * @param cb The area covered by the symbol. 0 is fine.
350 * @param fFlags Flags.
351 * @param piOrdinal Where to return the symbol ordinal on success. If the
352 * interpreter doesn't do ordinals, this will be set to
353 * UINT32_MAX. Optional
354 */
355 DECLCALLBACKMEMBER(int, pfnSymbolAdd)(PRTDBGMODINT pMod, const char *pszSymbol, size_t cchSymbol,
356 uint32_t iSeg, RTUINTPTR off, RTUINTPTR cb, uint32_t fFlags,
357 uint32_t *piOrdinal);
358
359 /**
360 * Gets the number of symbols in the module.
361 *
362 * This is used for figuring out the max value to pass to pfnSymbolByIndex among
363 * other things.
364 *
365 * @returns The number of symbols, UINT32_MAX if not known/supported.
366 *
367 * @param pMod Pointer to the module structure.
368 */
369 DECLCALLBACKMEMBER(uint32_t, pfnSymbolCount)(PRTDBGMODINT pMod);
370
371 /**
372 * Queries symbol information by ordinal number.
373 *
374 * @returns IPRT status code.
375 * @retval VINF_SUCCESS on success, no informational status code.
376 * @retval VERR_DBG_NO_SYMBOLS if there aren't any symbols.
377 * @retval VERR_NOT_SUPPORTED if lookup by ordinal is not supported.
378 * @retval VERR_SYMBOL_NOT_FOUND if there is no symbol at that index.
379 *
380 * @param pMod Pointer to the module structure.
381 * @param iOrdinal The symbol ordinal number.
382 * @param pSymInfo Where to store the symbol information.
383 */
384 DECLCALLBACKMEMBER(int, pfnSymbolByOrdinal)(PRTDBGMODINT pMod, uint32_t iOrdinal, PRTDBGSYMBOL pSymInfo);
385
386 /**
387 * Queries symbol information by symbol name.
388 *
389 * @returns IPRT status code.
390 * @retval VINF_SUCCESS on success, no informational status code.
391 * @retval VERR_DBG_NO_SYMBOLS if there aren't any symbols.
392 * @retval VERR_SYMBOL_NOT_FOUND if no suitable symbol was found.
393 *
394 * @param pMod Pointer to the module structure.
395 * @param pszSymbol The symbol name.
396 * @param cchSymbol The length of the symbol name.
397 * @param pSymInfo Where to store the symbol information.
398 */
399 DECLCALLBACKMEMBER(int, pfnSymbolByName)(PRTDBGMODINT pMod, const char *pszSymbol, size_t cchSymbol, PRTDBGSYMBOL pSymInfo);
400
401 /**
402 * Queries symbol information by address.
403 *
404 * The returned symbol is what the debug info interpreter considers the symbol
405 * most applicable to the specified address. This usually means a symbol with an
406 * address equal or lower than the requested.
407 *
408 * @returns IPRT status code.
409 * @retval VINF_SUCCESS on success, no informational status code.
410 * @retval VERR_DBG_NO_SYMBOLS if there aren't any symbols.
411 * @retval VERR_SYMBOL_NOT_FOUND if no suitable symbol was found.
412 *
413 * @param pMod Pointer to the module structure.
414 * @param iSeg The segment number (0-based) or RTDBGSEGIDX_ABS.
415 * @param off The offset into the segment.
416 * @param fFlags Symbol search flags, see RTDBGSYMADDR_FLAGS_XXX.
417 * @param poffDisp Where to store the distance between the specified address
418 * and the returned symbol. Optional.
419 * @param pSymInfo Where to store the symbol information.
420 */
421 DECLCALLBACKMEMBER(int, pfnSymbolByAddr)(PRTDBGMODINT pMod, uint32_t iSeg, RTUINTPTR off, uint32_t fFlags,
422 PRTINTPTR poffDisp, PRTDBGSYMBOL pSymInfo);
423
424
425
426 /**
427 * Adds a line number to the module (optional).
428 *
429 * @returns IPRT status code.
430 * @retval VERR_NOT_SUPPORTED if the interpreter doesn't support this feature.
431 *
432 * @param pMod Pointer to the module structure.
433 * @param pszFile The filename.
434 * @param cchFile The length of the filename.
435 * @param uLineNo The line number.
436 * @param iSeg The segment number (0-based).
437 * @param off The offset into the segment.
438 * @param piOrdinal Where to return the line number ordinal on success. If
439 * the interpreter doesn't do ordinals, this will be set to
440 * UINT32_MAX. Optional
441 */
442 DECLCALLBACKMEMBER(int, pfnLineAdd)(PRTDBGMODINT pMod, const char *pszFile, size_t cchFile, uint32_t uLineNo,
443 uint32_t iSeg, RTUINTPTR off, uint32_t *piOrdinal);
444
445 /**
446 * Gets the number of line numbers in the module.
447 *
448 * @returns The number or UINT32_MAX if not known/supported.
449 *
450 * @param pMod Pointer to the module structure.
451 */
452 DECLCALLBACKMEMBER(uint32_t, pfnLineCount)(PRTDBGMODINT pMod);
453
454 /**
455 * Queries line number information by ordinal number.
456 *
457 * @returns IPRT status code.
458 * @retval VINF_SUCCESS on success, no informational status code.
459 * @retval VERR_DBG_NO_LINE_NUMBERS if there aren't any line numbers.
460 * @retval VERR_DBG_LINE_NOT_FOUND if there is no line number with that
461 * ordinal.
462 *
463 * @param pMod Pointer to the module structure.
464 * @param iOrdinal The line number ordinal number.
465 * @param pLineInfo Where to store the information about the line number.
466 */
467 DECLCALLBACKMEMBER(int, pfnLineByOrdinal)(PRTDBGMODINT pMod, uint32_t iOrdinal, PRTDBGLINE pLineInfo);
468
469 /**
470 * Queries line number information by address.
471 *
472 * @returns IPRT status code.
473 * @retval VINF_SUCCESS on success, no informational status code.
474 * @retval VERR_DBG_NO_LINE_NUMBERS if there aren't any line numbers.
475 * @retval VERR_DBG_LINE_NOT_FOUND if no suitable line number was found.
476 *
477 * @param pMod Pointer to the module structure.
478 * @param iSeg The segment number (0-based) or RTDBGSEGIDX_ABS.
479 * @param off The offset into the segment.
480 * @param poffDisp Where to store the distance between the specified address
481 * and the returned line number. Optional.
482 * @param pLineInfo Where to store the information about the closest line
483 * number.
484 */
485 DECLCALLBACKMEMBER(int, pfnLineByAddr)(PRTDBGMODINT pMod, uint32_t iSeg, RTUINTPTR off, PRTINTPTR poffDisp, PRTDBGLINE pLineInfo);
486
487
488 /** For catching initialization errors (RTDBGMODVTDBG_MAGIC). */
489 uint32_t u32EndMagic;
490} RTDBGMODVTDBG;
491/** Pointer to a const RTDBGMODVTDBG. */
492typedef RTDBGMODVTDBG const *PCRTDBGMODVTDBG;
493
494
495/**
496 * Deferred loading callback.
497 *
498 * @returns IPRT status code. On success the necessary method tables should be
499 * installed in @a pMod.
500 * @param pMod Pointer to the debug module structure.
501 * @param pDeferred The deferred load data.
502 */
503typedef DECLCALLBACK(int) FNRTDBGMODDEFERRED(PRTDBGMODINT pMod, struct RTDBGMODDEFERRED *pDeferred);
504/** Pointer to a deferred loading callback. */
505typedef FNRTDBGMODDEFERRED *PFNRTDBGMODDEFERRED;
506
507
508/**
509 * Structure pointed to by pvDbgPriv and/or pvImgPriv when
510 * g_rtDbgModVtDbgDeferred and/or g_rtDbgModVtImgDeferred are being used.
511 */
512typedef struct RTDBGMODDEFERRED
513{
514 /** The image size.
515 * Deferred loading is almost pointless without knowing the module size, as
516 * it cannot be mapped (correctly) without it. */
517 RTUINTPTR cbImage;
518 /** Reference counter. */
519 uint32_t volatile cRefs;
520 /** The configuration instance (referenced), can be NIL. */
521 RTDBGCFG hDbgCfg;
522 /** Performs deferred loading of the module. */
523 PFNRTDBGMODDEFERRED pfnDeferred;
524 /** Callback specific data. */
525 union
526 {
527 struct
528 {
529 /** The time/date stamp of the executable image and codeview file. */
530 uint32_t uTimestamp;
531 } PeImage,
532 OldCodeView;
533
534 struct
535 {
536 /** The PDB uuid. */
537 RTUUID Uuid;
538 /** The PDB age. */
539 uint32_t uAge;
540 } NewCodeview;
541
542 struct
543 {
544 /** The CRC-32 value found in the .gnu_debuglink section. */
545 uint32_t uCrc32;
546 } GnuDebugLink;
547 } u;
548} RTDBGMODDEFERRED;
549/** Pointer to the deferred loading data. */
550typedef RTDBGMODDEFERRED *PRTDBGMODDEFERRED;
551
552
553/**
554 * Debug module structure.
555 */
556typedef struct RTDBGMODINT
557{
558 /** Magic value (RTDBGMOD_MAGIC). */
559 uint32_t u32Magic;
560 /** The number of reference there are to this module.
561 * This is used to perform automatic cleanup and sharing. */
562 uint32_t volatile cRefs;
563 /** The module tag. */
564 uint64_t uTag;
565
566 /** When set, the loading of the image and debug info (including locating any
567 * external files), will not have taken place yet. */
568 uint32_t fDeferred : 1;
569 /** Set if deferred loading failed. */
570 uint32_t fDeferredFailed : 1;
571 /** Set if the debug info is based on image exports and segments. */
572 uint32_t fExports : 1;
573 /** Alignment padding. */
574 uint32_t fPadding1 : 29;
575#if ARCH_BITS == 64
576 uint32_t u32Padding2;
577#endif
578
579 /** The module name (short). */
580 char const *pszName;
581 /** The image file specified by the user. Can be NULL. */
582 char const *pszImgFileSpecified;
583 /** The module filename. Can be NULL. */
584 char const *pszImgFile;
585 /** The debug info file (if external). Can be NULL. */
586 char const *pszDbgFile;
587
588 /** The method table for the executable image interpreter. */
589 PCRTDBGMODVTIMG pImgVt;
590 /** Pointer to the private data of the executable image interpreter. */
591 void *pvImgPriv;
592
593 /** The method table for the debug info interpreter. */
594 PCRTDBGMODVTDBG pDbgVt;
595 /** Pointer to the private data of the debug info interpreter. */
596 void *pvDbgPriv;
597
598 /** Critical section serializing access to the module. */
599 RTCRITSECT CritSect;
600} RTDBGMODINT;
601/** Pointer to an debug module structure. */
602typedef RTDBGMODINT *PRTDBGMODINT;
603
604
605extern DECLHIDDEN(RTSTRCACHE) g_hDbgModStrCache;
606extern DECLHIDDEN(RTDBGMODVTDBG const) g_rtDbgModVtDbgDwarf;
607extern DECLHIDDEN(RTDBGMODVTDBG const) g_rtDbgModVtDbgNm;
608#ifdef RT_OS_WINDOWS
609extern DECLHIDDEN(RTDBGMODVTDBG const) g_rtDbgModVtDbgDbgHelp;
610#endif
611extern DECLHIDDEN(RTDBGMODVTDBG const) g_rtDbgModVtDbgDeferred;
612extern DECLHIDDEN(RTDBGMODVTDBG const) g_rtDbgModVtDbgContainer;
613
614extern DECLHIDDEN(RTDBGMODVTIMG const) g_rtDbgModVtImgLdr;
615extern DECLHIDDEN(RTDBGMODVTIMG const) g_rtDbgModVtImgDeferred;
616
617DECLHIDDEN(int) rtDbgModContainerCreate(PRTDBGMODINT pMod, RTUINTPTR cbSeg);
618DECLHIDDEN(int) rtDbgModContainer_SymbolRemoveAll(PRTDBGMODINT pMod);
619DECLHIDDEN(int) rtDbgModContainer_LineRemoveAll(PRTDBGMODINT pMod);
620DECLHIDDEN(int) rtDbgModContainer_RemoveAll(PRTDBGMODINT pMod);
621
622DECLHIDDEN(int) rtDbgModCreateForExports(PRTDBGMODINT pDbgMod);
623DECLHIDDEN(int) rtDbgModDeferredCreate(PRTDBGMODINT pDbgMod, PFNRTDBGMODDEFERRED pfnDeferred, RTUINTPTR cbImage,
624 RTDBGCFG hDbgCfg, PRTDBGMODDEFERRED *ppDeferred);
625
626DECLHIDDEN(int) rtDbgModLdrOpenFromHandle(PRTDBGMODINT pDbgMod, RTLDRMOD hLdrMod);
627
628/** @} */
629
630RT_C_DECLS_END
631
632#endif
633
Note: See TracBrowser for help on using the repository browser.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette