Просто чтобы отметить, я прочитал questions и прочитал сообщения в блоге, и я также ссылался на ABI.
Я полностью не понимаю, как это взаимодействует с LLVM EH intrinsics. Страница LLVM EH дает очень смутный обзор - не совсем контрольный список "Реализация X, Y, Z".
Страница LLVM EH ссылается на Itanium ABI напрямую. Это означало бы, что LLVM поддерживает только исключения Itanium ABI. Но я уже знаю, что Clang поддерживает ARM и развивает поддержку Microsoft ABI. Так точно, насколько конкретна реализация LLVM EH для Itanium ABI?
Когда вы ссылаетесь на материал _Unwind, определенный Itanium ABI, это обязано быть предоставлено бэкэндом или я должен реализовать его для себя?
Я также заметил, что LLVM IR, созданный Clang, не раскрывает каких-либо языковых спецификаций, любых фреймов исключений, таблиц исключений или чего-либо подобного. В этом случае, как LLVM умеет генерировать данные, специфичные для языка?
Короче говоря, как именно вы переходите из LSDA, EH-контекстов и от _Unwind_RaiseException
до landingpad
и resume
?
Изменить: просто для справки, я собираюсь выполнить JIT-код в Windows.