powerpc: Fix unitialized variable
Commit Message
Hi Adhemerval,
i get the warning: ‘resplen’ may be used uninitialized in this function
[-Wmaybe-uninitialized] on s390, too.
This patch disables Wmaybe-uninitialized warning on s390x with gcc 4.8,
4.9 and gcc from today, but not on power.
Please test if it fixes your warnings too.
Bye Stefan
---
2014-12-11 Stefan Liebler <stli@linux.vnet.ibm.com>
resolv/res_send.c (send_vc): Disable warning resplen may
be used uninitialized.
On 12/11/2014 12:42 AM, Adhemerval Zanella wrote:
> On 10-12-2014 19:22, Joseph Myers wrote:
>> On Wed, 10 Dec 2014, Adhemerval Zanella wrote:
>>
>>> The 'resolv/res_send.c' build with _STRING_ARCH_unaligned not defined
>>> may utilize the local resplen uninitialized. This patch sets it to 0.
>> Do you have an actual path through the function that can result in it
>> being used uninitialized, and where a value of 0 is correct?
>
> I do not, I used as default just to avoid the warning.
>
>>
>> My understanding, as described in
>> <https://sourceware.org/ml/libc-alpha/2014-11/msg00693.html>, was that
>> this is a false positive warning - the variable is never actually used
>> uninitialized, but determining that requires considering the values other
>> variables can have on the paths leading to resplen being used. And since
>> we don't want to add initializations (to installed code as opposed to
>> testcases) that actually require code to be generated simply in order to
>> avoid warnings, that may indicate disabling -Wmaybe-uninitialized around
>> the code that generates the warning.
>>
> I understand the idea of avoid such warning, I will the compiler directives.
>
>
>
Comments
Stefan Liebler <stli@linux.vnet.ibm.com> writes:
> + /* There´s the following warning on S390:
Please avoid non-ascii.
Andreas.
@@ -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´s 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)