[Bug middle-end/94218] New: Different __builtin_setjmp/__builtin_longjmp buffer layout is suggested in case of cet.

gsdrtge6h at protonmail dot com gcc-bugzilla@gcc.gnu.org
Wed Mar 18 18:31:19 GMT 2020


https://gcc.gnu.org/bugzilla/show_bug.cgi?id=94218

            Bug ID: 94218
           Summary: Different __builtin_setjmp/__builtin_longjmp buffer
                    layout is suggested in case of cet.
           Product: gcc
           Version: unknown
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: middle-end
          Assignee: unassigned at gcc dot gnu.org
          Reporter: gsdrtge6h at protonmail dot com
  Target Milestone: ---
            Target: ia32

Created attachment 48058
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=48058&action=edit
test for setjmp call

The current implementation layout is to put shadow stack pointer at jb + 16 and
normal stack pointer at jb + 24 when cet is enabled.

        rdsspq  %rax
        movq    %rax, jb_extern+16(%rip)
        movq    %rsp, jb_extern+24(%rip)

When CET is disabled normal stack pointer goes to jb + 16.

It is suggested to switch the locations of shadow stack pointer and normal
stack pointer within the jump buffer.  This way there can be a chance to link
legacy/no-cet __builtin_longjmp() code with cet __builtin_setjmp() code.


More information about the Gcc-bugs mailing list