diff options
author | H.J. Lu <hjl.tools@gmail.com> | 2015-08-26 08:00:47 -0700 |
---|---|---|
committer | H.J. Lu <hjl.tools@gmail.com> | 2015-08-26 08:01:03 -0700 |
commit | f6b71eada3cfbaa13dd4019978e9bd29055bad9f (patch) | |
tree | 5406b9f599a4a4b3ac86b14defc4d795e32ff961 /sysdeps/i386/i686/memset.S | |
parent | b6e19c4bdcb6b7093a3913ce26f6ec50b9a6e0dc (diff) | |
download | glibc-f6b71eada3cfbaa13dd4019978e9bd29055bad9f.tar.gz glibc-f6b71eada3cfbaa13dd4019978e9bd29055bad9f.tar.xz glibc-f6b71eada3cfbaa13dd4019978e9bd29055bad9f.zip |
Replace BZERO_P/PIC with USE_AS_BZERO/SHARED
Replace BZERO_P with USE_AS_BZERO in i586/i686 memset.S to support i386 multi-arch memset. Also we should check SHARED not PIC for libc.so since libc.a may be compiled with PIC. * sysdeps/i386/i586/bzero.S (USE_AS_BZERO): New. * sysdeps/i386/i686/bzero.S (USE_AS_BZERO): Likewise. * sysdeps/i386/i586/memset.S (BZERO_P): Removed. Check USE_AS_BZERO/SHARED instead of BZERO_P/PIC. (__memset_zero_constant_len_parameter): New. * sysdeps/i386/i686/memset.S (BZERO_P): Removed. Check USE_AS_BZERO/SHARED instead of BZERO_P/PIC. (__memset_zero_constant_len_parameter): Don't define if __memset_chk or USE_AS_BZERO are defined.
Diffstat (limited to 'sysdeps/i386/i686/memset.S')
-rw-r--r-- | sysdeps/i386/i686/memset.S | 20 |
1 files changed, 7 insertions, 13 deletions
diff --git a/sysdeps/i386/i686/memset.S b/sysdeps/i386/i686/memset.S index b6dbf2a56d..86c3010201 100644 --- a/sysdeps/i386/i686/memset.S +++ b/sysdeps/i386/i686/memset.S @@ -21,11 +21,8 @@ #include <sysdep.h> #include "asm-syntax.h" -/* BEWARE: `#ifdef memset' means that memset is redefined as `bzero' */ -#define BZERO_P (defined memset) - #define PARMS 4+4 /* space for 1 saved reg */ -#if BZERO_P +#ifdef USE_AS_BZERO # define DEST PARMS # define LEN DEST+4 #else @@ -36,7 +33,7 @@ #endif .text -#if defined PIC && IS_IN (libc) && !BZERO_P +#if defined SHARED && IS_IN (libc) && !defined USE_AS_BZERO ENTRY_CHK (__memset_chk) movl 12(%esp), %eax cmpl %eax, 16(%esp) @@ -50,7 +47,7 @@ ENTRY (memset) cfi_adjust_cfa_offset (4) movl DEST(%esp), %edx movl LEN(%esp), %ecx -#if BZERO_P +#ifdef USE_AS_BZERO xorl %eax, %eax /* fill with 0 */ #else movzbl CHR(%esp), %eax @@ -74,7 +71,7 @@ ENTRY (memset) 2: movl %ecx, %edx shrl $2, %ecx andl $3, %edx -#if !BZERO_P +#ifndef USE_AS_BZERO imul $0x01010101, %eax #endif rep @@ -84,22 +81,19 @@ ENTRY (memset) stosb 1: -#if !BZERO_P +#ifndef USE_AS_BZERO movl DEST(%esp), %eax /* start address of destination is result */ #endif popl %edi cfi_adjust_cfa_offset (-4) cfi_restore (edi) -#if BZERO_P - ret -#else ret -#endif END (memset) libc_hidden_builtin_def (memset) -#if defined PIC && IS_IN (libc) && !BZERO_P +#if defined SHARED && IS_IN (libc) && !defined __memset_chk \ + && !defined USE_AS_BZERO strong_alias (__memset_chk, __memset_zero_constant_len_parameter) .section .gnu.warning.__memset_zero_constant_len_parameter .string "memset used with constant zero length parameter; this could be due to transposed parameters" |