rungdb-user 987 B

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