|
7 | 7 | # documentation: according to https://sourceware.org/gdb/current/onlinedocs/gdb/Remote-Protocol.html#Remote-Protocol |
8 | 8 |
|
9 | 9 | import struct, os, socket |
| 10 | +import pkgutil |
10 | 11 | from binascii import unhexlify |
11 | 12 | from typing import Iterator, Literal |
12 | 13 |
|
@@ -481,15 +482,15 @@ def handle_q(subcmd): |
481 | 482 | else: |
482 | 483 | self.send("PacketSize=47ff;QPassSignals+;QProgramSignals+;QStartupWithShell+;QEnvironmentHexEncoded+;QEnvironmentReset+;QEnvironmentUnset+;QSetWorkingDir+;QCatchSyscalls+;qXfer:libraries-svr4:read+;augmented-libraries-svr4-read+;qXfer:auxv:read+;qXfer:siginfo:read+;qXfer:siginfo:write+;qXfer:features:read+;QStartNoAckMode+;qXfer:osdata:read+;multiprocess+;fork-events+;vfork-events+;exec-events+;QNonStop+;QDisableRandomization+;qXfer:threads:read+;ConditionalTracepoints+;TraceStateVariables+;TracepointSource+;DisconnectedTracing+;FastTracepoints+;StaticTracepoints+;InstallInTrace+;qXfer:statictrace:read+;qXfer:traceframe-info:read+;EnableDisableTracepoints+;QTBuffer:size+;tracenz+;ConditionalBreakpoints+;BreakpointCommands+;QAgent+;Qbtrace:bts+;Qbtrace-conf:bts:size+;Qbtrace:pt+;Qbtrace-conf:pt:size+;Qbtrace:off+;qXfer:btrace:read+;qXfer:btrace-conf:read+;swbreak+;hwbreak+;qXfer:exec-file:read+;vContSupported+;QThreadEvents+;no-resumed+") |
483 | 484 | elif subcmd.startswith('Xfer:features:read'): |
484 | | - xfercmd_file = subcmd.split(':')[3] |
485 | | - xfercmd_abspath = os.path.dirname(os.path.abspath(__file__)) |
486 | | - xml_folder = self.ql.arch.type.name.lower() |
487 | | - xfercmd_file = os.path.join(xfercmd_abspath,"xml",xml_folder, xfercmd_file) |
488 | | - |
489 | | - if os.path.exists(xfercmd_file) and self.ql.os.type is not QL_OS.WINDOWS: |
490 | | - with open(xfercmd_file, 'r') as f: |
491 | | - file_contents = f.read() |
| 485 | + if self.ql.os.type is not QL_OS.WINDOWS: |
| 486 | + try: |
| 487 | + xfercmd_file = subcmd.split(':')[3] |
| 488 | + xml_folder = self.ql.arch.type.name.lower() |
| 489 | + file_contents = pkgutil.get_data(__package__, f"xml/{xml_folder}/{xfercmd_file}").decode() |
492 | 490 | self.send("l%s" % file_contents) |
| 491 | + except: |
| 492 | + self.ql.log.info("gdb> Platform is not supported by xml or xml file not found: %s\n" % (xfercmd_file)) |
| 493 | + self.send("l") |
493 | 494 | else: |
494 | 495 | self.ql.log.info("gdb> Platform is not supported by xml or xml file not found: %s\n" % (xfercmd_file)) |
495 | 496 | self.send("l") |
|
0 commit comments