Исключения C ++, которые не срабатывают на Raspberry Pi при компиляции с gcc-4.8.5, но работают с gcc-4.6.4

Изменить: эта проблема не с моим кодом, она была проверена на многих других проблемах без проблем. Это проблема кросс-компиляции gcc.

Я кросс-компиляции большой программы C ++ с g ++ на Ubuntu x64 для запуска на Raspberry Pi 2. При использовании gcc-4.6.4 все, кажется, работает. При использовании gcc-4.8.5, исключения, кажется, просачиваются и приводят к прерыванию работы программы. Я пробовал минимальный пример перехвата исключений с помощью gcc-4.8.5, и минимальный случай, кажется, работает правильно. Моя настоящая программа намного сложнее, и кажется, что ловушка исключений где-то теряется.

Есть ли какие-то настройки g ++, которые мне не хватает, которые улучшат обработку исключений?

Я собираю наборы инструментов с помощью crosstools-ng 1.22

Редактировать: это, по сути, то, что делает код:

//error_function may be deeper in the stack
void error_function()
{
throw std::runtime_error("This is an error");
}

try
{
error_function();
}
catch (std::exception&)
{
//Not being caught
}

0

Решение

Отключение оптимизации путем установки -O0, похоже, решает проблему. Эта ошибка, по-видимому, специфична для gcc 4.8.5 ARMv6 hard float build.

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector