
Странности при компилиране за Renesas RL78 с KPIT
Някой да е настъпвал мотика с неправилно link-ване за Renesas RL78 при работа с KPIT GNU?
Имаме функция от вида:
Кода е от вида на:
Първото извикване работи коректно в повечето случаи.
Следващото извикване, работи полу коректно или изобщо не работи.
Като под
полу коректно разбираме това, че като спрем с брейкпойнт в DoSomething, стринга
argument е до някъде верен, след това в него има глупости.
Изобщо неработи - като спрем с брейкпоинт в DoSomething - стринга
argument е празен - т.е. пълен с нули.
Между двете извиквания няма шанс да омажем паметта.
И вече по-интересното е, че при дизасемблиране, се вижда, че не инициализира стринга в стека от правилното място, а примерно го инициализира от някой друг буфер в програмата, или дори първо го пълни от адресите на няколко променливи, след това го допълва от някой буфер.
Вградени функции като atof, isdigit в един момент също спряха да работят. След неизвестен брои прекомпилирания и мамата го докарвахме да работят понякога.
В общи линии прилича на неправилно link-ване, ама не се сещам какво да му направим.
Работим с Renesas E2 Studio, KPIT последна им версия, и също така пробвахме три версии назад спрямо последната на KPIT.
За съжаление не е ясно как го предизвикахме, защото до известно време вероятно работеше нормално, т.е. може да е имало някакви такива неща, но да не сме ги забелязали и да сме ги отдавали на други бъгове.