В настоящее время я пишу обработчик сигналов для ARM, чтобы предоставить как можно больше отладочной информации.В целях тестирования я вызываю разные бедствия.Получаемый мной сигнал SIGFPE
, как и ожидалось, но si_code отличается от того, что я ожидал.Мне интересно, почему si_code для целочисленного деления с нулем установлено на SI_TKILL
вместо FPE_INTDIV
или любого другого SIGFPE
si_code на ARM.
Следующая функция используется для вызова ошибки:
int divide_by_zero()
{
int c = 1;
int b = 0;
return c / b;
}
Это поведение по умолчанию?Сокращены ли si_codes на ARM?
Я использую компилятор arm-linux-gcc для цели, предоставляемой Buildroot.