Package vtrace :: Package archs :: Module amd64
[hide private]
[frames] | no frames]

Source Code for Module vtrace.archs.amd64

 1  """ 
 2  Amd64 Support Module 
 3  """ 
 4  # Copyright (C) 2007 Invisigoth - See LICENSE file for details 
 5  import struct 
 6   
 7  import envi.archs.amd64 as e_amd64 
 8  import vtrace.archs.i386 as vt_i386 
 9   
10 -class Amd64Mixin( 11 e_amd64.Amd64Module, 12 e_amd64.Amd64RegisterContext, 13 vt_i386.i386WatchMixin):
14 """ 15 Do what we need to for the lucious amd64 16 """
17 - def __init__(self):
18 e_amd64.Amd64Module.__init__(self) 19 e_amd64.Amd64RegisterContext.__init__(self) 20 vt_i386.i386WatchMixin.__init__(self) 21 22 self.setMeta('Architecture','amd64')
23
24 - def archGetStackTrace(self):
25 self.requireAttached() 26 current = 0 27 sanity = 1000 28 frames = [] 29 rbp = self.getRegisterByName("rbp") 30 rip = self.getRegisterByName("rip") 31 frames.append((rip,rbp)) 32 33 while rbp != 0 and current < sanity: 34 try: 35 rbp,rip = self.readMemoryFormat(rbp, "<QQ") 36 except: 37 break 38 frames.append((rip,rbp)) 39 current += 1 40 41 return frames
42