MCPcopy Index your code
hub / github.com/ELMERIKH/PyinMemoryPE / parse_debug_directory

Method parse_debug_directory

pythonmemorymodule/pefile.py:3981–4129  ·  view source on GitHub ↗
(self, rva, size)

Source from the content-addressed store, hash-verified

3979 return entries
3980
3981 def parse_debug_directory(self, rva, size):
3982 """"""
3983
3984 dbg_size = Structure(self.__IMAGE_DEBUG_DIRECTORY_format__).sizeof()
3985
3986 debug = []
3987 for idx in range(int(size / dbg_size)):
3988 try:
3989 data = self.get_data(rva + dbg_size * idx, dbg_size)
3990 except PEFormatError:
3991 self.__warnings.append(
3992 "Invalid debug information. Can't read " "data at RVA: 0x%x" % rva
3993 )
3994 return None
3995
3996 dbg = self.__unpack_data__(
3997 self.__IMAGE_DEBUG_DIRECTORY_format__,
3998 data,
3999 file_offset=self.get_offset_from_rva(rva + dbg_size * idx),
4000 )
4001
4002 if not dbg:
4003 return None
4004
4005 # apply structure according to DEBUG_TYPE
4006 # http://www.debuginfo.com/articles/debuginfomatch.html
4007 #
4008 dbg_type = None
4009
4010 if dbg.Type == 1:
4011 # IMAGE_DEBUG_TYPE_COFF
4012 pass
4013
4014 elif dbg.Type == 2:
4015 # if IMAGE_DEBUG_TYPE_CODEVIEW
4016 dbg_type_offset = dbg.PointerToRawData
4017 dbg_type_size = dbg.SizeOfData
4018 dbg_type_data = self.__data__[
4019 dbg_type_offset : dbg_type_offset + dbg_type_size
4020 ]
4021
4022 if dbg_type_data[:4] == b"RSDS":
4023 # pdb7.0
4024 __CV_INFO_PDB70_format__ = [
4025 "CV_INFO_PDB70",
4026 [
4027 "I,CvSignature",
4028 "I,Signature_Data1", # Signature is of GUID type
4029 "H,Signature_Data2",
4030 "H,Signature_Data3",
4031 "8s,Signature_Data4",
4032 # 'H,Signature_Data5',
4033 # 'I,Signature_Data6',
4034 "I,Age",
4035 ],
4036 ]
4037 pdbFileName_size = (
4038 dbg_type_size - Structure(__CV_INFO_PDB70_format__).sizeof()

Callers

nothing calls this directly

Calls 6

get_dataMethod · 0.95
__unpack_data__Method · 0.95
get_offset_from_rvaMethod · 0.95
StructureClass · 0.85
DebugDataClass · 0.85
sizeofMethod · 0.45

Tested by

no test coverage detected