Replace MEMPCPY_P/PIC with USE_AS_MEMPCPY/SHARED

Replace MEMPCPY_P with USE_AS_MEMPCPY in i586 memcpy.S to support i386
multi-arch memcpy.  Also we should check SHARED not PIC for libc.so
since libc.a may be compiled with PIC.

	* sysdeps/i386/i586/memcpy.S (MEMPCPY_P): Removed.
	Check USE_AS_MEMPCPY/SHARED instead of MEMPCPY_P/PIC.
	* sysdeps/i386/i586/mempcpy.S (USE_AS_MEMPCPY): New.
This commit is contained in:
H.J. Lu 2015-08-26 07:59:15 -07:00
parent 38d22f9f48
commit b6e19c4bdc
3 changed files with 10 additions and 8 deletions

View File

@ -1,3 +1,9 @@
2015-08-26 H.J. Lu <hongjiu.lu@intel.com>
* sysdeps/i386/i586/memcpy.S (MEMPCPY_P): Removed.
Check USE_AS_MEMPCPY/SHARED instead of MEMPCPY_P/PIC.
* sysdeps/i386/i586/mempcpy.S (USE_AS_MEMPCPY): New.
2015-08-26 H.J. Lu <hongjiu.lu@intel.com>
* sysdeps/x86/Makefile [$(subdir) == elf] (CFLAGS-.os,

View File

@ -20,11 +20,6 @@
#include <sysdep.h>
#include "asm-syntax.h"
/* BEWARE: `#ifdef memcpy' means that memcpy is redefined as `mempcpy',
and the return value is the byte after the last one copied in
the destination. */
#define MEMPCPY_P (defined memcpy)
#define PARMS 4+8 /* space for 2 saved regs */
#define RTN PARMS
#define DEST RTN
@ -105,13 +100,13 @@ L(3): movl 28(%edi), %edx
/* Correct extra loop counter modification. */
L(2): addl $32, %ecx
#if !MEMPCPY_P
#ifndef USE_AS_MEMPCPY
movl DEST(%esp), %eax
#endif
L(1): rep; movsb
#if MEMPCPY_P
#ifdef USE_AS_MEMPCPY
movl %edi, %eax
#endif
@ -124,6 +119,6 @@ L(1): rep; movsb
ret
END (memcpy)
#if !MEMPCPY_P
#ifndef USE_AS_MEMPCPY
libc_hidden_builtin_def (memcpy)
#endif

View File

@ -1,3 +1,4 @@
#define USE_AS_MEMPCPY
#define memcpy __mempcpy
#define __memcpy_chk __mempcpy_chk
#include <sysdeps/i386/i586/memcpy.S>