Насколько я знаю (и ни в коем случае не цитируйте меня об этом), чтобы получить возвращаемое значение, используя __cyg_profile_func_exit, нам нужно установить наш флаг оптимизации на -O0, iirc, он не работает со степенями оптимизация выше этого из-за того, что -O0 сохраняет возвращаемое значение в ebx, а более высокие флаги оптимизации сохраняют возвращаемое значение в eax; после этого звоню. Таким образом, чтобы избежать гибели ebx с помощью инструментария, мы сохраняем его при входе в функцию и восстанавливаем его при отделении.
Надеюсь, это поможет, удачи.