https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85388
--- Comment #1 from H.J. Lu <hjl.tools at gmail dot com> --- I am testing this patch: diff --git a/gcc/config/i386/cet.h b/gcc/config/i386/cet.h index 9dca41bad2d..309d90ec87c 100644 --- a/gcc/config/i386/cet.h +++ b/gcc/config/i386/cet.h @@ -33,12 +33,14 @@ #ifdef __ASSEMBLER__ # ifdef __IBT__ +# define _CET_NOTRACK notrack # ifdef __x86_64__ # define _CET_ENDBR endbr64 # else # define _CET_ENDBR endbr32 # endif # else +# define _CET_NOTRACK # define _CET_ENDBR # endif diff --git a/libgcc/config/i386/morestack.S b/libgcc/config/i386/morestack.S index 99e65eaaff4..c0cda479806 100644 --- a/libgcc/config/i386/morestack.S +++ b/libgcc/config/i386/morestack.S @@ -543,7 +543,7 @@ __morestack: movq -16(%rbp),%rax # Restore caller's %rax. - call *%r10 # Call our caller! + _CET_NOTRACK call *%r10 # Call our caller! # The caller will return here, as predicted.