rungdb-user 941 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. #!/usr/bin/env bash
  2. set -eu
  3. . common
  4. set -- ${cli_rungdb_user:-} "$@"
  5. usage="$0 <exec-relative-path> [<brk-symbol>]"
  6. gem5_opt=
  7. while getopts a:gh OPT; do
  8. case "$OPT" in
  9. a)
  10. arch="$OPTARG"
  11. ;;
  12. g)
  13. gem5=true
  14. gem5_opt=-g
  15. ;;
  16. h)
  17. echo "$usage"
  18. exit 0
  19. ;;
  20. ?)
  21. exit 2
  22. ;;
  23. esac
  24. done
  25. shift "$(($OPTIND - 1))"
  26. executable_rel="$1"
  27. shift
  28. if [ "$#" -gt 0 ]; then
  29. brk="'$1'"
  30. shift
  31. else
  32. brk=
  33. fi
  34. set_common_vars "$arch" "$gem5"
  35. executable="${build_dir}/${executable_rel}"
  36. addr="$("${root_dir}/runtc" readelf -h "$executable" | awk '/Entry/{ print $NF }' )"
  37. ex="-ex \"add-symbol-file $executable $addr\""
  38. # -L or else lx-symbols throws for arm:
  39. # gdb.MemoryError: Cannot access memory at address 0xbf0040cc
  40. # TODO understand better.
  41. #
  42. # Also, lx-symbols overrides the add-symbol-file commands.
  43. cmd="./rungdb -a '${arch}' -b '${ex}' ${gem5_opt} -L ${brk}"
  44. echo "$cmd"
  45. eval "$cmd"