diff options
author | Liubov Dmitrieva <ldmitrie@sourceware.org> | 2013-08-30 18:37:28 +0400 |
---|---|---|
committer | Liubov Dmitrieva <ldmitrie@sourceware.org> | 2013-10-23 23:51:44 +0400 |
commit | 029183a4ca3f765f63e7b64bc260622f02b04539 (patch) | |
tree | c7f6912d9575e27f691f219ad9437e9af39e016e /sysdeps/x86_64/multiarch/memcpy-ssse3-back.S | |
parent | 01d5454d13d2c21b9a08b28441d37a7ddce089a6 (diff) | |
download | glibc-ldmitrie/intel_mpx.tar.gz glibc-ldmitrie/intel_mpx.tar.xz glibc-ldmitrie/intel_mpx.zip |
Implemented bound check support for string/memory routines for x86_64. ldmitrie/intel_mpx
TODO: Fix bound check support in strcmp-sse2 and implement in strspn, strstr and strcspn.
Diffstat (limited to 'sysdeps/x86_64/multiarch/memcpy-ssse3-back.S')
-rw-r--r-- | sysdeps/x86_64/multiarch/memcpy-ssse3-back.S | 26 |
1 files changed, 24 insertions, 2 deletions
diff --git a/sysdeps/x86_64/multiarch/memcpy-ssse3-back.S b/sysdeps/x86_64/multiarch/memcpy-ssse3-back.S index fc9fcef27d..16b4e680a1 100644 --- a/sysdeps/x86_64/multiarch/memcpy-ssse3-back.S +++ b/sysdeps/x86_64/multiarch/memcpy-ssse3-back.S @@ -27,7 +27,11 @@ #include "asm-syntax.h" #ifndef MEMCPY -# define MEMCPY __memcpy_ssse3_back +# if defined __CHKP__ || defined __CHKWR__ +# define MEMCPY chkp_memcpy_nobnd +# else +# define MEMCPY __memcpy_ssse3_back +# endif # define MEMCPY_CHK __memcpy_chk_ssse3_back #endif @@ -48,7 +52,7 @@ ud2 .section .text.ssse3,"ax",@progbits -#if !defined USE_AS_BCOPY +#if !defined USE_AS_BCOPY && defined MEMCPY_CHK ENTRY (MEMCPY_CHK) cmpq %rdx, %rcx jb HIDDEN_JUMPTARGET (__chk_fail) @@ -56,6 +60,15 @@ END (MEMCPY_CHK) #endif ENTRY (MEMCPY) +#ifdef __CHKP__ + testq %rdx, %rdx + jz L(NoEntryCheck) + bndcl (%rdi), %bnd0 + bndcu -1(%rdi, %rdx), %bnd0 + bndcl (%rsi), %bnd1 + bndcu -1(%rsi, %rdx), %bnd1 +#endif + mov %rdi, %rax #ifdef USE_AS_MEMPCPY add %rdx, %rax @@ -87,6 +100,15 @@ L(bk_write): BRANCH_TO_JMPTBL_ENTRY (L(table_144_bytes_bwd), %rdx, 4) #endif +#ifdef __CHKP__ +L(NoEntryCheck): + mov %rdi, %rax +# ifdef USE_AS_MEMPCPY + add %rdx, %rax +# endif + ret +#endif + ALIGN (4) L(144bytesormore): |