Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Fix more warnings
  • Loading branch information
Ulrich Drepper committed Dec 4, 2011
1 parent 8a426e1 commit aff2453
Show file tree
Hide file tree
Showing 10 changed files with 267 additions and 29 deletions.
16 changes: 16 additions & 0 deletions ChangeLog
@@ -1,5 +1,21 @@
2011-12-03 Ulrich Drepper <drepper@gmail.com>

* inet/netinet/in.h: Provide versions of IN6_IS_ADDR_UNSPECIFIED,
IN6_IS_ADDR_LOOPBACK, IN6_IS_ADDR_LINKLOCAL, IN6_IS_ADDR_SITELOCAL,
IN6_IS_ADDR_V4MAPPED, IN6_IS_ADDR_V4COMPAT, and IN6_ARE_ADDR_EQUAL
for gcc to avoid warnings.
* inet/Makefile (tests): Add tst-checks.
* inet/tst-checks.c: New file.

* sysdeps/generic/dl-hash.h (_dl_elf_hash): Add attribute to avoid
warning.

* sysdeps/x86_64/multiarch/wmemcmp-c.c: Provide prototype for
__wmemcmp_sse2.

* sysdeps/x86_64/fpu/s_scalbln.c: Removed.
* sysdeps/x86_64/fpu/s_scalbn.c: Removed.

* malloc/mcheck.h: Fix use of incorrect encoding in comment.

2011-12-02 Ulrich Drepper <drepper@gmail.com>
Expand Down
6 changes: 3 additions & 3 deletions inet/Makefile
@@ -1,4 +1,4 @@
# Copyright (C) 1991-2006, 2007, 2009 Free Software Foundation, Inc.
# Copyright (C) 1991-2006, 2007, 2009, 2011 Free Software Foundation, Inc.
# This file is part of the GNU C Library.

# The GNU C Library is free software; you can redistribute it and/or
Expand Down Expand Up @@ -53,7 +53,7 @@ aux := check_pf check_native ifreq

tests := htontest test_ifindex tst-ntoa tst-ether_aton tst-network \
tst-gethnm test-ifaddrs bug-if1 test-inet6_opt tst-ether_line \
tst-getni1 tst-getni2 tst-inet6_rth
tst-getni1 tst-getni2 tst-inet6_rth tst-checks

include ../Rules

Expand Down Expand Up @@ -97,5 +97,5 @@ endif

ifeq (yes,$(build-static-nss))
otherlibs += $(nssobjdir)/libnss_files.a $(resolvobjdir)/libnss_dns.a \
$(resolvobjdir)/libresolv.a
$(resolvobjdir)/libresolv.a
endif
72 changes: 62 additions & 10 deletions inet/netinet/in.h
@@ -1,4 +1,4 @@
/* Copyright (C) 1991-2001, 2003, 2004, 2006, 2007, 2008
/* Copyright (C) 1991-2001, 2003, 2004, 2006, 2007, 2008, 2011
Free Software Foundation, Inc.
This file is part of the GNU C Library.
Expand Down Expand Up @@ -396,44 +396,96 @@ extern uint16_t htons (uint16_t __hostshort)
# endif
#endif

#define IN6_IS_ADDR_UNSPECIFIED(a) \
#ifdef __GNUC__
# define IN6_IS_ADDR_UNSPECIFIED(a) \
(__extension__ \
({ __const struct in6_addr *__a = (__const struct in6_addr *) (a); \
__a->s6_addr32[0] == 0 \
&& __a->s6_addr32[1] == 0 \
&& __a->s6_addr32[2] == 0 \
&& __a->s6_addr32[3] == 0; }))

# define IN6_IS_ADDR_LOOPBACK(a) \
(__extension__ \
({ __const struct in6_addr *__a = (__const struct in6_addr *) (a); \
__a->s6_addr32[0] == 0 \
&& __a->s6_addr32[1] == 0 \
&& __a->s6_addr32[2] == 0 \
&& __a->s6_addr32[3] == htonl (1); }))

# define IN6_IS_ADDR_LINKLOCAL(a) \
(__extension__ \
({ __const struct in6_addr *__a = (__const struct in6_addr *) (a); \
(__a->s6_addr32[0] & htonl (0xffc00000)) == htonl (0xfe800000); }))

# define IN6_IS_ADDR_SITELOCAL(a) \
(__extension__ \
({ __const struct in6_addr *__a = (__const struct in6_addr *) (a); \
(__a->s6_addr32[0] & htonl (0xffc00000)) == htonl (0xfec00000); }))

# define IN6_IS_ADDR_V4MAPPED(a) \
(__extension__ \
({ __const struct in6_addr *__a = (__const struct in6_addr *) (a); \
__a->s6_addr32[0] == 0 \
&& __a->s6_addr32[1] == 0 \
&& __a->s6_addr32[2] == htonl (0xffff); }))

# define IN6_IS_ADDR_V4COMPAT(a) \
(__extension__ \
({ __const struct in6_addr *__a = (__const struct in6_addr *) (a); \
__a->s6_addr32[0] == 0 \
&& __a->s6_addr32[1] == 0 \
&& __a->s6_addr32[2] == 0 \
&& ntohl (__a->s6_addr32[3]) > 1; }))

# define IN6_ARE_ADDR_EQUAL(a,b) \
(__extension__ \
({ __const struct in6_addr *__a = (__const struct in6_addr *) (a); \
__const struct in6_addr *__b = (__const struct in6_addr *) (b); \
__a->s6_addr32[0] == __b->s6_addr32[0] \
&& __a->s6_addr32[1] == __b->s6_addr32[1] \
&& __a->s6_addr32[2] == __b->s6_addr32[2] \
&& __a->s6_addr32[3] == __b->s6_addr32[3]; }))
#else
# define IN6_IS_ADDR_UNSPECIFIED(a) \
(((__const uint32_t *) (a))[0] == 0 \
&& ((__const uint32_t *) (a))[1] == 0 \
&& ((__const uint32_t *) (a))[2] == 0 \
&& ((__const uint32_t *) (a))[3] == 0)

#define IN6_IS_ADDR_LOOPBACK(a) \
# define IN6_IS_ADDR_LOOPBACK(a) \
(((__const uint32_t *) (a))[0] == 0 \
&& ((__const uint32_t *) (a))[1] == 0 \
&& ((__const uint32_t *) (a))[2] == 0 \
&& ((__const uint32_t *) (a))[3] == htonl (1))

#define IN6_IS_ADDR_MULTICAST(a) (((__const uint8_t *) (a))[0] == 0xff)

#define IN6_IS_ADDR_LINKLOCAL(a) \
# define IN6_IS_ADDR_LINKLOCAL(a) \
((((__const uint32_t *) (a))[0] & htonl (0xffc00000)) \
== htonl (0xfe800000))

#define IN6_IS_ADDR_SITELOCAL(a) \
# define IN6_IS_ADDR_SITELOCAL(a) \
((((__const uint32_t *) (a))[0] & htonl (0xffc00000)) \
== htonl (0xfec00000))

#define IN6_IS_ADDR_V4MAPPED(a) \
# define IN6_IS_ADDR_V4MAPPED(a) \
((((__const uint32_t *) (a))[0] == 0) \
&& (((__const uint32_t *) (a))[1] == 0) \
&& (((__const uint32_t *) (a))[2] == htonl (0xffff)))

#define IN6_IS_ADDR_V4COMPAT(a) \
# define IN6_IS_ADDR_V4COMPAT(a) \
((((__const uint32_t *) (a))[0] == 0) \
&& (((__const uint32_t *) (a))[1] == 0) \
&& (((__const uint32_t *) (a))[2] == 0) \
&& (ntohl (((__const uint32_t *) (a))[3]) > 1))

#define IN6_ARE_ADDR_EQUAL(a,b) \
# define IN6_ARE_ADDR_EQUAL(a,b) \
((((__const uint32_t *) (a))[0] == ((__const uint32_t *) (b))[0]) \
&& (((__const uint32_t *) (a))[1] == ((__const uint32_t *) (b))[1]) \
&& (((__const uint32_t *) (a))[2] == ((__const uint32_t *) (b))[2]) \
&& (((__const uint32_t *) (a))[3] == ((__const uint32_t *) (b))[3]))
#endif

#define IN6_IS_ADDR_MULTICAST(a) (((__const uint8_t *) (a))[0] == 0xff)

#if defined __USE_MISC || defined __USE_GNU
/* Bind socket to a privileged IP port. */
Expand Down
173 changes: 173 additions & 0 deletions inet/tst-checks.c
@@ -0,0 +1,173 @@
#include <stdio.h>
#include <string.h>
#include <netinet/in.h>


static int
do_test (void)
{
int result = 0;
char buf[16];
memset (buf, '\0', 16);

if (! IN6_IS_ADDR_UNSPECIFIED (buf))
{
puts ("positive IN6_IS_ADDR_UNSPECIFIED failed");
result = 1;
}
for (size_t i = 0; i < 16; ++i)
{
buf[i] = 1;
if (IN6_IS_ADDR_UNSPECIFIED (buf))
{
printf ("negative IN6_IS_ADDR_UNSPECIFIED with byte %zu failed\n",
i);
result = 1;
}
buf[i] = 0;
}

if (IN6_IS_ADDR_LOOPBACK (buf))
{
puts ("negative IN6_IS_ADDR_UNSPECIFIED failed");
result = 1;
}
buf[15] = 1;
if (! IN6_IS_ADDR_LOOPBACK (buf))
{
puts ("positive IN6_IS_ADDR_UNSPECIFIED failed");
result = 1;
}
buf[15] = 0;

buf[0] = 0xfe;
buf[1] = 0x80;
if (! IN6_IS_ADDR_LINKLOCAL (buf))
{
puts ("positive IN6_IS_ADDR_LINKLOCAL failed");
result = 1;
}
for (size_t i = 1; i < 16; ++i)
{
buf[i] ^= 1;
if (! IN6_IS_ADDR_LINKLOCAL (buf))
{
printf ("positive IN6_IS_ADDR_LINKLOCAL byte %zu failed\n", i);
result = 1;
}
buf[i] ^= 1;
}
buf[0] = 0xff;
buf[1] = 0x80;
if (IN6_IS_ADDR_LINKLOCAL (buf))
{
puts ("negative IN6_IS_ADDR_LINKLOCAL failed");
result = 1;
}
buf[0] = 0xfe;
buf[1] = 0xc0;
if (IN6_IS_ADDR_LINKLOCAL (buf))
{
puts ("negative IN6_IS_ADDR_LINKLOCAL #2 failed");
result = 1;
}

buf[0] = 0xfe;
buf[1] = 0xc0;
if (! IN6_IS_ADDR_SITELOCAL (buf))
{
puts ("positive IN6_IS_ADDR_SITELOCAL failed");
result = 1;
}
for (size_t i = 1; i < 16; ++i)
{
buf[i] ^= 1;
if (! IN6_IS_ADDR_SITELOCAL (buf))
{
printf ("positive IN6_IS_ADDR_SITELOCAL byte %zu failed\n", i);
result = 1;
}
buf[i] ^= 1;
}
buf[0] = 0xff;
buf[1] = 0x80;
if (IN6_IS_ADDR_SITELOCAL (buf))
{
puts ("negative IN6_IS_ADDR_SITELOCAL failed");
result = 1;
}
buf[0] = 0xf8;
buf[1] = 0xc0;
if (IN6_IS_ADDR_SITELOCAL (buf))
{
puts ("negative IN6_IS_ADDR_SITELOCAL #2 failed");
result = 1;
}

memset (buf, '\0', 16);
buf[10] = 0xff;
buf[11] = 0xff;
if (! IN6_IS_ADDR_V4MAPPED (buf))
{
puts ("positive IN6_IS_ADDR_V4MAPPED failed");
result = 1;
}
for (size_t i = 12; i < 16; ++i)
{
buf[i] ^= 1;
if (! IN6_IS_ADDR_V4MAPPED (buf))
{
printf ("positive IN6_IS_ADDR_V4MAPPED byte %zu failed\n", i);
result = 1;
}
buf[i] ^= 1;
}
for (size_t i = 0; i < 12; ++i)
{
buf[i] ^= 1;
if (IN6_IS_ADDR_V4MAPPED (buf))
{
printf ("negative IN6_IS_ADDR_V4MAPPED byte %zu failed\n", i);
result = 1;
}
buf[i] ^= 1;
}

memset (buf, '\0', 16);
for (size_t i = 12; i < 16; ++i)
{
buf[i] ^= 2;
if (! IN6_IS_ADDR_V4COMPAT (buf))
{
printf ("positive IN6_IS_ADDR_V4COMPAT byte %zu failed\n", i);
result = 1;
}
buf[i] ^= 2;
}
for (size_t i = 0; i < 12; ++i)
{
buf[i] ^= 1;
if (IN6_IS_ADDR_V4COMPAT (buf))
{
printf ("negative IN6_IS_ADDR_V4COMPAT byte %zu failed\n", i);
result = 1;
}
buf[i] ^= 1;
}
if (IN6_IS_ADDR_V4COMPAT (buf))
{
puts ("negative IN6_IS_ADDR_V4COMPAT #2 failed");
result = 1;
}
buf[15] = 1;
if (IN6_IS_ADDR_V4COMPAT (buf))
{
puts ("negative IN6_IS_ADDR_V4COMPAT #3 failed");
result = 1;
}

return result;
}

#define TEST_FUNCTION do_test ()
#include "../test-skeleton.c"
4 changes: 4 additions & 0 deletions libidn/ChangeLog
@@ -1,3 +1,7 @@
2011-12-03 Ulrich Drepper <drepper@gmail.com>

* idna.c (idna_to_unicode_4z4z): Remove variable rc.

2008-02-10 Jim Meyering <meyering@redhat.com>

* stringprep.c (stringprep, stringprep_profile): Remove useless
Expand Down
7 changes: 3 additions & 4 deletions libidn/idna.c
@@ -1,5 +1,5 @@
/* idna.c Convert to or from IDN strings.
* Copyright (C) 2002, 2003, 2004 Simon Josefsson
* Copyright (C) 2002, 2003, 2004, 2011 Simon Josefsson
*
* This file is part of GNU Libidn.
*
Expand Down Expand Up @@ -614,7 +614,6 @@ idna_to_unicode_4z4z (const uint32_t * input, uint32_t ** output, int flags)
size_t buflen;
uint32_t *out = NULL;
size_t outlen = 0;
int rc;

*output = NULL;

Expand All @@ -630,8 +629,8 @@ idna_to_unicode_4z4z (const uint32_t * input, uint32_t ** output, int flags)
if (!buf)
return IDNA_MALLOC_ERROR;

rc = idna_to_unicode_44i (start, end - start, buf, &buflen, flags);
/* don't check rc as per specification! */
idna_to_unicode_44i (start, end - start, buf, &buflen, flags);
/* don't check return value as per specification! */

if (out)
{
Expand Down
3 changes: 2 additions & 1 deletion sysdeps/generic/dl-hash.h
@@ -1,5 +1,5 @@
/* Compute hash value for given string according to ELF standard.
Copyright (C) 1995,1996,1997,1998,2003,2005 Free Software Foundation, Inc.
Copyright (C) 1995-1998,2003,2005,2011 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
Expand All @@ -25,6 +25,7 @@
first five operations no overflow is possible so we optimized it a
bit. */
static unsigned int
__attribute__ ((used))
_dl_elf_hash (const char *name_arg)
{
const unsigned char *name = (const unsigned char *) name_arg;
Expand Down
2 changes: 0 additions & 2 deletions sysdeps/x86_64/fpu/s_scalbln.c

This file was deleted.

9 changes: 0 additions & 9 deletions sysdeps/x86_64/fpu/s_scalbn.c

This file was deleted.

0 comments on commit aff2453

Please sign in to comment.