powerpc: Fix unitialized variable

Message ID m6c0u2$o15$1@ger.gmane.org
State Superseded
Delegated to: Adhemerval Zanella Netto
Headers

Commit Message

Stefan Liebler Dec. 11, 2014, 11:58 a.m. UTC
  On 12/11/2014 12:54 PM, Andreas Schwab wrote:
> Stefan Liebler <stli@linux.vnet.ibm.com> writes:
>
>> +	/* There´s the following warning on S390:
>
> Please avoid non-ascii.
>
> Andreas.
>
Oh. Ok. Here is it without ´.

---
2014-12-11  Stefan Liebler  <stli@linux.vnet.ibm.com>

	resolv/res_send.c (send_vc): Disable warning resplen may
	be used uninitialized.
  

Comments

Adhemerval Zanella Netto Dec. 11, 2014, 12:34 p.m. UTC | #1
On 11-12-2014 09:58, Stefan Liebler wrote:
> On 12/11/2014 12:54 PM, Andreas Schwab wrote:
>> Stefan Liebler <stli@linux.vnet.ibm.com> writes:
>>
>>> +    /* There´s the following warning on S390:
>>
>> Please avoid non-ascii.
>>
>> Andreas.
>>
> Oh. Ok. Here is it without ´.

I was about to send a similar patch.

>
> ---
> 2014-12-11  Stefan Liebler  <stli@linux.vnet.ibm.com>
>
>     resolv/res_send.c (send_vc): Disable warning resplen may
>     be used uninitialized.
>
> res_send_11122014
>
>
> diff --git a/resolv/res_send.c b/resolv/res_send.c
> index af42b8a..22b322c 100644
> --- a/resolv/res_send.c
> +++ b/resolv/res_send.c
> @@ -96,6 +96,7 @@ static const char rcsid[] = "$BINDId: res_send.c,v 8.38 2000/03/30 20:16:51 vixi
>  #include <string.h>
>  #include <unistd.h>
>  #include <kernel-features.h>
> +#include <libc-internal.h>
>  
>  #if PACKETSZ > 65536
>  #define MAXPACKET       PACKETSZ
> @@ -668,7 +669,17 @@ send_vc(res_state statp,
>  	// int anssiz = *anssizp;
>  	HEADER *anhp = (HEADER *) ans;
>  	struct sockaddr_in6 *nsap = EXT(statp).nsaddrs[ns];
> -	int truncating, connreset, resplen, n;
> +	int truncating, connreset, n;
> +	/* There is the following warning on S390:
> +	   'resplen' may be used uninitialized in this function
> +	   [-Wmaybe-uninitialized]
> +	   This is a false positive according to:
> +	   https://www.sourceware.org/ml/libc-alpha/2014-12/msg00323.html
> +	 */
> +	DIAG_PUSH_NEEDS_COMMENT;
> +	DIAG_IGNORE_NEEDS_COMMENT (5, "-Wmaybe-uninitialized");
> +	int resplen;
> +	DIAG_POP_NEEDS_COMMENT;

I would a comment saying it the compiler emits if architecture does not 
define '_STRING_ARCH_unaligned', instead of just for S390. 

>  	struct iovec iov[4];
>  	u_short len;
>  	u_short len2;
> @@ -788,8 +799,11 @@ send_vc(res_state statp,
>  			   reply.  We can try to use the rest
>  			   of the user-provided buffer.  */
>  #if _STRING_ARCH_unaligned
> +			DIAG_PUSH_NEEDS_COMMENT;
> +			DIAG_IGNORE_NEEDS_COMMENT (5, "-Wmaybe-uninitialized");
>  			*anssizp2 = orig_anssizp - resplen;
>  			*ansp2 = *ansp + resplen;
> +			DIAG_POP_NEEDS_COMMENT;

I am seeing the may be used uninitialized with GCC 4.7 and forward.

>  #else
>  			int aligned_resplen
>  			  = ((resplen + __alignof__ (HEADER) - 1)
  

Patch

diff --git a/resolv/res_send.c b/resolv/res_send.c
index af42b8a..22b322c 100644
--- a/resolv/res_send.c
+++ b/resolv/res_send.c
@@ -96,6 +96,7 @@  static const char rcsid[] = "$BINDId: res_send.c,v 8.38 2000/03/30 20:16:51 vixi
 #include <string.h>
 #include <unistd.h>
 #include <kernel-features.h>
+#include <libc-internal.h>
 
 #if PACKETSZ > 65536
 #define MAXPACKET       PACKETSZ
@@ -668,7 +669,17 @@  send_vc(res_state statp,
 	// int anssiz = *anssizp;
 	HEADER *anhp = (HEADER *) ans;
 	struct sockaddr_in6 *nsap = EXT(statp).nsaddrs[ns];
-	int truncating, connreset, resplen, n;
+	int truncating, connreset, n;
+	/* There is the following warning on S390:
+	   'resplen' may be used uninitialized in this function
+	   [-Wmaybe-uninitialized]
+	   This is a false positive according to:
+	   https://www.sourceware.org/ml/libc-alpha/2014-12/msg00323.html
+	 */
+	DIAG_PUSH_NEEDS_COMMENT;
+	DIAG_IGNORE_NEEDS_COMMENT (5, "-Wmaybe-uninitialized");
+	int resplen;
+	DIAG_POP_NEEDS_COMMENT;
 	struct iovec iov[4];
 	u_short len;
 	u_short len2;
@@ -788,8 +799,11 @@  send_vc(res_state statp,
 			   reply.  We can try to use the rest
 			   of the user-provided buffer.  */
 #if _STRING_ARCH_unaligned
+			DIAG_PUSH_NEEDS_COMMENT;
+			DIAG_IGNORE_NEEDS_COMMENT (5, "-Wmaybe-uninitialized");
 			*anssizp2 = orig_anssizp - resplen;
 			*ansp2 = *ansp + resplen;
+			DIAG_POP_NEEDS_COMMENT;
 #else
 			int aligned_resplen
 			  = ((resplen + __alignof__ (HEADER) - 1)