Насколько я понимаю, сегментированные стеки создаются с поддержкой компилятора, поэтому всякий раз, когда функция, работающая в сегментированном стеке, вызывает другую функцию, if сначала проверяет, достаточно ли в стеке места для кадра стека для этой новой функции. И если это не так, к этой функции подключается другой сегментированный стек, и код переходит к этой функции.
Но работает ли это, если, например, у меня запущено волокно, и я вызываю другую функцию из другой общей (или скомпилированной в неразделяемый объектный файл) библиотеки, которая не была скомпилирована с параметром -fsplit-stack
? Как функции в этой библиотеке узнают, что им нужно будет проверить, достаточно ли места в сегментированном стеке для продолжения работы?
Интересуют только реализации clang и gcc (и, в частности, с контекстом boost), спасибо!