]> git.ipfire.org Git - thirdparty/glibc.git/commitdiff
Replace BZERO_P/PIC with USE_AS_BZERO/SHARED
authorH.J. Lu <hjl.tools@gmail.com>
Wed, 26 Aug 2015 15:00:47 +0000 (08:00 -0700)
committerH.J. Lu <hjl.tools@gmail.com>
Wed, 26 Aug 2015 15:01:03 +0000 (08:01 -0700)
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.

ChangeLog
sysdeps/i386/i586/bzero.S
sysdeps/i386/i586/memset.S
sysdeps/i386/i686/bzero.S
sysdeps/i386/i686/memset.S

index a7ff93e3d76a14ea702941dc41e294931dcbfade..5d69000d921835a9ecb37f50caa384ca0b3c0795 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,15 @@
+2015-08-26  H.J. Lu  <hongjiu.lu@intel.com>
+
+       * 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.
+
 2015-08-26  H.J. Lu  <hongjiu.lu@intel.com>
 
        * sysdeps/i386/i586/memcpy.S (MEMPCPY_P): Removed.
index 84d2f709c16d0b462d5b728171dcb6fdba6716b4..2a106719a470321001c019f8d9d061a47d7fae9a 100644 (file)
@@ -1,3 +1,4 @@
+#define USE_AS_BZERO
 #define memset __bzero
 #include <sysdeps/i386/i586/memset.S>
 weak_alias (__bzero, bzero)
index bc26501d10c6f3c8b77ad58eb088273a24d234d6..82f7878d50080e4c3511230c772cabbe1ac741fd 100644 (file)
 #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 */
 #define RTN    PARMS
 #define DEST   RTN
-#if BZERO_P
+#ifdef USE_AS_BZERO
 # define LEN   DEST+4
 #else
 # define CHR   DEST+4
@@ -35,7 +32,7 @@
 #endif
 
         .text
-#if defined PIC && IS_IN (libc) && !BZERO_P
+#if defined SHARED && IS_IN (libc) && !defined USE_AS_BZERO
 ENTRY (__memset_chk)
        movl    12(%esp), %eax
        cmpl    %eax, 16(%esp)
@@ -50,7 +47,7 @@ ENTRY (memset)
        movl    DEST(%esp), %edi
        cfi_rel_offset (edi, 0)
        movl    LEN(%esp), %edx
-#if BZERO_P
+#ifdef USE_AS_BZERO
        xorl    %eax, %eax      /* we fill with 0 */
 #else
        movb    CHR(%esp), %al
@@ -104,7 +101,7 @@ L(2):       shrl    $2, %ecx        /* convert byte count to longword count */
        rep
        stosb
 
-#if !BZERO_P
+#ifndef USE_AS_BZERO
        /* Load result (only if used as memset).  */
        movl DEST(%esp), %eax   /* start address of destination is result */
 #endif
@@ -112,10 +109,13 @@ L(2):     shrl    $2, %ecx        /* convert byte count to longword count */
        cfi_adjust_cfa_offset (-4)
        cfi_restore (edi)
 
-#if BZERO_P
-       ret
-#else
        ret
-#endif
 END (memset)
 libc_hidden_builtin_def (memset)
+
+#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"
+#endif
index 34b0faa91b9643035a1c48f53b489af0abce5bf9..c7898f18e0bf5f5a49cfa203368cf9ba8988754b 100644 (file)
@@ -1,3 +1,4 @@
+#define USE_AS_BZERO
 #define memset __bzero
 #include <sysdeps/i386/i686/memset.S>
 weak_alias (__bzero, bzero)
index b6dbf2a56dc8b7e1e17cc1f4632e77166185bb18..86c30102011378c5817002e6db75e58239a9b5d9 100644 (file)
 #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"