LINUX.ORG.RU

История изменений

Исправление 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.