예제 #1
0
 def parse(self, blocks):
   hd = HunkDebug()
   self.blocks = blocks
   for blk in blocks:
     blk_id = blk.blk_id
     if blk_id in loadseg_valid_begin_hunks:
       self.seg_blk = blk
     elif blk_id == HUNK_SYMBOL:
       if self.symbol_blk is None:
         self.symbol_blk = blk
       else:
         raise HunkParserError("duplicate symbols in hunk")
     elif blk_id == HUNK_DEBUG:
       if self.debug_blks is None:
         self.debug_blks = []
       self.debug_blks.append(blk)
       # decode hunk debug info
       debug_info = hd.decode(blk.debug_data)
       if debug_info is not None:
         if self.debug_infos is None:
           self.debug_infos = []
         self.debug_infos.append(debug_info)
     elif blk_id in (HUNK_ABSRELOC32, HUNK_RELOC32SHORT):
       if self.reloc_blk is None:
         self.reloc_blk = blk
       else:
         raise HunkParseError("duplicate relocs in hunk")
     else:
       raise HunkParseError("invalid hunk block")
예제 #2
0
 def parse(self, blocks):
     hd = HunkDebug()
     self.blocks = blocks
     for blk in blocks:
         blk_id = blk.blk_id
         if blk_id in loadseg_valid_begin_hunks:
             self.seg_blk = blk
         elif blk_id == HUNK_SYMBOL:
             if self.symbol_blk is None:
                 self.symbol_blk = blk
             else:
                 raise HunkParserError("duplicate symbols in hunk")
         elif blk_id == HUNK_DEBUG:
             if self.debug_blks is None:
                 self.debug_blks = []
             self.debug_blks.append(blk)
             # decode hunk debug info
             debug_info = hd.decode(blk.debug_data)
             if debug_info is not None:
                 if self.debug_infos is None:
                     self.debug_infos = []
                 self.debug_infos.append(debug_info)
         elif blk_id in (HUNK_ABSRELOC32, HUNK_RELOC32SHORT):
             if self.reloc_blk is None:
                 self.reloc_blk = blk
             else:
                 raise HunkParseError("duplicate relocs in hunk")
         else:
             raise HunkParseError("invalid hunk block")
예제 #3
0
 def setup_debug(self, debug_info):
     if self.debug_infos is None:
         self.debug_infos = []
     self.debug_infos.append(debug_info)
     hd = HunkDebug()
     debug_data = hd.encode(debug_info)
     blk = HunkDebugBlock(debug_data)
     if self.debug_blks is None:
         self.debug_blks = []
     self.debug_blks.append(blk)
예제 #4
0
 def setup_debug(self, debug_info):
   if self.debug_infos is None:
     self.debug_infos = []
   self.debug_infos.append(debug_info)
   hd = HunkDebug()
   debug_data = hd.encode(debug_info)
   blk = HunkDebugBlock(debug_data)
   if self.debug_blks is None:
     self.debug_blks = []
   self.debug_blks.append(blk)