nanorobot 6 27 ноября, 2018 Опубликовано 27 ноября, 2018 · Жалоба Перешел на линкс минт 19, до этого была 18. Имею набор проблем, среди них много раз ранее выполнявшаяся, и никогда не вызывавшая проблем, сборка OpenOCD. Сейчас make завершается с ошибками: src/svf/svf.c: In function ‘svf_read_command_from_file’: src/svf/svf.c:663:7: error: this statement may fall through [-Werror=implicit-fallthrough=] i = -1; ~~^~~~ src/svf/svf.c:664:4: note: here case '\r': ^~~~ src/svf/svf.c:667:8: error: this statement may fall through [-Werror=implicit-fallthrough=] if (!cmd_pos) ^ src/svf/svf.c:669:4: note: here default: ^~~~~~~ cc1: all warnings being treated as errors гугл что то по этой теме находит, но проблему решить не удается. ЕЩЕ: сборка buildroot для платы SL-ATSAMA5D3 также завершается с ошибкой ранее не встречавшейся. ACC conformance test FAILED Догадываюсь что проблемы родственные, какие то несовместимости с новым GCC, но так бывало (со сборкой билдрут) и ранее, но совсем то в тупик еще не заводило. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
arhiv6 20 27 ноября, 2018 Опубликовано 27 ноября, 2018 · Жалоба Какая версия gcc, OpenOCD, buildroot? Пробуйте: https://sourceforge.net/p/openocd/mailman/message/36339070/ https://git.busybox.net/buildroot/commit/?id=1474b369638e84090d3f6c2b51a5269076d00be5 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
nanorobot 6 27 ноября, 2018 Опубликовано 27 ноября, 2018 (изменено) · Жалоба 9 minutes ago, arhiv6 said: Какая версия gcc, OpenOCD, buildroot? Пробуйте: https://sourceforge.net/p/openocd/mailman/message/36339070/ https://git.busybox.net/buildroot/commit/?id=1474b369638e84090d3f6c2b51a5269076d00be5 Buildroot 2013-11 штатный от стартеркит.ру gcc version 7.3.0 OpenOCD 0.10.0-10 Изменено 27 ноября, 2018 пользователем nanorobot Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
nanorobot 6 27 ноября, 2018 Опубликовано 27 ноября, 2018 · Жалоба 13 minutes ago, arhiv6 said: https://git.busybox.net/buildroot/commit/?id=1474b369638e84090d3f6c2b51a5269076d00be5 про ucl.mk видел. В моем билдруте такого файла нет. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
magvrn 1 27 ноября, 2018 Опубликовано 27 ноября, 2018 · Жалоба Судя из описания openocd-build/README.md они на 7.3 сборку не тестировали Цитата ... build environments based on GCC 7.2 ... Buildroot 2013-11 соответственно тоже не будет собираться, ставьте пакеты с gcc той версии что были в минт 18, ну или хотя бы 6.* Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Grizzly 0 27 ноября, 2018 Опубликовано 27 ноября, 2018 · Жалоба Это из-за отсутствия break в switch. Пропатчите систему сборки openocd, добавив -Wno-error=implicit-fallthrough= https://developers.redhat.com/blog/2017/03/10/wimplicit-fallthrough-in-gcc-7/ Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
nanorobot 6 28 ноября, 2018 Опубликовано 28 ноября, 2018 · Жалоба 6 hours ago, Grizzly said: Это из-за отсутствия break в switch. Пропатчите систему сборки openocd, добавив -Wno-error=implicit-fallthrough= https://developers.redhat.com/blog/2017/03/10/wimplicit-fallthrough-in-gcc-7/ Спасибо, получилось. Еще пару раз пришлось makefile поправить аналогичным образом. Как оказалось, GCC сам в листинге подсказку дает, надо только увидеть. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
andrew_b 17 28 ноября, 2018 Опубликовано 28 ноября, 2018 · Жалоба 9 часов назад, Grizzly сказал: Пропатчите систему сборки openocd, добавив Это неправильно. Надо патчить исходник и патч отправить в апстрим, если там ещё не исправлено. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
one_eight_seven 6 28 ноября, 2018 Опубликовано 28 ноября, 2018 · Жалоба 1 hour ago, andrew_b said: Это неправильно. Надо патчить исходник и патч отправить в апстрим, если там ещё не исправлено. Почему неправильно? А если fallthrough и нужен в том месте? Там же написано в логах, что не собирается из-за того, что уровень всех warning'ов повышен до error'ов. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
andrew_b 17 28 ноября, 2018 Опубликовано 28 ноября, 2018 · Жалоба 22 минуты назад, one_eight_seven сказал: Почему неправильно? Потому что надо править некорректный код, а не городить пути объезда. 23 минуты назад, one_eight_seven сказал: А если fallthrough и нужен в том месте? У автора темы произошёл переход на новую версию дистрибутива. Соответственно, обновился компилятор. Наверняка используется gcc. У gcc есть __attribute__((fallthrough)). Вот это и надо вписать там, где нужно, чтобы не было варнингов. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
one_eight_seven 6 28 ноября, 2018 Опубликовано 28 ноября, 2018 · Жалоба Quote Вот это и надо вписать там, где нужно, чтобы не было варнингов. Clang и ICC это тоже поддерживают? Или городить #ifdef __GNUC__, и т.п.? отсутствие break - это не есть неправильный код. Это задокументированная возможность языка. Нередко этим пользуются (правда, есть правила, что такое всегда должно сопровождаться комментариями), но мне в код лезть не хочется. Если признано авторами, что в этом месте кода именно ошибка - это одно, если же это результат того, что в новом gcc появился warning на falltrhough, а в системе сборки все предурпеждения повышаются до ошибок, то это не ошибка в коде. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Grizzly 0 28 ноября, 2018 Опубликовано 28 ноября, 2018 · Жалоба Я согласен, что патчить исходники - это правильное решение, но в данном случае можно отключить ошибку. Код корректный в данном случае, и сам разработчик считает, что ошибка, а что верное использование. Тем более, это релиз, а не сборка для себя debug для отладки. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Kabdim 0 28 ноября, 2018 Опубликовано 28 ноября, 2018 · Жалоба 36 минут назад, andrew_b сказал: Потому что надо править некорректный код, а не городить пути объезда. Проблема в том что в чистом С в отличии от плюсов нет [[fallthrough]]. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
x893 61 28 ноября, 2018 Опубликовано 28 ноября, 2018 · Жалоба Для понимания напишите case 'A': case "B': // actions ... break; а потом case 'A': // actions ... case "B': // actions ... break; И будет вам счастье Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 143 28 ноября, 2018 Опубликовано 28 ноября, 2018 · Жалоба 13 минут назад, Kabdim сказал: Проблема в том что в чистом С в отличии от плюсов нет [[fallthrough]]. Конкретно в ГЦЦ есть штатный путь подавления этого предупреждения: case 'G': flags.uppercase = 1; // fall through - это для ГЦЦ // no break - это для эклипсы case 'g': Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться