On Thu, 30 Jan 2020, H.J. Lu wrote: > Intel Control-flow Enforcement Technology (CET): > > https://software.intel.com/en-us/articles/intel-sdm > > contains shadow stack (SHSTK) and indirect branch tracking (IBT). When > CET is enabled, ELF object files must be marked with .note.gnu.property > section. Also when IBT is enabled, all indirect branch targets must > start with ENDBR instruction and notrack prefix can be used to disable > IBT on indirect branch. > > This patch series defines 3 macros: > > 1. X86_ENDBR. Defined as endbr32/endbr64 if CET is enabled. > 2. X86_NOTRACK. Defined as notrack prefix if CET is enabled. > 3. X86_GNU_PROPERTY. Add a .note.gnu.property section to mark Intel > CET support if needed. > > and uses them to enable Intel CET. > > Tested with > > $ CC="gcc -Wl,-z,cet-report=error -fcf-protection" ./configure > > in i686, x32 and x86-64 modes on Linux CET machine.
Is it really needed to mark asm flavors that appear to not be written for CPUs ever getting CET support (just seeing the p6/k6/k7 dirs)? Or do we sometimes mix-and-match routines and those get executed on CET enabled HW? Richard. > H.J. Lu (12): > x86: Add GMP_ASM_X86_CET_MACROS to acinclude.m4 > x86-defs.m4: Use X86_GNU_PROPERTY and X86_ENDBR > x86: Append missing ASM_END to asm files > x86_64-defs.m4: Use X86_GNU_PROPERTY and X86_ENDBR > x86_64: Append ASM_END to assembly codes > x86_64/coreibwl/mullo_basecase.asm: Add X86_ENDBR > x86_64/k10/popcount.asm: Prepend X86_NOTRACK to "jmp *%rdx" > mpn/x86_64: Add X86_ENDBR to indirect branch targets > x86/aors_n.asm: Add X86_ENDBR to indirect jump targets > x86/p6: Prepend X86_NOTRACK to "jmp *%reg" > x86/k6: Prepend X86_NOTRACK to "jmp *%reg" > x86/k7: Prepend X86_NOTRACK to indirect branches > > acinclude.m4 | 101 +++++++++++++++++++++++++ > configure.ac | 1 + > mpn/x86/aors_n.asm | 33 ++++++++ > mpn/x86/aorsmul_1.asm | 1 + > mpn/x86/atom/sse2/aorsmul_1.asm | 1 + > mpn/x86/atom/sse2/mul_basecase.asm | 1 + > mpn/x86/atom/sse2/sqr_basecase.asm | 1 + > mpn/x86/bdiv_dbm1c.asm | 1 + > mpn/x86/copyd.asm | 1 + > mpn/x86/copyi.asm | 1 + > mpn/x86/divrem_1.asm | 1 + > mpn/x86/divrem_2.asm | 1 + > mpn/x86/k6/aors_n.asm | 1 + > mpn/x86/k6/aorsmul_1.asm | 3 +- > mpn/x86/k6/divrem_1.asm | 1 + > mpn/x86/k6/k62mmx/copyd.asm | 1 + > mpn/x86/k6/k62mmx/lshift.asm | 1 + > mpn/x86/k6/k62mmx/rshift.asm | 1 + > mpn/x86/k6/mmx/com.asm | 1 + > mpn/x86/k6/mmx/logops_n.asm | 1 + > mpn/x86/k6/mmx/lshift.asm | 1 + > mpn/x86/k6/mmx/popham.asm | 1 + > mpn/x86/k6/mmx/rshift.asm | 1 + > mpn/x86/k6/mod_34lsub1.asm | 1 + > mpn/x86/k6/mul_1.asm | 1 + > mpn/x86/k6/mul_basecase.asm | 3 +- > mpn/x86/k6/pre_mod_1.asm | 1 + > mpn/x86/k6/sqr_basecase.asm | 3 +- > mpn/x86/k7/aors_n.asm | 3 +- > mpn/x86/k7/mmx/com.asm | 1 + > mpn/x86/k7/mmx/copyd.asm | 1 + > mpn/x86/k7/mmx/copyi.asm | 1 + > mpn/x86/k7/mmx/divrem_1.asm | 1 + > mpn/x86/k7/mmx/lshift.asm | 3 +- > mpn/x86/k7/mmx/popham.asm | 1 + > mpn/x86/k7/mmx/rshift.asm | 3 +- > mpn/x86/k7/mod_1_1.asm | 1 + > mpn/x86/k7/mod_1_4.asm | 1 + > mpn/x86/k7/mod_34lsub1.asm | 1 + > mpn/x86/k7/mul_basecase.asm | 3 +- > mpn/x86/k7/sqr_basecase.asm | 3 +- > mpn/x86/lshift.asm | 1 + > mpn/x86/mmx/sec_tabselect.asm | 1 + > mpn/x86/mod_34lsub1.asm | 1 + > mpn/x86/mul_1.asm | 1 + > mpn/x86/mul_basecase.asm | 1 + > mpn/x86/p6/aors_n.asm | 3 +- > mpn/x86/p6/aorsmul_1.asm | 3 +- > mpn/x86/p6/copyd.asm | 1 + > mpn/x86/p6/gcd_11.asm | 1 + > mpn/x86/p6/lshsub_n.asm | 3 +- > mpn/x86/p6/mmx/divrem_1.asm | 1 + > mpn/x86/p6/mod_34lsub1.asm | 1 + > mpn/x86/p6/mul_basecase.asm | 3 +- > mpn/x86/p6/sqr_basecase.asm | 3 +- > mpn/x86/pentium/aors_n.asm | 1 + > mpn/x86/pentium/aorsmul_1.asm | 1 + > mpn/x86/pentium/com.asm | 1 + > mpn/x86/pentium/copyd.asm | 1 + > mpn/x86/pentium/copyi.asm | 1 + > mpn/x86/pentium/logops_n.asm | 1 + > mpn/x86/pentium/lshift.asm | 1 + > mpn/x86/pentium/mmx/lshift.asm | 1 + > mpn/x86/pentium/mmx/mul_1.asm | 1 + > mpn/x86/pentium/mmx/rshift.asm | 1 + > mpn/x86/pentium/mod_34lsub1.asm | 1 + > mpn/x86/pentium/mul_1.asm | 1 + > mpn/x86/pentium/mul_2.asm | 1 + > mpn/x86/pentium/mul_basecase.asm | 1 + > mpn/x86/pentium/rshift.asm | 1 + > mpn/x86/pentium/sqr_basecase.asm | 1 + > mpn/x86/pentium4/copyd.asm | 1 + > mpn/x86/pentium4/copyi.asm | 1 + > mpn/x86/pentium4/mmx/popham.asm | 1 + > mpn/x86/pentium4/sse2/add_n.asm | 1 + > mpn/x86/pentium4/sse2/addlsh1_n.asm | 1 + > mpn/x86/pentium4/sse2/addmul_1.asm | 1 + > mpn/x86/pentium4/sse2/cnd_add_n.asm | 1 + > mpn/x86/pentium4/sse2/cnd_sub_n.asm | 1 + > mpn/x86/pentium4/sse2/divrem_1.asm | 1 + > mpn/x86/pentium4/sse2/mod_1_1.asm | 1 + > mpn/x86/pentium4/sse2/mod_1_4.asm | 1 + > mpn/x86/pentium4/sse2/mod_34lsub1.asm | 1 + > mpn/x86/pentium4/sse2/mul_1.asm | 1 + > mpn/x86/pentium4/sse2/mul_basecase.asm | 1 + > mpn/x86/pentium4/sse2/rsh1add_n.asm | 1 + > mpn/x86/pentium4/sse2/sqr_basecase.asm | 1 + > mpn/x86/pentium4/sse2/sub_n.asm | 1 + > mpn/x86/pentium4/sse2/submul_1.asm | 1 + > mpn/x86/rshift.asm | 1 + > mpn/x86/sec_tabselect.asm | 1 + > mpn/x86/sqr_basecase.asm | 1 + > mpn/x86/udiv.asm | 1 + > mpn/x86/umul.asm | 1 + > mpn/x86/x86-defs.m4 | 6 +- > mpn/x86_64/addaddmul_1msb0.asm | 1 + > mpn/x86_64/aorrlsh1_n.asm | 1 + > mpn/x86_64/aorrlshC_n.asm | 1 + > mpn/x86_64/aorrlsh_n.asm | 1 + > mpn/x86_64/aors_err1_n.asm | 1 + > mpn/x86_64/aors_err2_n.asm | 1 + > mpn/x86_64/aors_err3_n.asm | 1 + > mpn/x86_64/aors_n.asm | 1 + > mpn/x86_64/aorsmul_1.asm | 1 + > mpn/x86_64/atom/addmul_2.asm | 1 + > mpn/x86_64/atom/aorrlsh1_n.asm | 1 + > mpn/x86_64/atom/aorrlsh2_n.asm | 1 + > mpn/x86_64/atom/lshift.asm | 1 + > mpn/x86_64/atom/lshiftc.asm | 1 + > mpn/x86_64/atom/mul_2.asm | 1 + > mpn/x86_64/atom/rsh1aors_n.asm | 1 + > mpn/x86_64/atom/rshift.asm | 1 + > mpn/x86_64/atom/sublsh1_n.asm | 1 + > mpn/x86_64/bd1/addmul_2.asm | 1 + > mpn/x86_64/bd1/hamdist.asm | 13 +++- > mpn/x86_64/bd1/mul_2.asm | 1 + > mpn/x86_64/bd1/mul_basecase.asm | 1 + > mpn/x86_64/bd1/popcount.asm | 25 ++++-- > mpn/x86_64/bd2/gcd_11.asm | 1 + > mpn/x86_64/bd2/gcd_22.asm | 1 + > mpn/x86_64/bd4/gcd_11.asm | 1 + > mpn/x86_64/bdiv_dbm1c.asm | 1 + > mpn/x86_64/bdiv_q_1.asm | 1 + > mpn/x86_64/bt1/aors_n.asm | 1 + > mpn/x86_64/bt1/aorsmul_1.asm | 1 + > mpn/x86_64/bt1/copyd.asm | 1 + > mpn/x86_64/bt1/copyi.asm | 1 + > mpn/x86_64/bt1/gcd_11.asm | 1 + > mpn/x86_64/bt1/mul_1.asm | 1 + > mpn/x86_64/bt1/mul_basecase.asm | 1 + > mpn/x86_64/bt1/sqr_basecase.asm | 1 + > mpn/x86_64/cnd_aors_n.asm | 1 + > mpn/x86_64/com.asm | 1 + > mpn/x86_64/copyd.asm | 1 + > mpn/x86_64/copyi.asm | 1 + > mpn/x86_64/core2/aors_err1_n.asm | 1 + > mpn/x86_64/core2/aors_n.asm | 1 + > mpn/x86_64/core2/aorsmul_1.asm | 1 + > mpn/x86_64/core2/divrem_1.asm | 1 + > mpn/x86_64/core2/gcd_11.asm | 1 + > mpn/x86_64/core2/gcd_22.asm | 1 + > mpn/x86_64/core2/hamdist.asm | 25 ++++-- > mpn/x86_64/core2/logops_n.asm | 1 + > mpn/x86_64/core2/lshift.asm | 1 + > mpn/x86_64/core2/lshiftc.asm | 1 + > mpn/x86_64/core2/mul_basecase.asm | 5 ++ > mpn/x86_64/core2/mullo_basecase.asm | 1 + > mpn/x86_64/core2/popcount.asm | 25 ++++-- > mpn/x86_64/core2/rsh1aors_n.asm | 1 + > mpn/x86_64/core2/rshift.asm | 1 + > mpn/x86_64/core2/sqr_basecase.asm | 1 + > mpn/x86_64/core2/sublshC_n.asm | 1 + > mpn/x86_64/coreibwl/addmul_1.asm | 24 ++++-- > mpn/x86_64/coreibwl/mul_1.asm | 24 ++++-- > mpn/x86_64/coreibwl/mul_basecase.asm | 47 ++++++++---- > mpn/x86_64/coreibwl/mullo_basecase.asm | 59 ++++++++++----- > mpn/x86_64/coreibwl/sqr_basecase.asm | 49 ++++++++---- > mpn/x86_64/coreihwl/addmul_2.asm | 1 + > mpn/x86_64/coreihwl/aors_n.asm | 25 ++++-- > mpn/x86_64/coreihwl/aorsmul_1.asm | 1 + > mpn/x86_64/coreihwl/gcd_22.asm | 1 + > mpn/x86_64/coreihwl/mul_2.asm | 1 + > mpn/x86_64/coreihwl/mul_basecase.asm | 1 + > mpn/x86_64/coreihwl/mullo_basecase.asm | 1 + > mpn/x86_64/coreihwl/redc_1.asm | 1 + > mpn/x86_64/coreihwl/sqr_basecase.asm | 1 + > mpn/x86_64/coreinhm/aorrlsh_n.asm | 1 + > mpn/x86_64/coreinhm/hamdist.asm | 13 +++- > mpn/x86_64/coreinhm/popcount.asm | 25 ++++-- > mpn/x86_64/coreisbr/addmul_2.asm | 1 + > mpn/x86_64/coreisbr/aorrlshC_n.asm | 1 + > mpn/x86_64/coreisbr/aorrlsh_n.asm | 1 + > mpn/x86_64/coreisbr/aors_n.asm | 1 + > mpn/x86_64/coreisbr/cnd_add_n.asm | 1 + > mpn/x86_64/coreisbr/cnd_sub_n.asm | 1 + > mpn/x86_64/coreisbr/mul_1.asm | 1 + > mpn/x86_64/coreisbr/mul_2.asm | 1 + > mpn/x86_64/coreisbr/mul_basecase.asm | 1 + > mpn/x86_64/coreisbr/mullo_basecase.asm | 1 + > mpn/x86_64/coreisbr/rsh1aors_n.asm | 1 + > mpn/x86_64/coreisbr/sqr_basecase.asm | 1 + > mpn/x86_64/div_qr_1n_pi1.asm | 1 + > mpn/x86_64/div_qr_2n_pi1.asm | 1 + > mpn/x86_64/div_qr_2u_pi1.asm | 1 + > mpn/x86_64/dive_1.asm | 1 + > mpn/x86_64/divrem_1.asm | 1 + > mpn/x86_64/divrem_2.asm | 1 + > mpn/x86_64/fastavx/copyd.asm | 1 + > mpn/x86_64/fastavx/copyi.asm | 1 + > mpn/x86_64/fastsse/com-palignr.asm | 1 + > mpn/x86_64/fastsse/com.asm | 1 + > mpn/x86_64/fastsse/copyd-palignr.asm | 1 + > mpn/x86_64/fastsse/copyd.asm | 1 + > mpn/x86_64/fastsse/copyi-palignr.asm | 1 + > mpn/x86_64/fastsse/copyi.asm | 1 + > mpn/x86_64/fastsse/lshift-movdqu2.asm | 1 + > mpn/x86_64/fastsse/lshift.asm | 1 + > mpn/x86_64/fastsse/lshiftc-movdqu2.asm | 1 + > mpn/x86_64/fastsse/lshiftc.asm | 1 + > mpn/x86_64/fastsse/rshift-movdqu2.asm | 1 + > mpn/x86_64/fastsse/sec_tabselect.asm | 1 + > mpn/x86_64/fat/fat_entry.asm | 1 + > mpn/x86_64/gcd_11.asm | 1 + > mpn/x86_64/gcd_22.asm | 1 + > mpn/x86_64/k10/gcd_22.asm | 1 + > mpn/x86_64/k10/hamdist.asm | 1 + > mpn/x86_64/k10/popcount.asm | 5 +- > mpn/x86_64/k8/addmul_2.asm | 1 + > mpn/x86_64/k8/aorrlsh_n.asm | 1 + > mpn/x86_64/k8/bdiv_q_1.asm | 1 + > mpn/x86_64/k8/div_qr_1n_pi1.asm | 1 + > mpn/x86_64/k8/mul_basecase.asm | 8 ++ > mpn/x86_64/k8/mullo_basecase.asm | 12 ++- > mpn/x86_64/k8/mulmid_basecase.asm | 9 +++ > mpn/x86_64/k8/redc_1.asm | 18 +++-- > mpn/x86_64/k8/sqr_basecase.asm | 18 +++-- > mpn/x86_64/logops_n.asm | 1 + > mpn/x86_64/lshift.asm | 1 + > mpn/x86_64/lshiftc.asm | 1 + > mpn/x86_64/lshsub_n.asm | 1 + > mpn/x86_64/missing.asm | 1 + > mpn/x86_64/mod_1_2.asm | 1 + > mpn/x86_64/mod_1_4.asm | 1 + > mpn/x86_64/mod_34lsub1.asm | 28 ++++--- > mpn/x86_64/mode1o.asm | 1 + > mpn/x86_64/mul_1.asm | 1 + > mpn/x86_64/mul_2.asm | 1 + > mpn/x86_64/nano/dive_1.asm | 1 + > mpn/x86_64/pentium4/aors_n.asm | 1 + > mpn/x86_64/pentium4/mod_34lsub1.asm | 1 + > mpn/x86_64/pentium4/rsh1aors_n.asm | 1 + > mpn/x86_64/pentium4/rshift.asm | 1 + > mpn/x86_64/popham.asm | 1 + > mpn/x86_64/rsh1aors_n.asm | 1 + > mpn/x86_64/rshift.asm | 1 + > mpn/x86_64/sec_tabselect.asm | 1 + > mpn/x86_64/sqr_diag_addlsh1.asm | 1 + > mpn/x86_64/sublsh1_n.asm | 1 + > mpn/x86_64/x86_64-defs.m4 | 4 + > mpn/x86_64/zen/aorrlsh_n.asm | 25 ++++-- > mpn/x86_64/zen/mul_basecase.asm | 1 + > mpn/x86_64/zen/mullo_basecase.asm | 1 + > mpn/x86_64/zen/sbpi1_bdiv_r.asm | 1 + > mpn/x86_64/zen/sqr_basecase.asm | 1 + > 244 files changed, 707 insertions(+), 164 deletions(-) > > -- Richard Biener <rguent...@suse.de> SUSE Software Solutions Germany GmbH, Maxfeldstrasse 5, 90409 Nuernberg, Germany; GF: Felix Imendörffer; HRB 36809 (AG Nuernberg) _______________________________________________ gmp-devel mailing list gmp-devel@gmplib.org https://gmplib.org/mailman/listinfo/gmp-devel