)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":1001964,"name":"Erhan Kurubas","display_name":"Erhan Kurubas","email":"erhan.kurubas@espressif.com","username":"erhankur"},"change_message_id":"c45108c31a9b6fe0605744bf9457009d0d377411","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"e7e001e3_50245086","updated":"2022-04-07 08:55:52.000000000","message":"Can you please help to review these addition?","commit_id":"f43c975ee1c4c874b95521b6347315e3bdd42620"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"7777a9e3742f8ebd262a066acd9891b548691bc1","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"100826a3_65985aee","updated":"2022-04-18 21:25:58.000000000","message":"Thanks for the patch.\nSome comment below.","commit_id":"f43c975ee1c4c874b95521b6347315e3bdd42620"},{"author":{"_account_id":1001964,"name":"Erhan Kurubas","display_name":"Erhan Kurubas","email":"erhan.kurubas@espressif.com","username":"erhankur"},"change_message_id":"6438f8b35d58540fb1cd79eddb7739c718a2995d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"b46afae3_99af4a98","updated":"2022-04-20 21:40:34.000000000","message":"Antonio thanks for review and help.","commit_id":"eb9bfd32874b6852747439bed7b87e973fea2cd5"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"ed8d2a1b50099947ca57046bd8fb3338b2fd6283","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"2ab4fa4d_3bab3653","updated":"2022-05-15 22:27:50.000000000","message":"thanks","commit_id":"56409daa39f102924d03545258fb2daf22723848"},{"author":{"_account_id":1001994,"name":"maxim-kuvyrkov","username":"maxim-kuvyrkov"},"change_message_id":"20153b5d684d9260751870ac5c04945c9b5b0515","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"5b373a96_22019993","updated":"2022-05-27 18:29:58.000000000","message":"Hi Erhan,\n\nAfter this patch semihosting seems to have stopped working on STM32 -- tested STM32L4 Nucleo dev board.  I\u0027m trying to run CoreMark, and before your patch I get the usual output on stdout, but after your patch the output is empty.\n\nThis is how I\u0027m running CoreMark.  Do you have an STM32 board to reproduce this?\n\n$ cp ./coremark.exe /tmp/flash.bin\n$ cat \u003e /tmp/flashocd.cfg \u003c\u003cEOF\ninit\nreset halt\nprogram /tmp/flash.bin\nreset halt\nwait_halt\nexit\nEOF\n$ sudo openocd -d0 -s /usr/local/share/openocd -f scripts/board/st_nucleo_l4.cfg -f /tmp/flashocd.cfg\n\n$ cat \u003e /tmp/runocd.cfg \u003c\u003cEOF\ninit\nreset halt\narm semihosting enable\narm semihosting_cmdline ./coremark.exe 0x3415 0x3415 0x66 3000 7 1 2000\nresume\nEOF\n$ sudo openocd -d0 -s /usr/local/share/openocd -f scripts/board/st_nucleo_l4.cfg -f /tmp/runocd.cfg","commit_id":"ce5027ab019ac7f96d05ec5f8f533144b3bcafdf"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"52b4c2fc57a62d00384d9083f9f9ea068214d32a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"aca927e4_4b22b53e","in_reply_to":"168cc2ce_8e4566a2","updated":"2022-05-27 22:07:55.000000000","message":"My fault, it\u0027s me that proposed this \"improvement\"!\nHere we even run outside the array boundary. Valgrind should easily find this wrong array access.\nMaybe the test should be:\n if (basedir_len \u003e 0 \u0026\u0026 fn[basedir_len - 1] !\u003d \u0027/\u0027)\n   fn[basedir_len++] \u003d \u0027/\u0027;","commit_id":"ce5027ab019ac7f96d05ec5f8f533144b3bcafdf"},{"author":{"_account_id":1001964,"name":"Erhan Kurubas","display_name":"Erhan Kurubas","email":"erhan.kurubas@espressif.com","username":"erhankur"},"change_message_id":"53f2fb02bc43d69eaade6529e5d36f1815ced524","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"168cc2ce_8e4566a2","in_reply_to":"5b373a96_22019993","updated":"2022-05-27 19:10:45.000000000","message":"Hi Maxim,\nIt\u0027s my bad that I didn\u0027t test this from stdout.  \nProbably these lines are causing the issue. Can you remove them and try again? \n\nif (fn[basedir_len - 1] !\u003d \u0027/\u0027)\n   fn[basedir_len++] \u003d \u0027/\u0027;","commit_id":"ce5027ab019ac7f96d05ec5f8f533144b3bcafdf"},{"author":{"_account_id":1001964,"name":"Erhan Kurubas","display_name":"Erhan Kurubas","email":"erhan.kurubas@espressif.com","username":"erhankur"},"change_message_id":"52e4b5c961f8b17890209c9e7e02b3fd79d3a667","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"8dcae133_e21aca67","in_reply_to":"aca927e4_4b22b53e","updated":"2022-05-28 07:03:24.000000000","message":"We over focused the basedir command, forgot to look for the other cases. Sometimes it happens. Anyway, I created a patch https://review.openocd.org/c/openocd/+/7005\n\nThanks Maxim to reporting this issue.","commit_id":"ce5027ab019ac7f96d05ec5f8f533144b3bcafdf"}],"doc/openocd.texi":[{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"7777a9e3742f8ebd262a066acd9891b548691bc1","unresolved":true,"context_lines":[{"line_number":9443,"context_line":""},{"line_number":9444,"context_line":"@deffn {Command} {arm semihosting_basedir} [dir]"},{"line_number":9445,"context_line":"@cindex ARM semihosting"},{"line_number":9446,"context_line":"Set the base I/O directory relative to the OpenOCD working directory."},{"line_number":9447,"context_line":"Use \".\" for the current directory."},{"line_number":9448,"context_line":"@end deffn"},{"line_number":9449,"context_line":""}],"source_content_type":"text/x-texinfo","patch_set":1,"id":"a395831d_e93783c8","line":9446,"updated":"2022-04-18 21:25:58.000000000","message":"From the code, \"dir\" can also be an absolute path. Maybe:\n\"Set the base directory for semihosting I/O, either an absolute path or a path relative to OpenOCD working directory.\"","commit_id":"f43c975ee1c4c874b95521b6347315e3bdd42620"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"b086e1151a470ead13ba5364dcf828f1d87da667","unresolved":true,"context_lines":[{"line_number":9443,"context_line":""},{"line_number":9444,"context_line":"@deffn {Command} {arm semihosting_basedir} [dir]"},{"line_number":9445,"context_line":"@cindex ARM semihosting"},{"line_number":9446,"context_line":"Set the base I/O directory relative to the OpenOCD working directory."},{"line_number":9447,"context_line":"Use \".\" for the current directory."},{"line_number":9448,"context_line":"@end deffn"},{"line_number":9449,"context_line":""}],"source_content_type":"text/x-texinfo","patch_set":1,"id":"90c72933_ef68e600","line":9446,"in_reply_to":"17f0f8f3_5a340977","updated":"2022-04-20 20:54:21.000000000","message":"I think you forgot to push the new version","commit_id":"f43c975ee1c4c874b95521b6347315e3bdd42620"},{"author":{"_account_id":1001964,"name":"Erhan Kurubas","display_name":"Erhan Kurubas","email":"erhan.kurubas@espressif.com","username":"erhankur"},"change_message_id":"6438f8b35d58540fb1cd79eddb7739c718a2995d","unresolved":false,"context_lines":[{"line_number":9443,"context_line":""},{"line_number":9444,"context_line":"@deffn {Command} {arm semihosting_basedir} [dir]"},{"line_number":9445,"context_line":"@cindex ARM semihosting"},{"line_number":9446,"context_line":"Set the base I/O directory relative to the OpenOCD working directory."},{"line_number":9447,"context_line":"Use \".\" for the current directory."},{"line_number":9448,"context_line":"@end deffn"},{"line_number":9449,"context_line":""}],"source_content_type":"text/x-texinfo","patch_set":1,"id":"9f0e3488_2410b528","line":9446,"in_reply_to":"90c72933_ef68e600","updated":"2022-04-20 21:40:34.000000000","message":"Done","commit_id":"f43c975ee1c4c874b95521b6347315e3bdd42620"},{"author":{"_account_id":1001964,"name":"Erhan Kurubas","display_name":"Erhan Kurubas","email":"erhan.kurubas@espressif.com","username":"erhankur"},"change_message_id":"8417e6345685e0d6365267256b3f6628ab399331","unresolved":false,"context_lines":[{"line_number":9443,"context_line":""},{"line_number":9444,"context_line":"@deffn {Command} {arm semihosting_basedir} [dir]"},{"line_number":9445,"context_line":"@cindex ARM semihosting"},{"line_number":9446,"context_line":"Set the base I/O directory relative to the OpenOCD working directory."},{"line_number":9447,"context_line":"Use \".\" for the current directory."},{"line_number":9448,"context_line":"@end deffn"},{"line_number":9449,"context_line":""}],"source_content_type":"text/x-texinfo","patch_set":1,"id":"17f0f8f3_5a340977","line":9446,"in_reply_to":"a395831d_e93783c8","updated":"2022-04-19 22:09:53.000000000","message":"Done","commit_id":"f43c975ee1c4c874b95521b6347315e3bdd42620"}],"src/target/semihosting_common.c":[{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"7777a9e3742f8ebd262a066acd9891b548691bc1","unresolved":true,"context_lines":[{"line_number":877,"context_line":"\t\t\t\t\tsemihosting-\u003eresult \u003d -1;"},{"line_number":878,"context_line":"\t\t\t\t\tsemihosting-\u003esys_errno \u003d ENOMEM;"},{"line_number":879,"context_line":"\t\t\t\t} else {"},{"line_number":880,"context_line":"\t\t\t\t\tstrncpy((char *)fn, semihosting-\u003ebasedir, basedir_len);"},{"line_number":881,"context_line":"\t\t\t\t\tretval \u003d target_read_memory(target, addr, 1, len, fn + basedir_len);"},{"line_number":882,"context_line":"\t\t\t\t\tif (retval !\u003d ERROR_OK) {"},{"line_number":883,"context_line":"\t\t\t\t\t\tfree(fn);"}],"source_content_type":"text/x-csrc","patch_set":1,"id":"384321f3_41c1a0c2","line":880,"updated":"2022-04-18 21:25:58.000000000","message":"what happens if user does not add the trainling \u0027/\u0027 to basedir?\nIn documentation you say that no basedir is equivalent to \".\", but if user pass \".\" here he will get \".filename\" instead of \"./filename\".\nMaybe the right place to check for trailing \u0027/\u0027 (and to eventual add it) should be in handle_common_semihosting_basedir_command","commit_id":"f43c975ee1c4c874b95521b6347315e3bdd42620"},{"author":{"_account_id":1001964,"name":"Erhan Kurubas","display_name":"Erhan Kurubas","email":"erhan.kurubas@espressif.com","username":"erhankur"},"change_message_id":"6438f8b35d58540fb1cd79eddb7739c718a2995d","unresolved":false,"context_lines":[{"line_number":877,"context_line":"\t\t\t\t\tsemihosting-\u003eresult \u003d -1;"},{"line_number":878,"context_line":"\t\t\t\t\tsemihosting-\u003esys_errno \u003d ENOMEM;"},{"line_number":879,"context_line":"\t\t\t\t} else {"},{"line_number":880,"context_line":"\t\t\t\t\tstrncpy((char *)fn, semihosting-\u003ebasedir, basedir_len);"},{"line_number":881,"context_line":"\t\t\t\t\tretval \u003d target_read_memory(target, addr, 1, len, fn + basedir_len);"},{"line_number":882,"context_line":"\t\t\t\t\tif (retval !\u003d ERROR_OK) {"},{"line_number":883,"context_line":"\t\t\t\t\t\tfree(fn);"}],"source_content_type":"text/x-csrc","patch_set":1,"id":"edb87b32_04510501","line":880,"in_reply_to":"137ffd9e_d5bb026d","updated":"2022-04-20 21:40:34.000000000","message":"Done","commit_id":"f43c975ee1c4c874b95521b6347315e3bdd42620"},{"author":{"_account_id":1001964,"name":"Erhan Kurubas","display_name":"Erhan Kurubas","email":"erhan.kurubas@espressif.com","username":"erhankur"},"change_message_id":"9d62f8fb94702b769aee500345e12f88ed705ec4","unresolved":true,"context_lines":[{"line_number":877,"context_line":"\t\t\t\t\tsemihosting-\u003eresult \u003d -1;"},{"line_number":878,"context_line":"\t\t\t\t\tsemihosting-\u003esys_errno \u003d ENOMEM;"},{"line_number":879,"context_line":"\t\t\t\t} else {"},{"line_number":880,"context_line":"\t\t\t\t\tstrncpy((char *)fn, semihosting-\u003ebasedir, basedir_len);"},{"line_number":881,"context_line":"\t\t\t\t\tretval \u003d target_read_memory(target, addr, 1, len, fn + basedir_len);"},{"line_number":882,"context_line":"\t\t\t\t\tif (retval !\u003d ERROR_OK) {"},{"line_number":883,"context_line":"\t\t\t\t\t\tfree(fn);"}],"source_content_type":"text/x-csrc","patch_set":1,"id":"e73f830c_4efccdca","line":880,"in_reply_to":"384321f3_41c1a0c2","updated":"2022-04-19 22:44:23.000000000","message":"What about adding to the documentation that user has responsible to construct full path correctly. In the Espressif target we send filename with the leading backslash like \"/filename\"","commit_id":"f43c975ee1c4c874b95521b6347315e3bdd42620"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"b086e1151a470ead13ba5364dcf828f1d87da667","unresolved":true,"context_lines":[{"line_number":877,"context_line":"\t\t\t\t\tsemihosting-\u003eresult \u003d -1;"},{"line_number":878,"context_line":"\t\t\t\t\tsemihosting-\u003esys_errno \u003d ENOMEM;"},{"line_number":879,"context_line":"\t\t\t\t} else {"},{"line_number":880,"context_line":"\t\t\t\t\tstrncpy((char *)fn, semihosting-\u003ebasedir, basedir_len);"},{"line_number":881,"context_line":"\t\t\t\t\tretval \u003d target_read_memory(target, addr, 1, len, fn + basedir_len);"},{"line_number":882,"context_line":"\t\t\t\t\tif (retval !\u003d ERROR_OK) {"},{"line_number":883,"context_line":"\t\t\t\t\t\tfree(fn);"}],"source_content_type":"text/x-csrc","patch_set":1,"id":"137ffd9e_d5bb026d","line":880,"in_reply_to":"e73f830c_4efccdca","updated":"2022-04-20 20:54:21.000000000","message":"It\u0027s not that hard to add it, making the code more generic.\nA double \u0027/\u0027 is allowed.\n uint8_t *fn \u003d malloc(basedir_len + len + 2);\n ...\n strncpy((char *)fn, semihosting-\u003ebasedir, basedir_len);\n if (fn[basedir_len - 1] !\u003d \u0027/\u0027)\n     fn[basedir_len++] \u003d \u0027/\u0027;\n\nShould be better in handle_common_semihosting_basedir_command() to add \u0027/\u0027 only once, but here the code is simpler.","commit_id":"f43c975ee1c4c874b95521b6347315e3bdd42620"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"7777a9e3742f8ebd262a066acd9891b548691bc1","unresolved":true,"context_lines":[{"line_number":2031,"context_line":"COMMAND_HANDLER(handle_common_semihosting_basedir_command)"},{"line_number":2032,"context_line":"{"},{"line_number":2033,"context_line":"\tstruct target *target \u003d get_current_target(CMD_CTX);"},{"line_number":2034,"context_line":""},{"line_number":2035,"context_line":"\tif (!target) {"},{"line_number":2036,"context_line":"\t\tLOG_ERROR(\"No target selected\");"},{"line_number":2037,"context_line":"\t\treturn ERROR_FAIL;"}],"source_content_type":"text/x-csrc","patch_set":1,"id":"3377f793_f0678d7e","line":2034,"updated":"2022-04-18 21:25:58.000000000","message":"just to enforce the check on number of parameters, can you please add:\n if (CMD_ARGC \u003e 1)\n  return ERROR_COMMAND_SYNTAX_ERROR;","commit_id":"f43c975ee1c4c874b95521b6347315e3bdd42620"},{"author":{"_account_id":1001964,"name":"Erhan Kurubas","display_name":"Erhan Kurubas","email":"erhan.kurubas@espressif.com","username":"erhankur"},"change_message_id":"8417e6345685e0d6365267256b3f6628ab399331","unresolved":false,"context_lines":[{"line_number":2031,"context_line":"COMMAND_HANDLER(handle_common_semihosting_basedir_command)"},{"line_number":2032,"context_line":"{"},{"line_number":2033,"context_line":"\tstruct target *target \u003d get_current_target(CMD_CTX);"},{"line_number":2034,"context_line":""},{"line_number":2035,"context_line":"\tif (!target) {"},{"line_number":2036,"context_line":"\t\tLOG_ERROR(\"No target selected\");"},{"line_number":2037,"context_line":"\t\treturn ERROR_FAIL;"}],"source_content_type":"text/x-csrc","patch_set":1,"id":"98473141_c71dd3ec","line":2034,"in_reply_to":"3377f793_f0678d7e","updated":"2022-04-19 22:09:53.000000000","message":"Done","commit_id":"f43c975ee1c4c874b95521b6347315e3bdd42620"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"7777a9e3742f8ebd262a066acd9891b548691bc1","unresolved":true,"context_lines":[{"line_number":2050,"context_line":""},{"line_number":2051,"context_line":"\tif (CMD_ARGC \u003e 0) {"},{"line_number":2052,"context_line":"\t\tfree(semihosting-\u003ebasedir);"},{"line_number":2053,"context_line":"\t\tsemihosting-\u003ebasedir \u003d strdup(CMD_ARGV[0]);"},{"line_number":2054,"context_line":"\t\tif (!semihosting-\u003ebasedir) {"},{"line_number":2055,"context_line":"\t\t\tcommand_print(CMD, \"semihosting failed to allocate memory for basedir!\");"},{"line_number":2056,"context_line":"\t\t\treturn ERROR_FAIL;"}],"source_content_type":"text/x-csrc","patch_set":1,"id":"20e0cf46_2b73edf6","line":2053,"updated":"2022-04-18 21:25:58.000000000","message":"memory leak.\nWe do not have a freeing function to match semihosting_common_init(), something like semihosting_common_quit(), so at OpenOCD exit this basedir will not be free() anywhere.\nWe have a free(target-\u003esemihosting) in target_destroy(). You should add the free(target-\u003esemihosting-\u003ebasedir) there.","commit_id":"f43c975ee1c4c874b95521b6347315e3bdd42620"},{"author":{"_account_id":1001964,"name":"Erhan Kurubas","display_name":"Erhan Kurubas","email":"erhan.kurubas@espressif.com","username":"erhankur"},"change_message_id":"8417e6345685e0d6365267256b3f6628ab399331","unresolved":false,"context_lines":[{"line_number":2050,"context_line":""},{"line_number":2051,"context_line":"\tif (CMD_ARGC \u003e 0) {"},{"line_number":2052,"context_line":"\t\tfree(semihosting-\u003ebasedir);"},{"line_number":2053,"context_line":"\t\tsemihosting-\u003ebasedir \u003d strdup(CMD_ARGV[0]);"},{"line_number":2054,"context_line":"\t\tif (!semihosting-\u003ebasedir) {"},{"line_number":2055,"context_line":"\t\t\tcommand_print(CMD, \"semihosting failed to allocate memory for basedir!\");"},{"line_number":2056,"context_line":"\t\t\treturn ERROR_FAIL;"}],"source_content_type":"text/x-csrc","patch_set":1,"id":"dc18b179_4714548e","line":2053,"in_reply_to":"20e0cf46_2b73edf6","updated":"2022-04-19 22:09:53.000000000","message":"Done","commit_id":"f43c975ee1c4c874b95521b6347315e3bdd42620"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"7777a9e3742f8ebd262a066acd9891b548691bc1","unresolved":true,"context_lines":[{"line_number":2107,"context_line":"\t\t.help \u003d \"read parameters in semihosting-user-cmd-0x10X callbacks\","},{"line_number":2108,"context_line":"\t},"},{"line_number":2109,"context_line":"\t{"},{"line_number":2110,"context_line":"\t\t\"semihosting_basedir\","},{"line_number":2111,"context_line":"\t\t.handler \u003d handle_common_semihosting_basedir_command,"},{"line_number":2112,"context_line":"\t\t.mode \u003d COMMAND_EXEC,"},{"line_number":2113,"context_line":"\t\t.usage \u003d \"[dir]\","}],"source_content_type":"text/x-csrc","patch_set":1,"id":"13201db4_8afc391b","line":2110,"updated":"2022-04-18 21:25:58.000000000","message":".name \u003d \"semihosting_basedir\",","commit_id":"f43c975ee1c4c874b95521b6347315e3bdd42620"},{"author":{"_account_id":1001964,"name":"Erhan Kurubas","display_name":"Erhan Kurubas","email":"erhan.kurubas@espressif.com","username":"erhankur"},"change_message_id":"8417e6345685e0d6365267256b3f6628ab399331","unresolved":false,"context_lines":[{"line_number":2107,"context_line":"\t\t.help \u003d \"read parameters in semihosting-user-cmd-0x10X callbacks\","},{"line_number":2108,"context_line":"\t},"},{"line_number":2109,"context_line":"\t{"},{"line_number":2110,"context_line":"\t\t\"semihosting_basedir\","},{"line_number":2111,"context_line":"\t\t.handler \u003d handle_common_semihosting_basedir_command,"},{"line_number":2112,"context_line":"\t\t.mode \u003d COMMAND_EXEC,"},{"line_number":2113,"context_line":"\t\t.usage \u003d \"[dir]\","}],"source_content_type":"text/x-csrc","patch_set":1,"id":"bcb9e615_e0a53136","line":2110,"in_reply_to":"13201db4_8afc391b","updated":"2022-04-19 22:09:53.000000000","message":"Done","commit_id":"f43c975ee1c4c874b95521b6347315e3bdd42620"}],"src/target/semihosting_common.h":[{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"7777a9e3742f8ebd262a066acd9891b548691bc1","unresolved":true,"context_lines":[{"line_number":178,"context_line":""},{"line_number":179,"context_line":"\t/** Base directory for semihosting I/O operations. */"},{"line_number":180,"context_line":"\tchar *basedir;"},{"line_number":181,"context_line":"\tint (*setup)(struct target *target, int enable);"},{"line_number":182,"context_line":"\tint (*post_result)(struct target *target);"},{"line_number":183,"context_line":"};"},{"line_number":184,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":1,"id":"b0b7d3b6_cdad8348","line":181,"updated":"2022-04-18 21:25:58.000000000","message":"add an empty line after \"basedir\"","commit_id":"f43c975ee1c4c874b95521b6347315e3bdd42620"},{"author":{"_account_id":1001964,"name":"Erhan Kurubas","display_name":"Erhan Kurubas","email":"erhan.kurubas@espressif.com","username":"erhankur"},"change_message_id":"8417e6345685e0d6365267256b3f6628ab399331","unresolved":false,"context_lines":[{"line_number":178,"context_line":""},{"line_number":179,"context_line":"\t/** Base directory for semihosting I/O operations. */"},{"line_number":180,"context_line":"\tchar *basedir;"},{"line_number":181,"context_line":"\tint (*setup)(struct target *target, int enable);"},{"line_number":182,"context_line":"\tint (*post_result)(struct target *target);"},{"line_number":183,"context_line":"};"},{"line_number":184,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":1,"id":"f7b409a3_3efe2f94","line":181,"in_reply_to":"b0b7d3b6_cdad8348","updated":"2022-04-19 22:09:53.000000000","message":"Done","commit_id":"f43c975ee1c4c874b95521b6347315e3bdd42620"}],"src/target/target.c":[{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"b086e1151a470ead13ba5364dcf828f1d87da667","unresolved":true,"context_lines":[{"line_number":2259,"context_line":"\tif (target-\u003etype-\u003edeinit_target)"},{"line_number":2260,"context_line":"\t\ttarget-\u003etype-\u003edeinit_target(target);"},{"line_number":2261,"context_line":""},{"line_number":2262,"context_line":"\tfree(target-\u003esemihosting-\u003ebasedir);"},{"line_number":2263,"context_line":"\tfree(target-\u003esemihosting);"},{"line_number":2264,"context_line":""},{"line_number":2265,"context_line":"\tjtag_unregister_event_callback(jtag_enable_callback, target);"}],"source_content_type":"text/x-csrc","patch_set":2,"id":"8a95ecd4_23ce81ef","line":2262,"updated":"2022-04-20 20:54:21.000000000","message":"target-\u003esemihosting can be NULL:\n if (target-\u003esemihosting)\n     free(target-\u003esemihosting-\u003ebasedir);","commit_id":"a53cafda4ebff1de89ec6e2a7d3d478dbc7e762c"},{"author":{"_account_id":1001964,"name":"Erhan Kurubas","display_name":"Erhan Kurubas","email":"erhan.kurubas@espressif.com","username":"erhankur"},"change_message_id":"6438f8b35d58540fb1cd79eddb7739c718a2995d","unresolved":false,"context_lines":[{"line_number":2259,"context_line":"\tif (target-\u003etype-\u003edeinit_target)"},{"line_number":2260,"context_line":"\t\ttarget-\u003etype-\u003edeinit_target(target);"},{"line_number":2261,"context_line":""},{"line_number":2262,"context_line":"\tfree(target-\u003esemihosting-\u003ebasedir);"},{"line_number":2263,"context_line":"\tfree(target-\u003esemihosting);"},{"line_number":2264,"context_line":""},{"line_number":2265,"context_line":"\tjtag_unregister_event_callback(jtag_enable_callback, target);"}],"source_content_type":"text/x-csrc","patch_set":2,"id":"b4b61b87_691bfeee","line":2262,"in_reply_to":"8a95ecd4_23ce81ef","updated":"2022-04-20 21:40:34.000000000","message":"Done","commit_id":"a53cafda4ebff1de89ec6e2a7d3d478dbc7e762c"}]}
