@@ -47,7 +47,7 @@ def dump_all_pdb_info(session):
4747def dump_all_mods (session ):
4848 print ("\n \n *** MODULES\n " )
4949
50- enum_symbols = session .globalScope .findChildren (pydia2 .dia . SymTagCompiland , None , 0 )
50+ enum_symbols = session .globalScope .findChildren (pydia2 .cvconst . SymTag . Compiland , None , 0 )
5151 for i , symbol in enumerate (enum_symbols , 1 ):
5252 symbol = symbol .QueryInterface (pydia2 .dia .IDiaSymbol )
5353 print (f"{ i :04X} { symbol .name } " )
@@ -58,7 +58,7 @@ def dump_all_mods(session):
5858def dump_all_publics (session ):
5959 print ("\n \n *** PUBLICS\n " )
6060
61- enum_symbols = session .globalScope .findChildren (pydia2 .dia . SymTagPublicSymbol , None , 0 )
61+ enum_symbols = session .globalScope .findChildren (pydia2 .cvconst . SymTag . PublicSymbol , None , 0 )
6262 for symbol in enum_symbols :
6363 symbol = symbol .QueryInterface (pydia2 .dia .IDiaSymbol )
6464 print_public_symbol (symbol )
@@ -69,7 +69,7 @@ def dump_all_publics(session):
6969def dump_all_symbols (session ):
7070 print ("\n \n *** SYMBOLS\n " )
7171
72- enum_symbols = session .globalScope .findChildren (pydia2 .dia . SymTagCompiland , None , 0 )
72+ enum_symbols = session .globalScope .findChildren (pydia2 .cvconst . SymTag . Compiland , None , 0 )
7373 for compiland in enum_symbols :
7474 compiland = compiland .QueryInterface (pydia2 .dia .IDiaSymbol )
7575 print ("\n ** Module: " , end = '' )
@@ -79,7 +79,7 @@ def dump_all_symbols(session):
7979 except comtypes .COMError :
8080 print ("(???)\n " )
8181
82- enum_children = compiland .findChildren (pydia2 .dia . SymTagNull , None , 0 )
82+ enum_children = compiland .findChildren (pydia2 .cvconst . SymTag . Null , None , 0 )
8383 for symbol in enum_children :
8484 symbol = symbol .QueryInterface (pydia2 .dia .IDiaSymbol )
8585 print_symbol (symbol , 0 )
@@ -153,9 +153,9 @@ def print_public_symbol(symbol):
153153 except comtypes .COMError :
154154 rva = 0xFFFFFFFF
155155
156- print (f"{ pydia2 .SymTag (symbol .symTag ).name } : [{ rva :08X} ][{ symbol .addressSection :04X} :{ symbol .addressOffset :08X} ] " , end = '' )
156+ print (f"{ pydia2 .cvconst . SymTag (symbol .symTag ).name } : [{ rva :08X} ][{ symbol .addressSection :04X} :{ symbol .addressOffset :08X} ] " , end = '' )
157157
158- if symbol .symTag == pydia2 .dia . SymTagThunk :
158+ if symbol .symTag == pydia2 .cvconst . SymTag . Thunk :
159159 try :
160160 print ("f{symbol.name}" )
161161 except comtypes .COMError :
@@ -194,31 +194,31 @@ def print_symbol(symbol, indent):
194194 except comtypes .COMError :
195195 print ("ERROR - PrintSymbol get_symTag() failed" )
196196
197- if sym_tag == pydia2 .dia . SymTagFunction :
197+ if sym_tag == pydia2 .cvconst . SymTag . Function :
198198 print ()
199199
200200 print_sym_tag (sym_tag )
201201
202202 print (' ' * indent , end = '' )
203203
204- if sym_tag == pydia2 .dia . SymTagCompilandDetails :
204+ if sym_tag == pydia2 .cvconst . SymTag . CompilandDetails :
205205 print_compiland_details (symbol )
206206
207- elif sym_tag == pydia2 .dia . SymTagCompilandEnv :
207+ elif sym_tag == pydia2 .cvconst . SymTag . CompilandEnv :
208208 print_compiland_env (symbol )
209209
210- elif sym_tag == pydia2 .dia . SymTagData :
210+ elif sym_tag == pydia2 .cvconst . SymTag . Data :
211211 print_data (symbol )
212212
213- elif sym_tag in (pydia2 .dia . SymTagFunction , pydia2 .dia . SymTagBlock ):
213+ elif sym_tag in (pydia2 .cvconst . SymTag . Function , pydia2 .cvconst . SymTag . Block ):
214214 print_location (symbol )
215215
216216 try :
217217 print (f", len = { symbol .length :08X} " , end = '' )
218218 except comtypes .COMError :
219219 pass
220220
221- if sym_tag == pydia2 .dia . SymTagFunction :
221+ if sym_tag == pydia2 .cvconst . SymTag . Function :
222222 try :
223223 # TODO enum
224224 print (f", { symbol .callingConvention } " , end = '' )
@@ -228,7 +228,7 @@ def print_symbol(symbol, indent):
228228 print_und_name (symbol )
229229 print ()
230230
231- if sym_tag == pydia2 .dia . SymTagFunction :
231+ if sym_tag == pydia2 .cvconst . SymTag . Function :
232232 print (' ' * indent , end = '' )
233233 print (" Function attribute:" , end = '' )
234234
@@ -341,44 +341,44 @@ def print_symbol(symbol, indent):
341341
342342 print ()
343343
344- enum_children = symbol .findChildren (pydia2 .dia . SymTagNull , None , 0 )
344+ enum_children = symbol .findChildren (pydia2 .cvconst . SymTag . Null , None , 0 )
345345 for child in enum_children :
346346 child = child .QueryInterface (pydia2 .dia .IDiaSymbol )
347347 print_symbol (child , indent + 2 )
348348
349- elif sym_tag == pydia2 .dia . SymTagAnnotation :
349+ elif sym_tag == pydia2 .cvconst . SymTag . Annotation :
350350 print_location (symbol )
351351 print ()
352352
353- elif sym_tag == pydia2 .dia . SymTagLabel :
353+ elif sym_tag == pydia2 .cvconst . SymTag . Label :
354354 print_location (symbol )
355355 print (", " , end = '' )
356356 print_name (symbol )
357357
358- elif sym_tag in (pydia2 .dia . SymTagEnum , pydia2 .dia . SymTagTypedef , pydia2 .dia . SymTagUDT , pydia2 .dia . SymTagBaseClass ):
358+ elif sym_tag in (pydia2 .cvconst . SymTag . Enum , pydia2 .cvconst . SymTag . Typedef , pydia2 .cvconst . SymTag . UDT , pydia2 .cvconst . SymTag . BaseClass ):
359359 print_udt (symbol )
360360
361- elif sym_tag in (pydia2 .dia . SymTagFuncDebugStart , pydia2 .dia . SymTagFuncDebugEnd ):
361+ elif sym_tag in (pydia2 .cvconst . SymTag . FuncDebugStart , pydia2 .cvconst . SymTag . FuncDebugEnd ):
362362 print_location (symbol )
363363
364- elif sym_tag in (pydia2 .dia . SymTagFunctionArgType , pydia2 .dia . SymTagFunctionType , pydia2 .dia . SymTagPointerType , pydia2 .dia . SymTagArrayType , pydia2 .dia . SymTagBaseType ):
364+ elif sym_tag in (pydia2 .cvconst . SymTag . FunctionArgType , pydia2 .cvconst . SymTag . FunctionType , pydia2 .cvconst . SymTag . PointerType , pydia2 .cvconst . SymTag . ArrayType , pydia2 .cvconst . SymTag . BaseType ):
365365 try :
366366 print_type (symbol .type )
367367 except comtypes .COMError :
368368 pass
369369
370370 print ()
371371
372- elif sym_tag == pydia2 .dia . SymTagThunk :
372+ elif sym_tag == pydia2 .cvconst . SymTag . Thunk :
373373 print_thunk (symbol )
374374
375- elif sym_tag == pydia2 .dia . SymTagCallSite :
375+ elif sym_tag == pydia2 .cvconst . SymTag . CallSite :
376376 print_call_site_info (symbol )
377377
378- elif sym_tag == pydia2 .dia . SymTagHeapAllocationSite :
378+ elif sym_tag == pydia2 .cvconst . SymTag . HeapAllocationSite :
379379 print_heap_alloc_site (symbol )
380380
381- elif sym_tag == pydia2 .dia . SymTagCoffGroup :
381+ elif sym_tag == pydia2 .cvconst . SymTag . CoffGroup :
382382 print_coff_group (symbol )
383383
384384 else :
@@ -391,10 +391,10 @@ def print_symbol(symbol, indent):
391391 except comtypes .COMError :
392392 pass
393393
394- if sym_tag in (pydia2 .dia . SymTagUDT , pydia2 .dia . SymTagAnnotation ):
394+ if sym_tag in (pydia2 .cvconst . SymTag . UDT , pydia2 .cvconst . SymTag . Annotation ):
395395 print ()
396396
397- enum_children = symbol .findChildren (pydia2 .dia . SymTagNull , None , 0 )
397+ enum_children = symbol .findChildren (pydia2 .cvconst . SymTag . Null , None , 0 )
398398 for child in enum_children :
399399 child = child .QueryInterface (pydia2 .dia .IDiaSymbol )
400400 print_symbol (child , indent + 2 )
@@ -403,7 +403,7 @@ def print_symbol(symbol, indent):
403403
404404
405405def print_sym_tag (sym_tag ):
406- print (f"{ pydia2 .SymTag (sym_tag ).name :15s} : " , end = '' )
406+ print (f"{ pydia2 .cvconst . SymTag (sym_tag ).name :15s} : " , end = '' )
407407
408408
409409def print_name (symbol ):
@@ -427,7 +427,18 @@ def print_compiland_env(symbol):
427427
428428
429429def print_location (symbol ):
430- pass # TODO
430+ try :
431+ location_type = symbol .locationType
432+ except comtypes .COMError :
433+ print ("symbol in optimized code" , end = '' )
434+ return
435+
436+ if location_type == pydia2 .cvconst .LocationType .Static :
437+ try :
438+ print (f"{ pydia2 .cvconst .LocationType (location_type ).name } , [{ symbol .relativeVirtualAddress :08X} ][{ symbol .addressSection :04X} :{ symbol .addressOffset :08X} ]" , end = '' )
439+ except comtypes .COMError :
440+ pass
441+ # TODO
431442
432443
433444def print_const (symbol ):
@@ -529,7 +540,6 @@ def main():
529540 parser .add_argument ("--mapfromsrc" , metavar = "RVA" , help = "dump image RVA for src RVA" )
530541
531542 args = parser .parse_args ()
532- print (args )
533543
534544 source , session = load_data_from_pdb (args .file )
535545
0 commit comments