diff options
Diffstat (limited to 'libc/sysdeps/i386/i686/strcmp.S')
-rw-r--r-- | libc/sysdeps/i386/i686/strcmp.S | 27 |
1 files changed, 4 insertions, 23 deletions
diff --git a/libc/sysdeps/i386/i686/strcmp.S b/libc/sysdeps/i386/i686/strcmp.S index b53260ffd..6ca6220a0 100644 --- a/libc/sysdeps/i386/i686/strcmp.S +++ b/libc/sysdeps/i386/i686/strcmp.S @@ -19,21 +19,16 @@ #include <sysdep.h> #include "asm-syntax.h" -#include "bp-sym.h" -#include "bp-asm.h" -#define PARMS LINKAGE /* no space for saved regs */ +#define PARMS 4 /* no space for saved regs */ #define STR1 PARMS -#define STR2 STR1+PTR_SIZE +#define STR2 STR1+4 .text -ENTRY (BP_SYM (strcmp)) - ENTER +ENTRY (strcmp) movl STR1(%esp), %ecx movl STR2(%esp), %edx - CHECK_BOUNDS_LOW (%ecx, STR1(%esp)) - CHECK_BOUNDS_LOW (%edx, STR2(%esp)) L(oop): movb (%ecx), %al cmpb (%edx), %al @@ -46,26 +41,12 @@ L(oop): movb (%ecx), %al xorl %eax, %eax /* when strings are equal, pointers rest one beyond the end of the NUL terminators. */ - CHECK_BOUNDS_HIGH (%ecx, STR1(%esp), jbe) - CHECK_BOUNDS_HIGH (%edx, STR2(%esp), jbe) - LEAVE ret -#ifndef __BOUNDED_POINTERS__ L(neq): movl $1, %eax movl $-1, %ecx cmovbl %ecx, %eax -#else -L(neq): movl $1, %eax - ja L(chk) - negl %eax - /* When strings differ, pointers rest on - the unequal characters. */ -L(chk): CHECK_BOUNDS_HIGH (%ecx, STR1(%esp), jb) - CHECK_BOUNDS_HIGH (%edx, STR2(%esp), jb) -#endif - LEAVE ret -END (BP_SYM (strcmp)) +END (strcmp) libc_hidden_builtin_def (strcmp) |