]> git.gag.com Git - fw/openocd/commit
server/gdb: fix return of gdb remote monitor command
authorAntonio Borneo <borneo.antonio@gmail.com>
Wed, 30 Mar 2022 21:55:04 +0000 (23:55 +0200)
committerAntonio Borneo <borneo.antonio@gmail.com>
Sat, 23 Apr 2022 09:25:43 +0000 (09:25 +0000)
commit5ebb1bdea1dfff9cce430bd17d08e340eea38e03
tree3f2cc7319a1d6c1a7acaefa5bdd2c2fdc06b3ea3
parentd8c81d72540a9e6a9f59412686332379ece1618f
server/gdb: fix return of gdb remote monitor command

Current implementation for gdb remote monitor command uses the
command_run_line() to execute the command.
While command_run_line() has several advantages, it unfortunately
hides the error codes and outputs the result of the command
through LOG_USER(), which is not what gdb requires. See 'qRcmd' in
https://sourceware.org/gdb/onlinedocs/gdb/General-Query-Packets.html

Replace command_run_line() with Jim_EvalObj() and parse the output
to provide the proper result to gdb.

Can be tested by defining in OpenOCD:
proc a {} {return hello}
proc b {} {return -code 4}
proc c {} {return -code 4 "This is an error!"}
then by executing in gdb console:
monitor a
monitor b
monitor c
monitor foo

Change-Id: I1b85554d59221560e97861a499e16764e70c1172
Signed-off-by: Antonio Borneo <borneo.antonio@gmail.com>
Reported-by: Torbjorn Svensson <torbjorn.svensson@st.com>
Reviewed-on: https://review.openocd.org/c/openocd/+/6886
Tested-by: jenkins
src/server/gdb_server.c