Avoid array-bounds warning in testsuite on i586

Message ID mvmh9cc6qyp.fsf@hawking.suse.de
State New, archived
Headers

Commit Message

Andreas Schwab June 29, 2016, 1:54 p.m. UTC
  Florian Weimer <fweimer@redhat.com> writes:

> Or we could cast to uintptr_t before subtracting 1.

That works.

Andreas.

Subject: [PATCH] Avoid array-bounds warning for strncat on i586

	[BZ #20260]
	* sysdeps/x86/bits/string.h (__strncat_g) [!__i686__]: Compute the
	address before the beginning of the string as an integer to avoid
	array-bounds warning.
---
 sysdeps/x86/bits/string.h | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)
  

Comments

Florian Weimer June 29, 2016, 3:01 p.m. UTC | #1
On 06/29/2016 03:54 PM, Andreas Schwab wrote:
> Florian Weimer <fweimer@redhat.com> writes:
>
>> Or we could cast to uintptr_t before subtracting 1.
>
> That works.
>
> Andreas.
>
> Subject: [PATCH] Avoid array-bounds warning for strncat on i586
>
> 	[BZ #20260]
> 	* sysdeps/x86/bits/string.h (__strncat_g) [!__i686__]: Compute the
> 	address before the beginning of the string as an integer to avoid
> 	array-bounds warning.

Looks good to me.

Thanks,
Florian
  

Patch

diff --git a/sysdeps/x86/bits/string.h b/sysdeps/x86/bits/string.h
index 8dfce05..805d33f 100644
--- a/sysdeps/x86/bits/string.h
+++ b/sysdeps/x86/bits/string.h
@@ -1089,7 +1089,6 @@  __strncat_g (char *__dest, const char __src[], size_t __n)
      :  "g" (__n), "0" (0), "1" (__tmp), "2" (__src), "3" (0xffffffff)
      : "memory", "cc");
 # else
-  --__tmp;
   __asm__ __volatile__
     ("1:\n\t"
      "cmpb	$0,1(%1)\n\t"
@@ -1108,7 +1107,7 @@  __strncat_g (char *__dest, const char __src[], size_t __n)
      "3:\n\t"
      "movb	$0,(%1)"
      : "=&q" (__dummy), "=&r" (__tmp), "=&r" (__src), "=&r" (__n)
-     : "1" (__tmp), "2" (__src), "3" (__n)
+     : "1" ((unsigned long) __tmp - 1), "2" (__src), "3" (__n)
      : "memory", "cc");
 #endif
   return __dest;