forked from OSchip/llvm-project
				
			
		
			
				
	
	
		
			49 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Python
		
	
	
	
			
		
		
	
	
			49 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Python
		
	
	
	
""" Adds the 'toggle-disassembly' command to switch you into a disassembly only mode """
 | 
						|
import lldb
 | 
						|
 | 
						|
class DisassemblyMode:
 | 
						|
    def __init__(self, debugger, unused):
 | 
						|
        self.dbg = debugger
 | 
						|
        self.interp = debugger.GetCommandInterpreter()
 | 
						|
        self.store_state()
 | 
						|
        self.mode_off = True
 | 
						|
        
 | 
						|
    def store_state(self):
 | 
						|
        self.dis_count = self.get_string_value("stop-disassembly-count")
 | 
						|
        self.dis_display = self.get_string_value("stop-disassembly-display")
 | 
						|
        self.before_count = self.get_string_value("stop-line-count-before")
 | 
						|
        self.after_count = self.get_string_value("stop-line-count-after")
 | 
						|
        
 | 
						|
    def get_string_value(self, setting):
 | 
						|
        result = lldb.SBCommandReturnObject()
 | 
						|
        self.interp.HandleCommand("settings show " + setting, result)
 | 
						|
        value = result.GetOutput().split(" = ")[1].rstrip("\n")
 | 
						|
        return value
 | 
						|
    
 | 
						|
    def set_value(self, setting, value):
 | 
						|
        result = lldb.SBCommandReturnObject()
 | 
						|
        self.interp.HandleCommand("settings set " + setting + " " + value, result)
 | 
						|
        
 | 
						|
    def __call__(self, debugger, command, exe_ctx, result):
 | 
						|
        if self.mode_off:
 | 
						|
            self.mode_off = False
 | 
						|
            self.store_state()
 | 
						|
            self.set_value("stop-disassembly-display","always")
 | 
						|
            self.set_value("stop-disassembly-count", "8")
 | 
						|
            self.set_value("stop-line-count-before", "0")
 | 
						|
            self.set_value("stop-line-count-after", "0")
 | 
						|
            result.AppendMessage("Disassembly mode on.")
 | 
						|
        else:
 | 
						|
            self.mode_off = True
 | 
						|
            self.set_value("stop-disassembly-display",self.dis_display)
 | 
						|
            self.set_value("stop-disassembly-count", self.dis_count)
 | 
						|
            self.set_value("stop-line-count-before", self.before_count)
 | 
						|
            self.set_value("stop-line-count-after", self.after_count)
 | 
						|
            result.AppendMessage("Disassembly mode off.")
 | 
						|
 | 
						|
    def get_short_help(self):
 | 
						|
        return "Toggles between a disassembly only mode and normal source mode\n"
 | 
						|
 | 
						|
def __lldb_init_module(debugger, unused):
 | 
						|
    debugger.HandleCommand("command script add -c disassembly_mode.DisassemblyMode toggle-disassembly")
 |