mi_task_arg.exp 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. # Copyright 2011-2022 Free Software Foundation, Inc.
  2. #
  3. # This program is free software; you can redistribute it and/or modify
  4. # it under the terms of the GNU General Public License as published by
  5. # the Free Software Foundation; either version 3 of the License, or
  6. # (at your option) any later version.
  7. #
  8. # This program is distributed in the hope that it will be useful,
  9. # but WITHOUT ANY WARRANTY; without even the implied warranty of
  10. # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  11. # GNU General Public License for more details.
  12. #
  13. # You should have received a copy of the GNU General Public License
  14. # along with this program. If not, see <http://www.gnu.org/licenses/>.
  15. load_lib "ada.exp"
  16. if { [skip_ada_tests] } { return -1 }
  17. standard_ada_testfile task_switch
  18. if {[gdb_compile_ada "${srcfile}" "${binfile}" executable [list debug additional_flags=-gnata ]] != "" } {
  19. return -1
  20. }
  21. load_lib mi-support.exp
  22. set MIFLAGS "-i=mi"
  23. gdb_exit
  24. if [mi_gdb_start] {
  25. continue
  26. }
  27. mi_delete_breakpoints
  28. mi_gdb_reinitialize_dir $srcdir/$subdir
  29. mi_gdb_load ${binfile}
  30. # This test won't work properly if system debuginfo is installed.
  31. mi_gdb_test "-gdb-set debug-file-directory \"\"" ".*"
  32. if ![mi_runto "task_switch.break_me"] then {
  33. return 0
  34. }
  35. # Verify that "-stack-list-arguments" does not cause the debugger to
  36. # crash when printing the arguments of frame 1 (due to the internally-
  37. # generated argument "_task").
  38. # Frame for task_switch.break_me
  39. set frame0 "frame=\{level=\"0\",args=\\\[\\\]\}"
  40. # Frame for task_switch.caller
  41. set frame1_args "\{name=\"<_task>\",value=\"$hex\"\}"
  42. set frame1 "frame=\{level=\"1\",args=\\\[$frame1_args\\\]\}"
  43. # Frame for system.tasking.stages.task_wrapper
  44. set frame2_args "(\{name=\"self_id\",value=\"($hex|<optimized out>)\"\})?"
  45. set frame2 "frame=\{level=\"2\",args=\\\[$frame2_args\\\]\}"
  46. mi_gdb_test "-stack-list-arguments 1" \
  47. "\\^done,stack-args=\\\[$frame0,$frame1,$frame2,.*" \
  48. "-stack-list-arguments 1"