mirror of
https://git.code.sf.net/p/openocd/code
synced 2025-08-28 16:43:33 +00:00
JimTcl has been so far quite comfortable with new commands that return error codes not supported by JimTcl itself. This has been exploited by OpenOCD, allowing the OpenOCD commands to return OpenOCD error codes mixed with JimTcl error code. With the change [1] merged in JimTcl branch 'master' for 0.84, any negative value returned by a command gets interpreted as a syntax error detected at runtime by the command itself; JimTcl dumps the correct syntax and returns a valid JimTcl error code that replaces the negative value. Since all OpenOCD error codes are negative values, they are all taken as syntax errors by the new JimTcl. E.g.: openocd -c exit dumps wrong # args: should be "exit ..." Actually OpenOCD does not need the OpenOCD error code from the commands, with the exception of the codes: [a] ERROR_COMMAND_SYNTAX_ERROR, used internally by the command dispatcher, before returning to JimTcl; [b] ERROR_COMMAND_CLOSE_CONNECTION, to alert the telnet server that the current connection should be closed. With [a] already used internally, only [b] needs to be propagated through JimTcl and back to the OpenOCD caller. Map the OpenOCD error code ERROR_COMMAND_CLOSE_CONNECTION to the existing JimTcl error code JIM_EXIT, originally used only by JimTcl 'exit' command. Detect JIM_EXIT in command_run_line() and return to the caller the original ERROR_COMMAND_CLOSE_CONNECTION. Let exec_command(), and also its caller jim_command_dispatch(), to only return JimTcl error codes. Rename it to report the change. Modify the test suite as now a syntax error does not returns -601 anymore. While there, drop the association key "retval" as it's not used. Note: after this change there is no real need to replace the JimTcl command 'exit' with the OpenOCD version as both produce the same result. But I prefer keeping the code as is to mask any future change in the related JimTcl code. Link: https://github.com/msteveb/jimtcl/commit/5669e84aad22 [1] Change-Id: Ibd7aaeccdf4d7c9efe72aa71909aef83be5ecd27 Signed-off-by: Antonio Borneo <borneo.antonio@gmail.com> Reported-by: Andrzej Sierżęga <asier70@gmail.com> Reviewed-on: https://review.openocd.org/c/openocd/+/9084 Tested-by: jenkins