break if inited == 0: detach_enclaves() gdb.execute("source gdb_sgx_cmd", False, True) UpdateOcallFrame() LoadEventBreakpoint() UnloadEventBreakpoint() GetTCSBreakpoint() gdb.events.exited.connect(exit_handler) init_enclaves_debug() def exit_handler(event): # When the inferior exited, remove all enclave symbol for key in list(ENCLAVES_ADDR.keys()): gdb.execute("remove-symbol-file -a %s" % (ENCLAVES_ADDR[key]), False, True) ENCLAVES_ADDR.clear() def newobj_handler(event): solib_name = os.path.basename(event.new_objfile.filename) if solib_name == 'libsgx_urts.so' or solib_name == 'libsgx_urts_sim.so' or solib_name == 'libsgx_aesm_service.so': sgx_debugger_init() return if __name__ == "__main__": gdb.events.new_objfile.connect(newobj_handler) sgx_emmt.init_emmt()
for bp in bps: if bp.location == "sgx_debug_load_state_add_element": inited = 1 break if inited == 0: detach_enclaves() gdb.execute("source gdb_sgx_cmd", False, True) UpdateOcallFrame() LoadEventBreakpoint() UnloadEventBreakpoint() GetTCSBreakpoint() gdb.events.exited.connect(exit_handler) init_enclaves_debug() def exit_handler(event): # When the inferior exited, remove all enclave symbol for key in list(ENCLAVES_ADDR.keys()): gdb.execute("remove-symbol-file -a %s" % (ENCLAVES_ADDR[key]), False, True) ENCLAVES_ADDR.clear() def newobj_handler(event): solib_name = os.path.basename(event.new_objfile.filename) if solib_name == 'libsgx_urts.so' or solib_name == 'libsgx_urts_sim.so' or solib_name == 'libsgx_aesm_service.so': sgx_debugger_init() return if __name__ == "__main__": gdb.events.new_objfile.connect(newobj_handler) sgx_emmt.init_emmt()