From 2daff75bab89a597b2a29bc6f3c7f88e12352355 Mon Sep 17 00:00:00 2001 From: "David S. Miller" Date: Sat, 20 Feb 2010 13:42:07 -0800 Subject: sparc: Fix v9 memchr with long buffer lengths. test-memchr fails on 32-bit sparc with v9 optimized memchr because it uses signed branch comparisons on the buffer pointers. --- ChangeLog | 3 +++ sysdeps/sparc/sparc64/memchr.S | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index cd1be57595..8b91c5f9ea 100644 --- a/ChangeLog +++ b/ChangeLog @@ -3,6 +3,9 @@ * sysdeps/sparc/sparc32/dl-machine.h (elf_machine_runtime_setup): Adjust rela->r_offset by l->l_addr when rewriting PLT. + * sysdeps/sparc/sparc64/memchr.S: Use unsigned branch on greater to + test end of buffer. + 2009-02-20 Joseph Myers * sysdeps/sparc/sparc64/dl-machine.h (elf_machine_runtime_setup): diff --git a/sysdeps/sparc/sparc64/memchr.S b/sysdeps/sparc/sparc64/memchr.S index 4f13cb5706..ab1666bfb5 100644 --- a/sysdeps/sparc/sparc64/memchr.S +++ b/sysdeps/sparc/sparc64/memchr.S @@ -96,7 +96,7 @@ ENTRY(__memchr) * %o4 = value XOR c */ 2: cmp %o0, %o2 /* IEU1 Group */ - bg,pn %XCC, 11f /* CTI */ + bgu,pn %XCC, 11f /* CTI */ ldxa [%o0] ASI_PNF, %o3 /* Load */ sub %o4, %g1, %o5 /* IEU0 Group */ add %o0, 8, %o0 /* IEU1 */ -- cgit 1.4.1