Перейти к содержанию
    

Не могу собрать OpenOCD. Linux Mint 19

Перешел на линкс минт 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, но так бывало (со сборкой билдрут) и ранее, но совсем то  в тупик еще не заводило.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

9 minutes ago, arhiv6 said:

Buildroot 2013-11   штатный от стартеркит.ру

 

gcc version 7.3.0
OpenOCD

  0.10.0-10

 

Изменено пользователем nanorobot

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

13 minutes ago, arhiv6 said:

про ucl.mk видел. В моем билдруте такого файла нет.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Судя из описания openocd-build/README.md они на 7.3 сборку не тестировали

Цитата

... build environments based on GCC 7.2 ...

Buildroot 2013-11 соответственно тоже не будет собираться, ставьте пакеты с gcc той версии что были в минт 18, ну или хотя бы 6.*

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Это из-за отсутствия break в switch. Пропатчите систему сборки openocd, добавив 

-Wno-error=implicit-fallthrough=

https://developers.redhat.com/blog/2017/03/10/wimplicit-fallthrough-in-gcc-7/

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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 сам в листинге подсказку дает, надо только увидеть.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

9 часов назад, Grizzly сказал:

Пропатчите систему сборки openocd, добавив 

Это неправильно. Надо патчить исходник и патч отправить в апстрим, если там ещё не исправлено.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 hour ago, andrew_b said:

Это неправильно. Надо патчить исходник и патч отправить в апстрим, если там ещё не исправлено.

Почему неправильно? А если fallthrough и нужен в том месте?
Там же написано в логах, что не собирается из-за того, что уровень всех warning'ов повышен до error'ов.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

22 минуты назад, one_eight_seven сказал:

Почему неправильно?

Потому что надо править некорректный код, а не городить пути объезда.

23 минуты назад, one_eight_seven сказал:

А если fallthrough и нужен в том месте?

У автора темы произошёл переход на новую версию дистрибутива. Соответственно, обновился компилятор. Наверняка используется gcc. У gcc есть __attribute__((fallthrough)). Вот это и надо вписать там, где нужно, чтобы не было варнингов.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Quote

Вот это и надо вписать там, где нужно, чтобы не было варнингов.

Clang и ICC это тоже поддерживают? Или городить #ifdef __GNUC__, и т.п.?
отсутствие break - это не есть неправильный код. Это задокументированная возможность языка. Нередко этим пользуются (правда, есть правила, что такое всегда должно сопровождаться комментариями), но мне в код лезть не хочется. Если признано авторами, что в этом месте кода именно ошибка - это одно, если же это результат того, что в новом gcc появился warning на falltrhough, а в системе сборки все предурпеждения повышаются до ошибок, то это не ошибка в коде.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я согласен, что патчить исходники - это правильное решение, но в данном случае можно отключить ошибку. Код корректный в данном случае, и сам разработчик считает, что ошибка, а что верное использование. Тем более, это релиз, а не сборка для себя debug для отладки.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

36 минут назад, andrew_b сказал:

Потому что надо править некорректный код, а не городить пути объезда.

Проблема в том что в чистом С в отличии от плюсов нет [[fallthrough]].

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для понимания напишите 

case 'A':

case "B':

     // actions ...

     break;

а потом

case 'A':

     // actions ...

case "B':

     // actions ...

     break;

И будет вам счастье

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

13 минут назад, Kabdim сказал:

Проблема в том что в чистом С в отличии от плюсов нет [[fallthrough]].

Конкретно в ГЦЦ есть штатный путь подавления этого предупреждения:

            case 'G':
                flags.uppercase = 1;
                // fall through - это для ГЦЦ
                // no break  - это для эклипсы
            case 'g':
 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...