)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":1001964,"name":"Erhan Kurubas","display_name":"Erhan Kurubas","email":"erhan.kurubas@espressif.com","username":"erhankur"},"change_message_id":"2eed7198ecd91af55d0cf347484abec7bf886cac","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"3085914e_53c8c5a5","updated":"2023-01-22 23:17:47.000000000","message":"Antonio, If I didn\u0027t miss something else, this is the last part of NuttX patch list. I am sorry, I couldn\u0027t split this one into the several patches. We have released Espressif fork with the refactored version. So, I have confident about Xtensa and Riscv part. Alan will help us to test with the ARM target.","commit_id":"6cee433ffc44f595290e22f4d2e3b0b81c9f9046"},{"author":{"_account_id":1001529,"name":"Alan C. de Assis","email":"acassis@gmail.com","username":"acassis"},"change_message_id":"2bd68193c67365b5122bff30ddd20b1bd91e1b13","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"eebd83a0_b1f2327f","updated":"2023-01-28 18:29:52.000000000","message":"Everything fine, just a minor typo","commit_id":"2cc0a4aa17f53849da14fc036a9e083e01cf2e55"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"1945af414bc7f0a36afe0624cbccfdce570b452c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"45f53696_acce392a","updated":"2023-01-28 21:09:07.000000000","message":"Thanks for the rework.\nOnly a very first check. I will return on this later","commit_id":"2cc0a4aa17f53849da14fc036a9e083e01cf2e55"},{"author":{"_account_id":1001964,"name":"Erhan Kurubas","display_name":"Erhan Kurubas","email":"erhan.kurubas@espressif.com","username":"erhankur"},"change_message_id":"eb377fd1393ae610bd16cd9376bcad381e78fbde","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"0d2b880a_5a44012d","in_reply_to":"eebd83a0_b1f2327f","updated":"2023-01-28 18:34:11.000000000","message":"Thank you @Alan. Can you also confirm, we didn\u0027t break the ARM support?","commit_id":"2cc0a4aa17f53849da14fc036a9e083e01cf2e55"},{"author":{"_account_id":1001529,"name":"Alan C. de Assis","email":"acassis@gmail.com","username":"acassis"},"change_message_id":"4e669e29735ead4d41a39d0685748da9cdb5ab10","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"30a04dd9_23408ee1","updated":"2023-02-01 13:27:26.000000000","message":"I think we could keep it in lower case \"nuttx\", although the official name is \"NuttX\" and the community try to enforce it, same way W. Denk used to enforce U-Boot typed this way.","commit_id":"7e124f0ef893c368a7b7f02c1a1c166e47d13458"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"13ec60e2eec34126631975f51081812ffbf51e8f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"cfffc6be_b03f15f3","updated":"2023-02-04 22:47:21.000000000","message":"there were some problem with Jenkins. It could not fetch jimtcl and failed the build.\nI have manually retriggered the build and it succeeded.","commit_id":"7e124f0ef893c368a7b7f02c1a1c166e47d13458"},{"author":{"_account_id":1001964,"name":"Erhan Kurubas","display_name":"Erhan Kurubas","email":"erhan.kurubas@espressif.com","username":"erhankur"},"change_message_id":"5c2ee66aa700d7c71c9585d1af312af873e44e51","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"de8b781a_04ece738","updated":"2023-03-08 08:17:42.000000000","message":"Hi Antonio, \nAny chance to continue to review?","commit_id":"1803b5c05fbb773956eeddd36dd09d14819c9438"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"9dedc6a3cf3b9672e9e568e0fcc76359e1ec36ec","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"1af2a08b_f9cd812e","updated":"2023-03-10 22:54:46.000000000","message":"Sorry for the delay from last review.\nI still did not completed the review, I need to spend some calm time on it.\nIn mean time, some comment below","commit_id":"1803b5c05fbb773956eeddd36dd09d14819c9438"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"4da610fe2243856e74b842956f255a966bb977bf","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"59e575a0_9b9a9544","updated":"2023-03-14 15:06:32.000000000","message":"thanks","commit_id":"efa11264098a716693e14dcdae3b33f89d13cd39"}],"src/rtos/nuttx.c":[{"author":{"_account_id":1000005,"name":"Andreas Fritiofson","email":"andreas.fritiofson@gmail.com","username":"Nattgris"},"change_message_id":"ea743459d90dfa2dc6eb58a1bea86732c61395c5","unresolved":true,"context_lines":[{"line_number":118,"context_line":"\tuint32_t cpacr;"},{"line_number":119,"context_line":"\tstruct armv7m_common *armv7m_target \u003d target_to_armv7m(target);"},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"\tif (!is_armv7m(armv7m_target) || armv7m_target-\u003efp_feature !\u003d FPV4_SP)"},{"line_number":122,"context_line":"\t\treturn false;"},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"\tint retval \u003d target_read_u32(target, FPU_CPACR, \u0026cpacr);"}],"source_content_type":"text/x-csrc","patch_set":1,"id":"41a0fef7_8e4846e9","line":121,"updated":"2023-01-25 08:40:25.000000000","message":"I guess you should support FPV5 etc as well, other RTOS have changed the check to fp_feature !\u003d FP_NONE.","commit_id":"6cee433ffc44f595290e22f4d2e3b0b81c9f9046"},{"author":{"_account_id":1001964,"name":"Erhan Kurubas","display_name":"Erhan Kurubas","email":"erhan.kurubas@espressif.com","username":"erhankur"},"change_message_id":"54c8b2e096bbac665ff473849ecfedd71ef616d0","unresolved":false,"context_lines":[{"line_number":118,"context_line":"\tuint32_t cpacr;"},{"line_number":119,"context_line":"\tstruct armv7m_common *armv7m_target \u003d target_to_armv7m(target);"},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"\tif (!is_armv7m(armv7m_target) || armv7m_target-\u003efp_feature !\u003d FPV4_SP)"},{"line_number":122,"context_line":"\t\treturn false;"},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"\tint retval \u003d target_read_u32(target, FPU_CPACR, \u0026cpacr);"}],"source_content_type":"text/x-csrc","patch_set":1,"id":"9edc1b0b_9db08270","line":121,"in_reply_to":"41a0fef7_8e4846e9","updated":"2023-01-25 10:02:52.000000000","message":"Thanks. I added FP_NONE check.","commit_id":"6cee433ffc44f595290e22f4d2e3b0b81c9f9046"},{"author":{"_account_id":1001529,"name":"Alan C. de Assis","email":"acassis@gmail.com","username":"acassis"},"change_message_id":"2bd68193c67365b5122bff30ddd20b1bd91e1b13","unresolved":true,"context_lines":[{"line_number":26,"context_line":""},{"line_number":27,"context_line":"/* Only 32-bit CPUs are supported by the current implementation.  Supporting"},{"line_number":28,"context_line":" * other CPUs will require reading this information from the target and"},{"line_number":29,"context_line":" * adapting the code accordignly."},{"line_number":30,"context_line":" */"},{"line_number":31,"context_line":"#define PTR_WIDTH 4"},{"line_number":32,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":3,"id":"00f4ddd3_d37b1c95","line":29,"range":{"start_line":29,"start_character":21,"end_line":29,"end_character":32},"updated":"2023-01-28 18:29:52.000000000","message":"accordignly -\u003e accordingly","commit_id":"2cc0a4aa17f53849da14fc036a9e083e01cf2e55"},{"author":{"_account_id":1001964,"name":"Erhan Kurubas","display_name":"Erhan Kurubas","email":"erhan.kurubas@espressif.com","username":"erhankur"},"change_message_id":"3912df928636ed82efa80e4f48d758b3c674158c","unresolved":false,"context_lines":[{"line_number":26,"context_line":""},{"line_number":27,"context_line":"/* Only 32-bit CPUs are supported by the current implementation.  Supporting"},{"line_number":28,"context_line":" * other CPUs will require reading this information from the target and"},{"line_number":29,"context_line":" * adapting the code accordignly."},{"line_number":30,"context_line":" */"},{"line_number":31,"context_line":"#define PTR_WIDTH 4"},{"line_number":32,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":3,"id":"d0612ccf_87d080a8","line":29,"range":{"start_line":29,"start_character":21,"end_line":29,"end_character":32},"in_reply_to":"00f4ddd3_d37b1c95","updated":"2023-01-31 14:25:53.000000000","message":"Done","commit_id":"2cc0a4aa17f53849da14fc036a9e083e01cf2e55"},{"author":{"_account_id":1000005,"name":"Andreas Fritiofson","email":"andreas.fritiofson@gmail.com","username":"Nattgris"},"change_message_id":"9590467ee567c1f718064a9cf179863037d13f33","unresolved":true,"context_lines":[{"line_number":44,"context_line":"\tuint8_t regs_off[2];"},{"line_number":45,"context_line":"\tuint8_t basic_num[2];"},{"line_number":46,"context_line":"\tuint8_t total_num[2];"},{"line_number":47,"context_line":"} __attribute__ ((packed));"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"struct symbols {"},{"line_number":50,"context_line":"\tconst char *name;"}],"source_content_type":"text/x-csrc","patch_set":3,"id":"193ce6e7_0f71b3ba","line":47,"range":{"start_line":47,"start_character":2,"end_line":47,"end_character":26},"updated":"2023-01-29 01:02:32.000000000","message":"Is attribute packed really doing anything useful for a struct with only byte-sized elements?","commit_id":"2cc0a4aa17f53849da14fc036a9e083e01cf2e55"},{"author":{"_account_id":1001964,"name":"Erhan Kurubas","display_name":"Erhan Kurubas","email":"erhan.kurubas@espressif.com","username":"erhankur"},"change_message_id":"8ac5cc318413baee62db15cbff93cc6f8b6d8903","unresolved":false,"context_lines":[{"line_number":44,"context_line":"\tuint8_t regs_off[2];"},{"line_number":45,"context_line":"\tuint8_t basic_num[2];"},{"line_number":46,"context_line":"\tuint8_t total_num[2];"},{"line_number":47,"context_line":"} __attribute__ ((packed));"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"struct symbols {"},{"line_number":50,"context_line":"\tconst char *name;"}],"source_content_type":"text/x-csrc","patch_set":3,"id":"23360de0_431f3fab","line":47,"range":{"start_line":47,"start_character":2,"end_line":47,"end_character":26},"in_reply_to":"0d4005ca_da314ef0","updated":"2023-02-01 04:29:25.000000000","message":"Andreas, I missed some fields while preparing a patch. Actually we need packed attribute. See the latest PS5.","commit_id":"2cc0a4aa17f53849da14fc036a9e083e01cf2e55"},{"author":{"_account_id":1001964,"name":"Erhan Kurubas","display_name":"Erhan Kurubas","email":"erhan.kurubas@espressif.com","username":"erhankur"},"change_message_id":"3912df928636ed82efa80e4f48d758b3c674158c","unresolved":false,"context_lines":[{"line_number":44,"context_line":"\tuint8_t regs_off[2];"},{"line_number":45,"context_line":"\tuint8_t basic_num[2];"},{"line_number":46,"context_line":"\tuint8_t total_num[2];"},{"line_number":47,"context_line":"} __attribute__ ((packed));"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"struct symbols {"},{"line_number":50,"context_line":"\tconst char *name;"}],"source_content_type":"text/x-csrc","patch_set":3,"id":"0d4005ca_da314ef0","line":47,"range":{"start_line":47,"start_character":2,"end_line":47,"end_character":26},"in_reply_to":"193ce6e7_0f71b3ba","updated":"2023-01-31 14:25:53.000000000","message":"No. You are right.","commit_id":"2cc0a4aa17f53849da14fc036a9e083e01cf2e55"},{"author":{"_account_id":1000005,"name":"Andreas Fritiofson","email":"andreas.fritiofson@gmail.com","username":"Nattgris"},"change_message_id":"9590467ee567c1f718064a9cf179863037d13f33","unresolved":true,"context_lines":[{"line_number":248,"context_line":"\tfor (unsigned int i \u003d 0; i \u003c npidhash; i++) {"},{"line_number":249,"context_line":"\t\ttcbaddr \u003d target_buffer_get_u32(rtos-\u003etarget, \u0026pidhash[i * sizeof(uint32_t)]);"},{"line_number":250,"context_line":""},{"line_number":251,"context_line":"\t\tif (tcbaddr) {"},{"line_number":252,"context_line":"\t\t\tstruct thread_detail *thread;"},{"line_number":253,"context_line":""},{"line_number":254,"context_line":"\t\t\tret \u003d target_read_u16(rtos-\u003etarget, tcbaddr + le_to_h_u16(tcbinfo.pid_off), \u0026pid);"}],"source_content_type":"text/x-csrc","patch_set":3,"id":"84063377_63950af3","line":251,"updated":"2023-01-29 01:02:32.000000000","message":"I suggest to just do\n\n if (!tcbaddr)\n     continue;\n\nto reduce indentation of the big block. And/or break out (parts of) the loop body to its own function if possible.","commit_id":"2cc0a4aa17f53849da14fc036a9e083e01cf2e55"},{"author":{"_account_id":1001964,"name":"Erhan Kurubas","display_name":"Erhan Kurubas","email":"erhan.kurubas@espressif.com","username":"erhankur"},"change_message_id":"3912df928636ed82efa80e4f48d758b3c674158c","unresolved":false,"context_lines":[{"line_number":248,"context_line":"\tfor (unsigned int i \u003d 0; i \u003c npidhash; i++) {"},{"line_number":249,"context_line":"\t\ttcbaddr \u003d target_buffer_get_u32(rtos-\u003etarget, \u0026pidhash[i * sizeof(uint32_t)]);"},{"line_number":250,"context_line":""},{"line_number":251,"context_line":"\t\tif (tcbaddr) {"},{"line_number":252,"context_line":"\t\t\tstruct thread_detail *thread;"},{"line_number":253,"context_line":""},{"line_number":254,"context_line":"\t\t\tret \u003d target_read_u16(rtos-\u003etarget, tcbaddr + le_to_h_u16(tcbinfo.pid_off), \u0026pid);"}],"source_content_type":"text/x-csrc","patch_set":3,"id":"df58c8f2_320c9dd4","line":251,"in_reply_to":"84063377_63950af3","updated":"2023-01-31 14:25:53.000000000","message":"Done","commit_id":"2cc0a4aa17f53849da14fc036a9e083e01cf2e55"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"1945af414bc7f0a36afe0624cbccfdce570b452c","unresolved":true,"context_lines":[{"line_number":267,"context_line":""},{"line_number":268,"context_line":"\t\t\tthread_count++;"},{"line_number":269,"context_line":""},{"line_number":270,"context_line":"\t\t\trtos-\u003ethread_details \u003d realloc(rtos-\u003ethread_details,"},{"line_number":271,"context_line":"\t\t\t\tsizeof(struct thread_detail) * thread_count);"},{"line_number":272,"context_line":"\t\t\tif (!rtos-\u003ethread_details) {"},{"line_number":273,"context_line":"\t\t\t\tret \u003d ERROR_FAIL;"}],"source_content_type":"text/x-csrc","patch_set":3,"id":"c360b89a_393826a9","line":270,"updated":"2023-01-28 21:09:07.000000000","message":"realloc() can fail, returning NULL and deallocating the previous rtos-\u003ethread_details.\nSome fields in rtos-\u003ethread_details are assigned wit Xalloc() below in line 283 and 294 and strdup in 306.\nIf realloc() fails, then all the pointers to allocated memory get lost.\nIn https://review.openocd.org/6668 (new rtos rt-kernel) it was fixed with the function realloc_preserve().\nSame approach could be used here.","commit_id":"2cc0a4aa17f53849da14fc036a9e083e01cf2e55"},{"author":{"_account_id":1001964,"name":"Erhan Kurubas","display_name":"Erhan Kurubas","email":"erhan.kurubas@espressif.com","username":"erhankur"},"change_message_id":"3912df928636ed82efa80e4f48d758b3c674158c","unresolved":true,"context_lines":[{"line_number":267,"context_line":""},{"line_number":268,"context_line":"\t\t\tthread_count++;"},{"line_number":269,"context_line":""},{"line_number":270,"context_line":"\t\t\trtos-\u003ethread_details \u003d realloc(rtos-\u003ethread_details,"},{"line_number":271,"context_line":"\t\t\t\tsizeof(struct thread_detail) * thread_count);"},{"line_number":272,"context_line":"\t\t\tif (!rtos-\u003ethread_details) {"},{"line_number":273,"context_line":"\t\t\t\tret \u003d ERROR_FAIL;"}],"source_content_type":"text/x-csrc","patch_set":3,"id":"fe3fd32c_91629867","line":270,"in_reply_to":"17ab1eef_24c09530","updated":"2023-01-31 14:25:53.000000000","message":"Thanks Antonio, Andreas. I tried to address your comments. rtos-\u003ethread_details will be in safe until the new realloc() return success. And I left the cleanup for the previous thread_details to the next update time.","commit_id":"2cc0a4aa17f53849da14fc036a9e083e01cf2e55"},{"author":{"_account_id":1000005,"name":"Andreas Fritiofson","email":"andreas.fritiofson@gmail.com","username":"Nattgris"},"change_message_id":"9590467ee567c1f718064a9cf179863037d13f33","unresolved":true,"context_lines":[{"line_number":267,"context_line":""},{"line_number":268,"context_line":"\t\t\tthread_count++;"},{"line_number":269,"context_line":""},{"line_number":270,"context_line":"\t\t\trtos-\u003ethread_details \u003d realloc(rtos-\u003ethread_details,"},{"line_number":271,"context_line":"\t\t\t\tsizeof(struct thread_detail) * thread_count);"},{"line_number":272,"context_line":"\t\t\tif (!rtos-\u003ethread_details) {"},{"line_number":273,"context_line":"\t\t\t\tret \u003d ERROR_FAIL;"}],"source_content_type":"text/x-csrc","patch_set":3,"id":"17ab1eef_24c09530","line":270,"in_reply_to":"c360b89a_393826a9","updated":"2023-01-29 01:02:32.000000000","message":"More importantly, since it will happen in practice, is that if there\u0027s any failure when reading some thread (corrupt target memory etc.), the resources allocated for any previously read threads will get lost, since errout is not doing any cleanup of per-thread data.\n\nThis could potentially be fixed by updating rtos-\u003etrhread_count for each allocated thread, and clean up using rtos_free_threadlist() (or just leave the threads\u0027 data there and it will get cleaned up next time).","commit_id":"2cc0a4aa17f53849da14fc036a9e083e01cf2e55"},{"author":{"_account_id":1001964,"name":"Erhan Kurubas","display_name":"Erhan Kurubas","email":"erhan.kurubas@espressif.com","username":"erhankur"},"change_message_id":"8fb415a025e2f5e7dc6f95e285709e3b85730bcb","unresolved":false,"context_lines":[{"line_number":267,"context_line":""},{"line_number":268,"context_line":"\t\t\tthread_count++;"},{"line_number":269,"context_line":""},{"line_number":270,"context_line":"\t\t\trtos-\u003ethread_details \u003d realloc(rtos-\u003ethread_details,"},{"line_number":271,"context_line":"\t\t\t\tsizeof(struct thread_detail) * thread_count);"},{"line_number":272,"context_line":"\t\t\tif (!rtos-\u003ethread_details) {"},{"line_number":273,"context_line":"\t\t\t\tret \u003d ERROR_FAIL;"}],"source_content_type":"text/x-csrc","patch_set":3,"id":"c3ab3e0f_1138f814","line":270,"in_reply_to":"fe3fd32c_91629867","updated":"2023-03-13 20:54:53.000000000","message":"Done","commit_id":"2cc0a4aa17f53849da14fc036a9e083e01cf2e55"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"1945af414bc7f0a36afe0624cbccfdce570b452c","unresolved":true,"context_lines":[{"line_number":394,"context_line":""},{"line_number":395,"context_line":"static int nuttx_get_symbol_list_to_lookup(struct symbol_table_elem *symbol_list[])"},{"line_number":396,"context_line":"{"},{"line_number":397,"context_line":"\t*symbol_list \u003d (struct symbol_table_elem *)calloc(1,"},{"line_number":398,"context_line":"\t\tsizeof(struct symbol_table_elem) * ARRAY_SIZE(nuttx_symbol_list));"},{"line_number":399,"context_line":""},{"line_number":400,"context_line":"\tfor (unsigned int i \u003d 0; i \u003c ARRAY_SIZE(nuttx_symbol_list); i++) {"}],"source_content_type":"text/x-csrc","patch_set":3,"id":"0e9fcbac_3b23256f","line":397,"updated":"2023-01-28 21:09:07.000000000","message":"No need for cast, as calloc() returns \u0027void *\u0027\nUse the two args as calloc(ARRAY_SIZE(...), sizeof(**symbol_list));\nCheck the returned pointer not NULL","commit_id":"2cc0a4aa17f53849da14fc036a9e083e01cf2e55"},{"author":{"_account_id":1001964,"name":"Erhan Kurubas","display_name":"Erhan Kurubas","email":"erhan.kurubas@espressif.com","username":"erhankur"},"change_message_id":"3912df928636ed82efa80e4f48d758b3c674158c","unresolved":false,"context_lines":[{"line_number":394,"context_line":""},{"line_number":395,"context_line":"static int nuttx_get_symbol_list_to_lookup(struct symbol_table_elem *symbol_list[])"},{"line_number":396,"context_line":"{"},{"line_number":397,"context_line":"\t*symbol_list \u003d (struct symbol_table_elem *)calloc(1,"},{"line_number":398,"context_line":"\t\tsizeof(struct symbol_table_elem) * ARRAY_SIZE(nuttx_symbol_list));"},{"line_number":399,"context_line":""},{"line_number":400,"context_line":"\tfor (unsigned int i \u003d 0; i \u003c ARRAY_SIZE(nuttx_symbol_list); i++) {"}],"source_content_type":"text/x-csrc","patch_set":3,"id":"e2e43fa7_e12b864d","line":397,"in_reply_to":"0e9fcbac_3b23256f","updated":"2023-01-31 14:25:53.000000000","message":"Done","commit_id":"2cc0a4aa17f53849da14fc036a9e083e01cf2e55"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"1945af414bc7f0a36afe0624cbccfdce570b452c","unresolved":true,"context_lines":[{"line_number":406,"context_line":"}"},{"line_number":407,"context_line":""},{"line_number":408,"context_line":"const struct rtos_type nuttx_rtos \u003d {"},{"line_number":409,"context_line":"\t.name \u003d \"NuttX\","},{"line_number":410,"context_line":"\t.detect_rtos \u003d nuttx_detect_rtos,"},{"line_number":411,"context_line":"\t.create \u003d nuttx_create,"},{"line_number":412,"context_line":"\t.smp_init \u003d nuttx_smp_init,"}],"source_content_type":"text/x-csrc","patch_set":3,"id":"1138479d_5398ec7b","line":409,"updated":"2023-01-28 21:09:07.000000000","message":"Changing the case s/nuttx/NuttX/ will break existing config scripts.\nThe flag \u0027-rtos\u0027 in target create is case sensitive.","commit_id":"2cc0a4aa17f53849da14fc036a9e083e01cf2e55"},{"author":{"_account_id":1001964,"name":"Erhan Kurubas","display_name":"Erhan Kurubas","email":"erhan.kurubas@espressif.com","username":"erhankur"},"change_message_id":"3912df928636ed82efa80e4f48d758b3c674158c","unresolved":false,"context_lines":[{"line_number":406,"context_line":"}"},{"line_number":407,"context_line":""},{"line_number":408,"context_line":"const struct rtos_type nuttx_rtos \u003d {"},{"line_number":409,"context_line":"\t.name \u003d \"NuttX\","},{"line_number":410,"context_line":"\t.detect_rtos \u003d nuttx_detect_rtos,"},{"line_number":411,"context_line":"\t.create \u003d nuttx_create,"},{"line_number":412,"context_line":"\t.smp_init \u003d nuttx_smp_init,"}],"source_content_type":"text/x-csrc","patch_set":3,"id":"38f86d9d_0c49c608","line":409,"in_reply_to":"1138479d_5398ec7b","updated":"2023-01-31 14:25:53.000000000","message":"Done","commit_id":"2cc0a4aa17f53849da14fc036a9e083e01cf2e55"},{"author":{"_account_id":1001529,"name":"Alan C. de Assis","email":"acassis@gmail.com","username":"acassis"},"change_message_id":"4e669e29735ead4d41a39d0685748da9cdb5ab10","unresolved":false,"context_lines":[{"line_number":406,"context_line":"}"},{"line_number":407,"context_line":""},{"line_number":408,"context_line":"const struct rtos_type nuttx_rtos \u003d {"},{"line_number":409,"context_line":"\t.name \u003d \"NuttX\","},{"line_number":410,"context_line":"\t.detect_rtos \u003d nuttx_detect_rtos,"},{"line_number":411,"context_line":"\t.create \u003d nuttx_create,"},{"line_number":412,"context_line":"\t.smp_init \u003d nuttx_smp_init,"}],"source_content_type":"text/x-csrc","patch_set":3,"id":"108875f5_7c998a2f","line":409,"in_reply_to":"38f86d9d_0c49c608","updated":"2023-02-01 13:27:26.000000000","message":"I think we could keep it in lower case \"nuttx\", although the official name is \"NuttX\" and the community try to enforce it, same way W. Denk used to enforce U-Boot typed this way.","commit_id":"2cc0a4aa17f53849da14fc036a9e083e01cf2e55"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"b7dde26f24af9bc16531f08063506954b68f451a","unresolved":true,"context_lines":[{"line_number":50,"context_line":"\tuint8_t total_num[2];"},{"line_number":51,"context_line":"\tunion {"},{"line_number":52,"context_line":"\t\tuint8_t u[8];"},{"line_number":53,"context_line":"\t\tuint16_t *p;"},{"line_number":54,"context_line":"\t}  __attribute__ ((packed)) reg_off;"},{"line_number":55,"context_line":"} __attribute__ ((packed));"},{"line_number":56,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":5,"id":"d676d199_87c23e1f","line":53,"updated":"2023-02-04 17:12:35.000000000","message":"OpenOCD runs on host PC.\nThis struct is read from target\u0027s memory and it\u0027s supposed to contains target\u0027s data.\n\u0027uint16_t *p\u0027 can be 4 or 8 bytes, depending on host address space.\nPlus there could be endianness mismatch between host and target.\nI would suggest to drop the union and use directly\n uint8_t reg_off[8];\n\nthen OpenOCD code will be in charge of converting the array in a target\u0027s pointer taking in consideration target endianness and pointer size.\n\nMore in general, I consider better reading the target\u0027s struct as a uint8_t array and unpack it in a host struct:\n #define TCBINFO_SIZE 22\n struct tcbinfo {\n   uint16_t pid_off;\n   uint16_t state_off;\n   ...\n   target_addr_t reg_off;\n } tcbinfo;\n target_read_buffer(target, add, TCBINFO_SIZE, buf);\n tcbinfo.pid_off \u003d target_buffer_get_u16(target, buf);\n tcbinfo.state_off \u003d target_buffer_get_u16(target, buf + 2);\n ...\n tcbinfo.reg_off \u003d target_buffer_set_u64(target, buf + 14);","commit_id":"7e124f0ef893c368a7b7f02c1a1c166e47d13458"},{"author":{"_account_id":1001964,"name":"Erhan Kurubas","display_name":"Erhan Kurubas","email":"erhan.kurubas@espressif.com","username":"erhankur"},"change_message_id":"d7685afcf6b81b52a7ce772aae82d98ca43e5762","unresolved":false,"context_lines":[{"line_number":50,"context_line":"\tuint8_t total_num[2];"},{"line_number":51,"context_line":"\tunion {"},{"line_number":52,"context_line":"\t\tuint8_t u[8];"},{"line_number":53,"context_line":"\t\tuint16_t *p;"},{"line_number":54,"context_line":"\t}  __attribute__ ((packed)) reg_off;"},{"line_number":55,"context_line":"} __attribute__ ((packed));"},{"line_number":56,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":5,"id":"a6ada534_af5f4605","line":53,"in_reply_to":"d676d199_87c23e1f","updated":"2023-02-05 14:32:18.000000000","message":"Done as you suggested.","commit_id":"7e124f0ef893c368a7b7f02c1a1c166e47d13458"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"9dedc6a3cf3b9672e9e568e0fcc76359e1ec36ec","unresolved":true,"context_lines":[{"line_number":40,"context_line":" * struct tcbinfo_s is located here."},{"line_number":41,"context_line":" * https://github.com/apache/nuttx/blob/master/include/nuttx/sched.h#L698"},{"line_number":42,"context_line":" */"},{"line_number":43,"context_line":"#define TCBINFO_SIZE 22"},{"line_number":44,"context_line":"struct tcbinfo {"},{"line_number":45,"context_line":"\tuint16_t pid_off;\t\t\t/* Offset of tcb.pid                */"},{"line_number":46,"context_line":"\tuint16_t state_off;\t\t\t/* Offset of tcb.task_state         */"}],"source_content_type":"text/x-csrc","patch_set":7,"id":"5baf6b4a_040ab71d","line":43,"updated":"2023-03-10 22:54:46.000000000","message":"to avoid confusion between target\u0027s struct tcbinfo_s and OpenOCD host\u0027s struct tcbinfo, I think would be better adding \u0027target\u0027 in the name, e.g. TCBINFO_TARGET_SIZE","commit_id":"1803b5c05fbb773956eeddd36dd09d14819c9438"},{"author":{"_account_id":1001964,"name":"Erhan Kurubas","display_name":"Erhan Kurubas","email":"erhan.kurubas@espressif.com","username":"erhankur"},"change_message_id":"8fb415a025e2f5e7dc6f95e285709e3b85730bcb","unresolved":false,"context_lines":[{"line_number":40,"context_line":" * struct tcbinfo_s is located here."},{"line_number":41,"context_line":" * https://github.com/apache/nuttx/blob/master/include/nuttx/sched.h#L698"},{"line_number":42,"context_line":" */"},{"line_number":43,"context_line":"#define TCBINFO_SIZE 22"},{"line_number":44,"context_line":"struct tcbinfo {"},{"line_number":45,"context_line":"\tuint16_t pid_off;\t\t\t/* Offset of tcb.pid                */"},{"line_number":46,"context_line":"\tuint16_t state_off;\t\t\t/* Offset of tcb.task_state         */"}],"source_content_type":"text/x-csrc","patch_set":7,"id":"f4aa3f3a_d878a537","line":43,"in_reply_to":"5baf6b4a_040ab71d","updated":"2023-03-13 20:54:53.000000000","message":"Done","commit_id":"1803b5c05fbb773956eeddd36dd09d14819c9438"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"9dedc6a3cf3b9672e9e568e0fcc76359e1ec36ec","unresolved":true,"context_lines":[{"line_number":65,"context_line":"\tNX_SYM_TCB_INFO,"},{"line_number":66,"context_line":"};"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"/* See nuttx/sched/nx_start.c */"},{"line_number":69,"context_line":"static const struct symbols nuttx_symbol_list[] \u003d {"},{"line_number":70,"context_line":"\t{ \"g_readytorun\", false },"},{"line_number":71,"context_line":"\t{ \"g_pidhash\", false },"}],"source_content_type":"text/x-csrc","patch_set":7,"id":"d4d3e47c_02bd2fad","line":68,"updated":"2023-03-10 22:54:46.000000000","message":"these are now in sched/init/nx_start.c\nwhile g_tcbinfo is defined in arch/*/src/*/*_tcbinfo.c","commit_id":"1803b5c05fbb773956eeddd36dd09d14819c9438"},{"author":{"_account_id":1001964,"name":"Erhan Kurubas","display_name":"Erhan Kurubas","email":"erhan.kurubas@espressif.com","username":"erhankur"},"change_message_id":"8fb415a025e2f5e7dc6f95e285709e3b85730bcb","unresolved":false,"context_lines":[{"line_number":65,"context_line":"\tNX_SYM_TCB_INFO,"},{"line_number":66,"context_line":"};"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"/* See nuttx/sched/nx_start.c */"},{"line_number":69,"context_line":"static const struct symbols nuttx_symbol_list[] \u003d {"},{"line_number":70,"context_line":"\t{ \"g_readytorun\", false },"},{"line_number":71,"context_line":"\t{ \"g_pidhash\", false },"}],"source_content_type":"text/x-csrc","patch_set":7,"id":"4cd2e47b_916f6558","line":68,"in_reply_to":"d4d3e47c_02bd2fad","updated":"2023-03-13 20:54:53.000000000","message":"These can change again later on. I removed the references.","commit_id":"1803b5c05fbb773956eeddd36dd09d14819c9438"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"9dedc6a3cf3b9672e9e568e0fcc76359e1ec36ec","unresolved":true,"context_lines":[{"line_number":244,"context_line":"\ttcbinfo.regs_off \u003d target_buffer_get_u16(rtos-\u003etarget, buff + 8);"},{"line_number":245,"context_line":"\ttcbinfo.basic_num \u003d target_buffer_get_u16(rtos-\u003etarget, buff + 10);"},{"line_number":246,"context_line":"\ttcbinfo.total_num \u003d target_buffer_get_u16(rtos-\u003etarget, buff + 12);"},{"line_number":247,"context_line":"\ttcbinfo.xcpreg_off \u003d target_buffer_get_u64(rtos-\u003etarget, buff + 14);"},{"line_number":248,"context_line":""},{"line_number":249,"context_line":"\t/* The head of the g_readytorun list is the currently running task."},{"line_number":250,"context_line":"\t * Reading in a temporary variable first to avoid endianness issues,"}],"source_content_type":"text/x-csrc","patch_set":7,"id":"7f166d54_5b1099cc","line":247,"updated":"2023-03-10 22:54:46.000000000","message":"Here you are reading the union {uint8_t u[8]; const uint16_t *p;}\nWith PTR_WIDTH\u003d4, only the first 4 bytes will be used by the target for the pointer \u0027p\u0027.\n\nWith target little-endian, the 4 bytes pointer 0x44332211 will be in memory as\n0x11 0x22 0x33 0x44 0xXX 0xXX 0xXX 0xXX.\nYou will load 0xXXXXXXXX44332211. Assuming 0xXX is zero, this is ok.\n\nBut with target big-endian, the pointer would be in memory as\n0x44 0x33 0x22 0x11 0xXX 0xXX 0xXX 0xXX.\nYou will load 0x44332211XXXXXXXX! Whatever value is 0xXX, this is wrong!\n\nI think we need something like\ntarget_addr_t *target_buffer_get_addr(struct target *target, const uint8_t *buffer)\n{\n#if PTR_WIDTH \u003d\u003d 8\nreturn target_buffer_get_u64(target, buffer);\n#else\nreturn target_buffer_get_u32(target, buffer);\n#endif\n}\nThis cannot be in src/target/target.* because the pointer size is compiler dependent, not target dependent.\nSo, for the moment, put it as a static local function.","commit_id":"1803b5c05fbb773956eeddd36dd09d14819c9438"},{"author":{"_account_id":1001964,"name":"Erhan Kurubas","display_name":"Erhan Kurubas","email":"erhan.kurubas@espressif.com","username":"erhankur"},"change_message_id":"8fb415a025e2f5e7dc6f95e285709e3b85730bcb","unresolved":false,"context_lines":[{"line_number":244,"context_line":"\ttcbinfo.regs_off \u003d target_buffer_get_u16(rtos-\u003etarget, buff + 8);"},{"line_number":245,"context_line":"\ttcbinfo.basic_num \u003d target_buffer_get_u16(rtos-\u003etarget, buff + 10);"},{"line_number":246,"context_line":"\ttcbinfo.total_num \u003d target_buffer_get_u16(rtos-\u003etarget, buff + 12);"},{"line_number":247,"context_line":"\ttcbinfo.xcpreg_off \u003d target_buffer_get_u64(rtos-\u003etarget, buff + 14);"},{"line_number":248,"context_line":""},{"line_number":249,"context_line":"\t/* The head of the g_readytorun list is the currently running task."},{"line_number":250,"context_line":"\t * Reading in a temporary variable first to avoid endianness issues,"}],"source_content_type":"text/x-csrc","patch_set":7,"id":"08aa47c2_4e4e41c1","line":247,"in_reply_to":"7f166d54_5b1099cc","updated":"2023-03-13 20:54:53.000000000","message":"Good catch. Thanks.","commit_id":"1803b5c05fbb773956eeddd36dd09d14819c9438"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"9dedc6a3cf3b9672e9e568e0fcc76359e1ec36ec","unresolved":true,"context_lines":[{"line_number":260,"context_line":"\tuint32_t thread_count \u003d 0;"},{"line_number":261,"context_line":""},{"line_number":262,"context_line":"\tfor (unsigned int i \u003d 0; i \u003c npidhash; i++) {"},{"line_number":263,"context_line":"\t\ttcbaddr \u003d target_buffer_get_u32(rtos-\u003etarget, \u0026pidhash[i * sizeof(uint32_t)]);"},{"line_number":264,"context_line":""},{"line_number":265,"context_line":"\t\tif (!tcbaddr)"},{"line_number":266,"context_line":"\t\t\tcontinue;"}],"source_content_type":"text/x-csrc","patch_set":7,"id":"cb74240a_c223deba","line":263,"updated":"2023-03-10 22:54:46.000000000","message":"to be coherent with the allocation of pidhash above, here use:\npidhash[i * PTR_WIDTH]","commit_id":"1803b5c05fbb773956eeddd36dd09d14819c9438"},{"author":{"_account_id":1001964,"name":"Erhan Kurubas","display_name":"Erhan Kurubas","email":"erhan.kurubas@espressif.com","username":"erhankur"},"change_message_id":"8fb415a025e2f5e7dc6f95e285709e3b85730bcb","unresolved":false,"context_lines":[{"line_number":260,"context_line":"\tuint32_t thread_count \u003d 0;"},{"line_number":261,"context_line":""},{"line_number":262,"context_line":"\tfor (unsigned int i \u003d 0; i \u003c npidhash; i++) {"},{"line_number":263,"context_line":"\t\ttcbaddr \u003d target_buffer_get_u32(rtos-\u003etarget, \u0026pidhash[i * sizeof(uint32_t)]);"},{"line_number":264,"context_line":""},{"line_number":265,"context_line":"\t\tif (!tcbaddr)"},{"line_number":266,"context_line":"\t\t\tcontinue;"}],"source_content_type":"text/x-csrc","patch_set":7,"id":"8e8db8f2_475f1e46","line":263,"in_reply_to":"cb74240a_c223deba","updated":"2023-03-13 20:54:53.000000000","message":"Done","commit_id":"1803b5c05fbb773956eeddd36dd09d14819c9438"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"9dedc6a3cf3b9672e9e568e0fcc76359e1ec36ec","unresolved":true,"context_lines":[{"line_number":366,"context_line":"{"},{"line_number":367,"context_line":"\tuint16_t xcpreg_off;"},{"line_number":368,"context_line":"\tuint32_t regsaddr;"},{"line_number":369,"context_line":"\tconst struct nuttx_params *priv \u003d (const struct nuttx_params *)rtos-\u003ertos_specific_params;"},{"line_number":370,"context_line":"\tconst struct rtos_register_stacking *stacking \u003d priv-\u003estacking;"},{"line_number":371,"context_line":""},{"line_number":372,"context_line":"\tif (!stacking) {"}],"source_content_type":"text/x-csrc","patch_set":7,"id":"2b4eb1ce_1361728c","line":369,"updated":"2023-03-10 22:54:46.000000000","message":"no need for cast. rtos-\u003ertos_specific_params is a (void *) and it can be assigned directly to priv.","commit_id":"1803b5c05fbb773956eeddd36dd09d14819c9438"},{"author":{"_account_id":1001964,"name":"Erhan Kurubas","display_name":"Erhan Kurubas","email":"erhan.kurubas@espressif.com","username":"erhankur"},"change_message_id":"8fb415a025e2f5e7dc6f95e285709e3b85730bcb","unresolved":false,"context_lines":[{"line_number":366,"context_line":"{"},{"line_number":367,"context_line":"\tuint16_t xcpreg_off;"},{"line_number":368,"context_line":"\tuint32_t regsaddr;"},{"line_number":369,"context_line":"\tconst struct nuttx_params *priv \u003d (const struct nuttx_params *)rtos-\u003ertos_specific_params;"},{"line_number":370,"context_line":"\tconst struct rtos_register_stacking *stacking \u003d priv-\u003estacking;"},{"line_number":371,"context_line":""},{"line_number":372,"context_line":"\tif (!stacking) {"}],"source_content_type":"text/x-csrc","patch_set":7,"id":"e94581c6_2b39f7ed","line":369,"in_reply_to":"2b4eb1ce_1361728c","updated":"2023-03-13 20:54:53.000000000","message":"Done","commit_id":"1803b5c05fbb773956eeddd36dd09d14819c9438"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"9dedc6a3cf3b9672e9e568e0fcc76359e1ec36ec","unresolved":true,"context_lines":[{"line_number":408,"context_line":""},{"line_number":409,"context_line":"static int nuttx_get_symbol_list_to_lookup(struct symbol_table_elem *symbol_list[])"},{"line_number":410,"context_line":"{"},{"line_number":411,"context_line":"\t*symbol_list \u003d calloc(1, sizeof(struct symbol_table_elem) * ARRAY_SIZE(nuttx_symbol_list));"},{"line_number":412,"context_line":""},{"line_number":413,"context_line":"\tfor (unsigned int i \u003d 0; i \u003c ARRAY_SIZE(nuttx_symbol_list); i++) {"},{"line_number":414,"context_line":"\t\t(*symbol_list)[i].symbol_name \u003d nuttx_symbol_list[i].name;"}],"source_content_type":"text/x-csrc","patch_set":7,"id":"7b6e9a75_ffc5fe22","line":411,"updated":"2023-03-10 22:54:46.000000000","message":"calloc(ARRAY_SIZE(...), sizeof(struct symbol_table_elem));\nor\ncalloc(ARRAY_SIZE(...), sizeof(**symbol_list));\nthen check the returned pointer not NULL","commit_id":"1803b5c05fbb773956eeddd36dd09d14819c9438"},{"author":{"_account_id":1001964,"name":"Erhan Kurubas","display_name":"Erhan Kurubas","email":"erhan.kurubas@espressif.com","username":"erhankur"},"change_message_id":"8fb415a025e2f5e7dc6f95e285709e3b85730bcb","unresolved":false,"context_lines":[{"line_number":408,"context_line":""},{"line_number":409,"context_line":"static int nuttx_get_symbol_list_to_lookup(struct symbol_table_elem *symbol_list[])"},{"line_number":410,"context_line":"{"},{"line_number":411,"context_line":"\t*symbol_list \u003d calloc(1, sizeof(struct symbol_table_elem) * ARRAY_SIZE(nuttx_symbol_list));"},{"line_number":412,"context_line":""},{"line_number":413,"context_line":"\tfor (unsigned int i \u003d 0; i \u003c ARRAY_SIZE(nuttx_symbol_list); i++) {"},{"line_number":414,"context_line":"\t\t(*symbol_list)[i].symbol_name \u003d nuttx_symbol_list[i].name;"}],"source_content_type":"text/x-csrc","patch_set":7,"id":"aa8386b4_76faf281","line":411,"in_reply_to":"7b6e9a75_ffc5fe22","updated":"2023-03-13 20:54:53.000000000","message":"Done","commit_id":"1803b5c05fbb773956eeddd36dd09d14819c9438"}]}
