@@ -378,7 +378,7 @@ def handle_q(subcmd: str) -> Reply:
378378
379379 if query == 'Supported' :
380380 # list of supported features excluding the multithreading-related ones
381- common = (
381+ features = [
382382 'BreakpointCommands+' ,
383383 'ConditionalBreakpoints+' ,
384384 'ConditionalTracepoints+' ,
@@ -408,23 +408,21 @@ def handle_q(subcmd: str) -> Reply:
408408 'multiprocess+' ,
409409 'no-resumed+' ,
410410 'qXfer:auxv:read+' ,
411- 'qXfer:exec-file:read+' ,
412411 'qXfer:features:read+' ,
413412 # 'qXfer:libraries-svr4:read+',
414413 # 'qXfer:osdata:read+',
415414 'qXfer:siginfo:read+' ,
416415 'qXfer:siginfo:write+' ,
417416 'qXfer:statictrace:read+' ,
418- 'qXfer:threads:read+' ,
419417 'qXfer:traceframe-info:read+' ,
420418 'swbreak+' ,
421419 'tracenz+' ,
422420 'vfork-events+'
423- )
421+ ]
424422
425423 # might or might not need for multi thread
426424 if self .ql .multithread :
427- features = (
425+ features += [
428426 'PacketSize=47ff' ,
429427 'FastTracepoints+' ,
430428 'QThreadEvents+' ,
@@ -436,16 +434,26 @@ def handle_q(subcmd: str) -> Reply:
436434 'qXfer:btrace-conf:read+' ,
437435 'qXfer:btrace:read+' ,
438436 'vContSupported+'
439- )
437+ ]
440438
441439 else :
442- features = (
440+ features += [
443441 'PacketSize=3fff' ,
444442 'qXfer:spu:read+' ,
445443 'qXfer:spu:write+'
446- )
444+ ]
445+
446+ # os dependent features
447+ if not self .ql .interpreter :
448+ # filesystem dependent features
449+ if hasattr (self .ql .os , 'path' ):
450+ features .append ('qXfer:exec-file:read+' )
451+
452+ # process dependent features
453+ if hasattr (self .ql .os , 'pid' ):
454+ features .append ('qXfer:threads:read+' )
447455
448- return ';' .join (common + features )
456+ return ';' .join (features )
449457
450458 elif query == 'Xfer' :
451459 feature , op , annex , params = data
@@ -462,15 +470,11 @@ def handle_q(subcmd: str) -> Reply:
462470 return f'{ "l" if len (content ) < length else "m" } { content } '
463471
464472 elif feature == 'threads' and op == 'read' :
465- if not self .ql .baremetal and hasattr (self .ql .os , 'pid' ):
466- content = '\r \n ' .join ((
467- '<threads>' ,
468- f'<thread id="{ self .ql .os .pid } " core="1" name="{ self .ql .targetname } "/>' ,
469- '</threads>'
470- ))
471-
472- else :
473- content = ''
473+ content = '\r \n ' .join ((
474+ '<threads>' ,
475+ f'<thread id="{ self .ql .os .pid } " core="1" name="{ self .ql .targetname } "/>' ,
476+ '</threads>'
477+ ))
474478
475479 return f'l{ content } '
476480
0 commit comments