Message ID | 20191210204710.4832-4-hjl.tools@gmail.com |
---|---|
State | New |
Headers | show |
Series | i386: Finish CET support | expand |
On 10/12/2019 17:47, H.J. Lu wrote: > diff --git a/sysdeps/unix/sysv/linux/i386/_exit.S b/sysdeps/unix/sysv/linux/i386/_exit.S > index d59c127501..a21d5f69b3 100644 > --- a/sysdeps/unix/sysv/linux/i386/_exit.S > +++ b/sysdeps/unix/sysv/linux/i386/_exit.S > @@ -21,6 +21,7 @@ > .type _exit,@function > .global _exit > _exit: > + _CET_ENDBR > movl 4(%esp), %ebx > > /* Try the new syscall first. */ > Do we still need this for i386? I think the generic implementation should suffice since __NR_exit_group is always support and i386 does define ABORT_INSTRUCTION.
On Tue, Jan 7, 2020 at 2:05 PM Adhemerval Zanella <adhemerval.zanella@linaro.org> wrote: > > > > On 10/12/2019 17:47, H.J. Lu wrote: > > diff --git a/sysdeps/unix/sysv/linux/i386/_exit.S b/sysdeps/unix/sysv/linux/i386/_exit.S > > index d59c127501..a21d5f69b3 100644 > > --- a/sysdeps/unix/sysv/linux/i386/_exit.S > > +++ b/sysdeps/unix/sysv/linux/i386/_exit.S > > @@ -21,6 +21,7 @@ > > .type _exit,@function > > .global _exit > > _exit: > > + _CET_ENDBR > > movl 4(%esp), %ebx > > > > /* Try the new syscall first. */ > > > > Do we still need this for i386? I think the generic implementation > should suffice since __NR_exit_group is always support and > i386 does define ABORT_INSTRUCTION. _exit.S can re removed.
diff --git a/sysdeps/i386/i386-mcount.S b/sysdeps/i386/i386-mcount.S index 32b2a5f0bf..6575b84a1b 100644 --- a/sysdeps/i386/i386-mcount.S +++ b/sysdeps/i386/i386-mcount.S @@ -30,6 +30,7 @@ .type C_SYMBOL_NAME(_mcount), @function .align ALIGNARG(4) C_LABEL(_mcount) + _CET_ENDBR /* Save the caller-clobbered registers. */ pushl %eax pushl %ecx @@ -58,6 +59,7 @@ weak_alias (_mcount, mcount) .type C_SYMBOL_NAME(__fentry__), @function .align ALIGNARG(4) C_LABEL(__fentry__) + _CET_ENDBR /* Save the caller-clobbered registers. */ pushl %eax pushl %ecx diff --git a/sysdeps/i386/nptl/pthread_spin_lock.S b/sysdeps/i386/nptl/pthread_spin_lock.S index 62c72b9063..2876a8b1cf 100644 --- a/sysdeps/i386/nptl/pthread_spin_lock.S +++ b/sysdeps/i386/nptl/pthread_spin_lock.S @@ -15,12 +15,14 @@ License along with the GNU C Library; if not, see <https://www.gnu.org/licenses/>. */ +#include <sysdep.h> #include <lowlevellock.h> .globl pthread_spin_lock .type pthread_spin_lock,@function .align 16 pthread_spin_lock: + _CET_ENDBR mov 4(%esp), %eax 1: LOCK decl 0(%eax) diff --git a/sysdeps/i386/nptl/pthread_spin_unlock.S b/sysdeps/i386/nptl/pthread_spin_unlock.S index d190ca562d..dc412190ae 100644 --- a/sysdeps/i386/nptl/pthread_spin_unlock.S +++ b/sysdeps/i386/nptl/pthread_spin_unlock.S @@ -16,10 +16,13 @@ License along with the GNU C Library; if not, see <https://www.gnu.org/licenses/>. */ +#include <sysdep.h> + .globl pthread_spin_unlock .type pthread_spin_unlock,@function .align 16 pthread_spin_unlock: + _CET_ENDBR movl 4(%esp), %eax movl $1, (%eax) xorl %eax, %eax diff --git a/sysdeps/i386/pthread_spin_trylock.S b/sysdeps/i386/pthread_spin_trylock.S index 0ec09d8b64..c7f94375a7 100644 --- a/sysdeps/i386/pthread_spin_trylock.S +++ b/sysdeps/i386/pthread_spin_trylock.S @@ -16,6 +16,7 @@ License along with the GNU C Library; if not, see <https://www.gnu.org/licenses/>. */ +#include <sysdep.h> #include <pthread-errnos.h> @@ -29,6 +30,7 @@ .type pthread_spin_trylock,@function .align 16 pthread_spin_trylock: + _CET_ENDBR movl 4(%esp), %edx movl $1, %eax xorl %ecx, %ecx diff --git a/sysdeps/unix/sysv/linux/i386/_exit.S b/sysdeps/unix/sysv/linux/i386/_exit.S index d59c127501..a21d5f69b3 100644 --- a/sysdeps/unix/sysv/linux/i386/_exit.S +++ b/sysdeps/unix/sysv/linux/i386/_exit.S @@ -21,6 +21,7 @@ .type _exit,@function .global _exit _exit: + _CET_ENDBR movl 4(%esp), %ebx /* Try the new syscall first. */