[gdb/testsuite] Fix gdb.ada/mi_task_arg.exp
authorTom de Vries <tdevries@suse.de>
Tue, 15 Oct 2019 00:21:37 +0000 (02:21 +0200)
committerTom de Vries <tdevries@suse.de>
Tue, 15 Oct 2019 00:21:37 +0000 (02:21 +0200)
On openSUSE Leap 15.1, we have:
...
FAIL: gdb.ada/mi_task_arg.exp: -stack-list-arguments 1 (unexpected output)
...

The problem is that the stack-list-arguments command prints a frame argument
'self_id' for function system.tasking.stages.task_wrapper:
...
frame={level="2",args=[{name="self_id",value="0x12345678"}]
...
where none (args=[]) is expected.

The frame argument is in fact correct.  The FAIL does not show for say, fedora
30, because there the executable uses the system.tasking.stages.task_wrapper
from /lib64/libgnarl-9.so.  Adding "additional_flags=-bargs
additional_flags=-shared additional_flags=-largs" to the flags argument of
gdb_compile_ada gives us the same PASS, but installing libada7-debuginfo gets
us the same FAIL again.

Fix the FAIL by allowing the 'self_id' argument.

Tested on x86_64-linux.

Change-Id: I5aee5856fa6aeb0cc78aa4fe69deecba5b00b77a

gdb/testsuite/gdb.ada/mi_task_arg.exp

index 6c4156f5d335d89ccaac3e70a47f101791aae340..29fcb4488c679ed2eae1f4926b4f97a825189638 100644 (file)
@@ -44,7 +44,13 @@ if ![mi_runto "task_switch.break_me"] then {
 # Verify that "-stack-list-arguments" does not cause the debugger to
 # crash when printing the arguments of frame 1 (due to the internally-
 # generated argument "_task").
+# Frame for task_switch.break_me
+set frame0 "frame=\{level=\"0\",args=\\\[\\\]\}"
+# Frame for task_switch.caller
+set frame1 "frame=\{level=\"1\",args=\\\[\{name=\"<_task>\",value=\"$hex\"\}\\\]\}"
+# Frame for system.tasking.stages.task_wrapper
+set frame2 "frame=\{level=\"2\",args=\\\[(\{name=\"self_id\",value=\"$hex\"\})?\\\]\}"
 mi_gdb_test "-stack-list-arguments 1" \
-            "\\^done,stack-args=\\\[frame=\{level=\"0\",args=\\\[\\\]\},frame=\{level=\"1\",args=\\\[\{name=\"<_task>\",value=\"$hex\"\}\\\]\},frame=\{level=\"2\",args=\\\[\\\]\}.*" \
+            "\\^done,stack-args=\\\[$frame0,$frame1,$frame2,.*" \
             "-stack-list-arguments 1"