diff options
author | Khem Raj <kraj@mvista.com> | 2008-10-25 00:58:41 +0000 |
---|---|---|
committer | Khem Raj <kraj@mvista.com> | 2008-10-25 00:58:41 +0000 |
commit | 88be89179ba38f8c330ab981f469a1cd37b85db9 (patch) | |
tree | 4b66978e11bb0a2aafa2b063b3477cabedb3ce58 | |
parent | 33b19ecce8bf44d6f820731932dd89a57e7ea48f (diff) |
Use C implementation of strncmp.
Add a new strncmp testcase.
-rw-r--r-- | libc/string/arm/strncmp.S | 101 | ||||
-rw-r--r-- | test/string/tester.c | 1 |
2 files changed, 1 insertions, 101 deletions
diff --git a/libc/string/arm/strncmp.S b/libc/string/arm/strncmp.S deleted file mode 100644 index 8487639c8..000000000 --- a/libc/string/arm/strncmp.S +++ /dev/null @@ -1,101 +0,0 @@ -/* - * Copyright (c) 2002 ARM Ltd - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the company may not be used to endorse or promote - * products derived from this software without specific prior written - * permission. - * - * THIS SOFTWARE IS PROVIDED BY ARM LTD ``AS IS'' AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL ARM LTD BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED - * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * Adapted for uClibc from NetBSD strncmp.S, version 1.2 2003/04/05 - * by Erik Andersen <andersen@codepoet.org> - */ - -#include <features.h> -#include <bits/arm_asm.h> - -.text -.global strncmp -.type strncmp,%function -.align 4 - -#if defined(THUMB1_ONLY) -.thumb_func -strncmp: - /* if (len == 0) return 0 */ - cmp r2, #0 - bne 1f - mov r0, #0 - bx lr -1: - push {r4} - - /* ip == last src address to compare */ - add r4, r0, r2 -2: - cmp r4, r0 - beq 3f - ldrb r2, [r0] - add r0, r0, #1 - ldrb r3, [r1] - add r1, r1, #1 - cmp r2, #0 - beq 3f - cmp r2, r3 - beq 2b -3: - sub r0, r2, r3 - pop {r4} - bx lr -#else -strncmp: - /* if (len == 0) return 0 */ - cmp r2, #0 - IT(tt, eq) - moveq r0, #0 -#if defined(__USE_BX__) - bxeq lr -#else - moveq pc, lr -#endif - subs r2, r2, #1 - - /* ip == last src address to compare */ - add ip, r0, r2 -1: - ldrb r2, [r0], #1 - ldrb r3, [r1], #1 - cmp ip, r0 - IT(tt, cs) - cmpcs r2, #1 - cmpcs r2, r3 - beq 1b - sub r0, r2, r3 -#if defined(__USE_BX__) - bx lr -#else - mov pc, lr -#endif -#endif - -.size strncmp,.-strncmp - -libc_hidden_weak(strncmp) diff --git a/test/string/tester.c b/test/string/tester.c index ac1b90118..7c8d314dc 100644 --- a/test/string/tester.c +++ b/test/string/tester.c @@ -427,6 +427,7 @@ test_strncmp (void) check (strncmp ("abc", "def", 0) == 0, 13); /* Zero count. */ check (strncmp ("abc", "", (size_t)-1) > 0, 14); /* set sign bit in count */ check (strncmp ("abc", "abc", (size_t)-2) == 0, 15); + check (strncmp ("aa", "ab", (size_t)-1) < 0, 16); } static void |