tests/tcg: Add multiarch test for Xfer:siginfo:read stub
Add multiarch test for testing if Xfer:siginfo:read query is properly handled by gdbstub. Signed-off-by: Gustavo Romero <gustavo.romero@linaro.org> Reviewed-by: Richard Henderson <richard.henderson@linaro.org> Message-Id: <20240309030901.1726211-6-gustavo.romero@linaro.org> Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
This commit is contained in:
parent
9ae5801d35
commit
bbc0543b1b
@ -71,6 +71,13 @@ run-gdbstub-qxfer-auxv-read: sha1
|
|||||||
--bin $< --test $(MULTIARCH_SRC)/gdbstub/test-qxfer-auxv-read.py, \
|
--bin $< --test $(MULTIARCH_SRC)/gdbstub/test-qxfer-auxv-read.py, \
|
||||||
basic gdbstub qXfer:auxv:read support)
|
basic gdbstub qXfer:auxv:read support)
|
||||||
|
|
||||||
|
run-gdbstub-qxfer-siginfo-read: segfault
|
||||||
|
$(call run-test, $@, $(GDB_SCRIPT) \
|
||||||
|
--gdb $(GDB) \
|
||||||
|
--qemu $(QEMU) --qargs "$(QEMU_OPTS)" \
|
||||||
|
--bin "$< -s" --test $(MULTIARCH_SRC)/gdbstub/test-qxfer-siginfo-read.py, \
|
||||||
|
basic gdbstub qXfer:siginfo:read support)
|
||||||
|
|
||||||
run-gdbstub-proc-mappings: sha1
|
run-gdbstub-proc-mappings: sha1
|
||||||
$(call run-test, $@, $(GDB_SCRIPT) \
|
$(call run-test, $@, $(GDB_SCRIPT) \
|
||||||
--gdb $(GDB) \
|
--gdb $(GDB) \
|
||||||
@ -128,7 +135,8 @@ EXTRA_RUNS += run-gdbstub-sha1 run-gdbstub-qxfer-auxv-read \
|
|||||||
run-gdbstub-proc-mappings run-gdbstub-thread-breakpoint \
|
run-gdbstub-proc-mappings run-gdbstub-thread-breakpoint \
|
||||||
run-gdbstub-registers run-gdbstub-prot-none \
|
run-gdbstub-registers run-gdbstub-prot-none \
|
||||||
run-gdbstub-catch-syscalls run-gdbstub-follow-fork-mode-child \
|
run-gdbstub-catch-syscalls run-gdbstub-follow-fork-mode-child \
|
||||||
run-gdbstub-follow-fork-mode-parent
|
run-gdbstub-follow-fork-mode-parent \
|
||||||
|
run-gdbstub-qxfer-siginfo-read
|
||||||
|
|
||||||
# ARM Compatible Semi Hosting Tests
|
# ARM Compatible Semi Hosting Tests
|
||||||
#
|
#
|
||||||
|
26
tests/tcg/multiarch/gdbstub/test-qxfer-siginfo-read.py
Normal file
26
tests/tcg/multiarch/gdbstub/test-qxfer-siginfo-read.py
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
from __future__ import print_function
|
||||||
|
#
|
||||||
|
# Test gdbstub Xfer:siginfo:read stub.
|
||||||
|
#
|
||||||
|
# The test runs a binary that causes a SIGSEGV and then looks for additional
|
||||||
|
# info about the signal through printing GDB's '$_siginfo' special variable,
|
||||||
|
# which sends a Xfer:siginfo:read query to the gdbstub.
|
||||||
|
#
|
||||||
|
# The binary causes a SIGSEGV at dereferencing a pointer with value 0xdeadbeef,
|
||||||
|
# so the test looks for and checks if this address is correctly reported by the
|
||||||
|
# gdbstub.
|
||||||
|
#
|
||||||
|
# This is launched via tests/guest-debug/run-test.py
|
||||||
|
#
|
||||||
|
|
||||||
|
import gdb
|
||||||
|
from test_gdbstub import main, report
|
||||||
|
|
||||||
|
def run_test():
|
||||||
|
"Run through the test"
|
||||||
|
|
||||||
|
gdb.execute("continue", False, True)
|
||||||
|
resp = gdb.execute("print/x $_siginfo", False, True)
|
||||||
|
report(resp.find("si_addr = 0xdeadbeef"), "Found fault address.")
|
||||||
|
|
||||||
|
main(run_test)
|
14
tests/tcg/multiarch/segfault.c
Normal file
14
tests/tcg/multiarch/segfault.c
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
#include <stdio.h>
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
|
/* Cause a segfault for testing purposes. */
|
||||||
|
|
||||||
|
int main(int argc, char *argv[])
|
||||||
|
{
|
||||||
|
int *ptr = (void *)0xdeadbeef;
|
||||||
|
|
||||||
|
if (argc == 2 && strcmp(argv[1], "-s") == 0) {
|
||||||
|
/* Cause segfault. */
|
||||||
|
printf("%d\n", *ptr);
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user