From: Felix Willgerodt Date: Tue, 27 Jun 2023 09:18:21 +0000 (+0200) Subject: btrace: Add support for IRET events. X-Git-Tag: gdb-16-branchpoint~823 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=dc08e970bb59880a0a2d712e13cb57344af82635;p=thirdparty%2Fbinutils-gdb.git btrace: Add support for IRET events. This is similar to the previous events that we added. Approved-By: Markus Metzger --- diff --git a/gdb/btrace.c b/gdb/btrace.c index e72bea4a412..317516c8ce1 100644 --- a/gdb/btrace.c +++ b/gdb/btrace.c @@ -1428,6 +1428,20 @@ handle_pt_insn_events (struct btrace_thread_info *btinfo, handle_pt_aux_insn (btinfo, aux_string, pc); break; } + + case ptev_iret: + { + std::string aux_string = std::string (_("iret")); + + if (event.ip_suppressed == 0) + { + pc = event.variant.iret.ip; + aux_string += std::string (": ip = ") + hex_string (*pc); + } + + handle_pt_aux_insn (btinfo, aux_string, pc); + break; + } #endif /* defined (LIBIPT_VERSION >= 0x201) */ } } diff --git a/gdb/testsuite/gdb.btrace/event-tracing-gap.exp b/gdb/testsuite/gdb.btrace/event-tracing-gap.exp index 13bf45da6e4..d33e8e803ce 100644 --- a/gdb/testsuite/gdb.btrace/event-tracing-gap.exp +++ b/gdb/testsuite/gdb.btrace/event-tracing-gap.exp @@ -61,12 +61,15 @@ gdb_continue_to_breakpoint "break at bp_2" ".*$srcfile:$bp_2.*" # gdb_test_sequence and check only for events that we can control. gdb_test_sequence "record function-call-history" "function-call-history" { "\[0-9\]+\tmain" + "\\\[iret(: ip = $hex)?\\\]" "\[0-9\]+\t\\\[non-contiguous\\\]" "\[0-9\]+\tsquare" "\\\[interrupt: vector = 0x3 \\\(#bp\\\)(, ip = 0x\[0-9a-fA-F\]+)?\\\]" + "\\\[iret(: ip = $hex)?\\\]" "\[0-9\]+\t\\\[non-contiguous\\\]" "\[0-9\]+\tmain" "\[0-9\]+\tsquare" "\\\[interrupt: vector = 0x3 \\\(#bp\\\)(, ip = 0x\[0-9a-fA-F\]+)?\\\]" + "\\\[iret(: ip = $hex)?\\\]" "\[0-9\]+\tmain" } diff --git a/gdb/testsuite/gdb.btrace/event-tracing.exp b/gdb/testsuite/gdb.btrace/event-tracing.exp index 4e6e785a544..1a5eee005ea 100644 --- a/gdb/testsuite/gdb.btrace/event-tracing.exp +++ b/gdb/testsuite/gdb.btrace/event-tracing.exp @@ -34,10 +34,11 @@ gdb_test_no_output "record btrace pt" gdb_test "continue" "Program received signal SIGSEGV, Segmentation fault.*" -# Test printing of at least one INTERRUPT event. +# Test printing of at least one INTERRUPT and one IRET event. # This uses test_sequence to avoid random events failing the tests. gdb_test_sequence "record function-call-history" "function-call-history" { "\[0-9\]+\tmain" + "\t \\\[iret(: ip = $hex)?\\\]" "\t \\\[interrupt: vector = 0xe \\\(#pf\\\)(, cr2 = 0x0)?(, ip = 0x\[0-9a-fA-F\]+)?\\\]" }