C ++ неопределенная ссылка на `typeinfo для int 'при броске исключения без стандартной библиотекиC++

Программы на C++. Форум разработчиков
Anonymous
C ++ неопределенная ссылка на `typeinfo для int 'при броске исключения без стандартной библиотеки

Сообщение Anonymous »

Для проекта, над которым я работаю, я пишу мини -стандартную замену библиотеки. Для этого я сейчас пытаюсь реализовать исключения. Итак, я написал следующий минимальный код < /p>
int memory[4];

void* __cxa_allocate_exception(long unsigned int thrown_size) throw()
{
return memory;
}

void __cxa_free_exception(void * thrown_exception) throw()
{

}

void __cxa_throw(void* thrown_exception, void * tinfo, void (*dest)(void*))
{
while(1){};
}

extern "C" void _start()
{
throw 2;
}
< /code>
Однако при составлении этого с -nostdlib я получаю следующую ошибку < /p>
undefined reference to `typeinfo for int'
< /code>
Одна из самых больших вещей, выталкивающей меня здесь, это то, что является «typeinfo для int» ??? Это не имя функции, переменная и т. Д., Поскольку в ней есть места. Проверка вывода компилятора в Godbolt показывает следующее < /p>
mov esi, OFFSET FLAT:typeinfo for int
< /code>
Так что я полностью потерян в отношении того, что на самом деле есть! < /p>
Кроме Кажется, не работает для меня. Я поместил вышеупомянутый код в Godbolt, со следующими флагами компилятора < /p>
-nostdlib -frtti -static-libstdc++
< /code>
Однако я все еще получаю такую ​​же ошибку, и я не уверен, почему. Для справки, вот код на Godbolt, показывающий указанную ошибку.

Подробнее здесь: https://stackoverflow.com/questions/794 ... without-th

Вернуться в «C++»