История изменений
Исправление X512, (текущая версия) :
Про какое-либо изменение сегмента стека тут и говорить не приходится.
Где я говорил про изменение «сегмента стека»? Я говорил только что им можно не пользоваться. Вместо него можно использовать стек выделенный с помощью malloc.
И восстанавливаете в longjmp()
Восстановление сделано для полноты примера. Можно и не восстанавливать, просто не вызывайте longjmp(oldCtx, 1);
.
Таких элементов структур, которыми Вы пытаетесь пользоваться, в Linux нет.
Это Haiku 32 bit. В Линуксе вместо ctx[0].regs
будет ctx[0].__jmpbuf
.
Т.е., мы понимаем что реальное смещение в stack segment считается как %rbp:%rsp.
Что за бред? Вы не путаете с 16 битной сегментной моделью (SS:SP)? В 32 и 64 битных режимах линейная память и никаких сегментов нет кроме минимально необходимых (CS, DS).
Исходная версия X512, :
Про какое-либо изменение сегмента стека тут и говорить не приходится.
Где я говорил про изменение «сегмента стека»? Я говорил только что им можно не пользоваться. Вместо него можно использовать стек выделенный с помощью malloc.
И восстанавливаете в longjmp()
Восстановление сделано для полноты примера. Можно и не восстанавливать, просто не вызывайте longjmp(oldCtx, 1);
.
Таких элементов структур, которыми Вы пытаетесь пользоваться, в Linux нет.
Это Haiku 32 bit. В Линуксе вместо ctx[0].regs
будет ctx[0].__jmpbuf
.