)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":1001674,"name":"Evgeniy Didin","email":"didin@synopsys.com","username":"EvgeniiDidin"},"change_message_id":"1fd380b4779a95a36359f5b68f13de2148b945d1","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"ea296b75_1165e837","updated":"2023-01-30 10:20:38.000000000","message":"Hello  Antonio,\n\nLGTM, tested on ARC HSDK board, works fine.\nThank you for the changes!","commit_id":"162ca6b6e48c02e023e29a2281e6728927c70ab6"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"599e2da8aff876749bdcf6a03cf00ba2795b3fce","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"113cfb29_d2629187","updated":"2023-02-20 09:59:37.000000000","message":"Tomas, thanks for reporting it.\n\nWe already have version requirements for autoconf\nconfigure.ac:3:AC_PREREQ([2.69])\nand for pkg-config\nconfigure.ac:35:PKG_PROG_PKG_CONFIG([0.23])\nWe can add a requirement for gcc too, but if you agree I would prefer addressing it in a different way to take care, in future, of more compiler dependencies (including clang). In Linux kernel we have a set of files include/linux/compiler*.h to handle compiler dependency stuff. We could make something simpler in OpenOCD.\n\nLinux today requires gcc 5.1 as minimum since 2021/09; before it was 4.9 and till 2020/06 was 4.8. I don\u0027t think that the same constraint should apply to OpenOCD and we could still accept older compilers.\n\nIt should work, but can you check if your old gcc accepts something like this ?\n#if __has_attribute(returns_nonnull)\n#define __returns_nonnull __attribute((returns_nonnull))\n#else\n#define __returns_nonnull\n#endif\nint whatever(int x) __returns_nonnull;\n\nI have checkout the old Linux file compiler-gcc.h for gcc 4.8 and it uses __has_attribute(), so I don\u0027t expect issues using it. Clang supports it too.","commit_id":"ea6a99208e1bc41a878234f7220501e26ec4a7f1"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"change_message_id":"9b9a2a37bbe659a34b395150e04330d97e8e7efd","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"8088528b_d2f25df3","in_reply_to":"113cfb29_d2629187","updated":"2023-02-20 17:18:53.000000000","message":"\u003e It should work, but can you check if your old gcc accepts something like this ?\n\nUnfortunately it does not:\n\n error: \"__has_attribute\" is not defined\n\nI have no objection against requiring e.g. gcc 5.1 as minimum.\nMight be better than some complicated #ifdef branching...","commit_id":"ea6a99208e1bc41a878234f7220501e26ec4a7f1"}],"src/helper/nvp.h":[{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"change_message_id":"e0ec12fc3da76d7a78f0186c4dd844185543b8a9","unresolved":true,"context_lines":[{"line_number":65,"context_line":""},{"line_number":66,"context_line":"/* Name Value Pairs Operations */"},{"line_number":67,"context_line":"const struct nvp *nvp_name2value(const struct nvp *nvp_table, const char *name)"},{"line_number":68,"context_line":"\t__attribute__((returns_nonnull, nonnull(1)));"},{"line_number":69,"context_line":"const struct nvp *nvp_value2name(const struct nvp *nvp_table, int v)"},{"line_number":70,"context_line":"\t__attribute__((returns_nonnull, nonnull(1)));"},{"line_number":71,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":4,"id":"b9367f85_781a6ac9","line":68,"updated":"2023-02-19 11:49:33.000000000","message":"Ancient gcc (4.8.4 in my case) emits warning:\n\n ./src/helper/nvp.h:68:2: error: \u0027returns_nonnull\u0027 attribute directive ignored [-Werror\u003dattributes]","commit_id":"ea6a99208e1bc41a878234f7220501e26ec4a7f1"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"change_message_id":"e0ec12fc3da76d7a78f0186c4dd844185543b8a9","unresolved":true,"context_lines":[{"line_number":67,"context_line":"const struct nvp *nvp_name2value(const struct nvp *nvp_table, const char *name)"},{"line_number":68,"context_line":"\t__attribute__((returns_nonnull, nonnull(1)));"},{"line_number":69,"context_line":"const struct nvp *nvp_value2name(const struct nvp *nvp_table, int v)"},{"line_number":70,"context_line":"\t__attribute__((returns_nonnull, nonnull(1)));"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"void nvp_unknown_command_print(struct command_invocation *cmd, const struct nvp *nvp,"},{"line_number":73,"context_line":"\tconst char *param_name, const char *param_value);"}],"source_content_type":"text/x-csrc","patch_set":4,"id":"4611d02d_96238218","line":70,"updated":"2023-02-19 11:49:33.000000000","message":"Same here.\n\nWould we fix it or just state that such old compiler is not supported?","commit_id":"ea6a99208e1bc41a878234f7220501e26ec4a7f1"}]}
