This is the mail archive of the
libc-alpha@sources.redhat.com
mailing list for the glibc project.
Re: [letmein <letmein@erols.com>] fix for bug#2110
- To: Andreas Jaeger <aj at suse dot de>
- Subject: Re: [letmein <letmein@erols.com>] fix for bug#2110
- From: "Joseph S. Myers" <jsm28 at cam dot ac dot uk>
- Date: Sun, 13 May 2001 13:05:18 +0100 (BST)
- cc: Alex Davis <alex14641 at yahoo dot com>, <libc-alpha at sources dot redhat dot com>, <letmein at erols dot com>
On 13 May 2001, Andreas Jaeger wrote:
> The appended bug report could be qualified as "GCC should not warn
> about such stuff in system headers especially when using
> __extension__" - and AFAIK GCC 3.0 will not warn about it.
>
> But since the patch just adds some casts and helps to reduce noise for
> GCC 2.95.x, I propose to add it.
>
> Any objections or comments?
Ulrich rejected this before
<URL:http://sources.redhat.com/ml/libc-alpha/1999-08/msg00113.html>. But
if you want to fix the problem, I've attached the patch I've been using
since then (which is more thorough - handling <bits/string.h> as well -
and removes some __extension__s that are no longer needed after the casts
are added).
If you want to fix this sort of thing, could you also fix the "comma at
end of enumerator list" warnings now generated by <bits/confname.h> with
-pedantic? (Shown up by GCC bootstrap with 2.95.x as bootstrap compiler.)
--
Joseph S. Myers
jsm28@cam.ac.uk
--- glibc.orig/string/bits/string2.h Thu Jun 29 19:40:24 2000
+++ glibc/string/bits/string2.h Tue Sep 19 11:15:37 2000
@@ -122,54 +122,54 @@
{ \
case 15: \
__u->__ui = __c * 0x01010101; \
- __u = __extension__ ((void *) __u + 4); \
+ __u = (void *) ((char *) __u + 4); \
case 11: \
__u->__ui = __c * 0x01010101; \
- __u = __extension__ ((void *) __u + 4); \
+ __u = (void *) ((char *) __u + 4); \
case 7: \
__u->__ui = __c * 0x01010101; \
- __u = __extension__ ((void *) __u + 4); \
+ __u = (void *) ((char *) __u + 4); \
case 3: \
__u->__usi = (unsigned short int) __c * 0x0101; \
- __u = __extension__ ((void *) __u + 2); \
+ __u = (void *) ((char *) __u + 2); \
__u->__uc = (unsigned char) __c; \
break; \
\
case 14: \
__u->__ui = __c * 0x01010101; \
- __u = __extension__ ((void *) __u + 4); \
+ __u = (void *) ((char *) __u + 4); \
case 10: \
__u->__ui = __c * 0x01010101; \
- __u = __extension__ ((void *) __u + 4); \
+ __u = (void *) ((char *) __u + 4); \
case 6: \
__u->__ui = __c * 0x01010101; \
- __u = __extension__ ((void *) __u + 4); \
+ __u = (void *) ((char *) __u + 4); \
case 2: \
__u->__usi = (unsigned short int) __c * 0x0101; \
break; \
\
case 13: \
__u->__ui = __c * 0x01010101; \
- __u = __extension__ ((void *) __u + 4); \
+ __u = (void *) ((char *) __u + 4); \
case 9: \
__u->__ui = __c * 0x01010101; \
- __u = __extension__ ((void *) __u + 4); \
+ __u = (void *) ((char *) __u + 4); \
case 5: \
__u->__ui = __c * 0x01010101; \
- __u = __extension__ ((void *) __u + 4); \
+ __u = (void *) ((char *) __u + 4); \
case 1: \
__u->__uc = (unsigned char) __c; \
break; \
\
case 16: \
__u->__ui = __c * 0x01010101; \
- __u = __extension__ ((void *) __u + 4); \
+ __u = (void *) ((char *) __u + 4); \
case 12: \
__u->__ui = __c * 0x01010101; \
- __u = __extension__ ((void *) __u + 4); \
+ __u = (void *) ((char *) __u + 4); \
case 8: \
__u->__ui = __c * 0x01010101; \
- __u = __extension__ ((void *) __u + 4); \
+ __u = (void *) ((char *) __u + 4); \
case 4: \
__u->__ui = __c * 0x01010101; \
case 0: \
@@ -234,47 +234,47 @@
{
case 1:
__u->__c = __src0_1;
- __u = __extension__ ((void *) __u + 1);
+ __u = (void *) ((char *) __u + 1);
break;
case 2:
__u->__usi = __src0_2;
- __u = __extension__ ((void *) __u + 2);
+ __u = (void *) ((char *) __u + 2);
break;
case 3:
__u->__usi = __src0_2;
- __u = __extension__ ((void *) __u + 2);
+ __u = (void *) ((char *) __u + 2);
__u->__c = __src2_1;
- __u = __extension__ ((void *) __u + 1);
+ __u = (void *) ((char *) __u + 1);
break;
case 4:
__u->__ui = __src0_4;
- __u = __extension__ ((void *) __u + 4);
+ __u = (void *) ((char *) __u + 4);
break;
case 5:
__u->__ui = __src0_4;
- __u = __extension__ ((void *) __u + 4);
+ __u = (void *) ((char *) __u + 4);
__u->__c = __src4_1;
- __u = __extension__ ((void *) __u + 1);
+ __u = (void *) ((char *) __u + 1);
break;
case 6:
__u->__ui = __src0_4;
- __u = __extension__ ((void *) __u + 4);
+ __u = (void *) ((char *) __u + 4);
__u->__usi = __src4_2;
- __u = __extension__ ((void *) __u + 2);
+ __u = (void *) ((char *) __u + 2);
break;
case 7:
__u->__ui = __src0_4;
- __u = __extension__ ((void *) __u + 4);
+ __u = (void *) ((char *) __u + 4);
__u->__usi = __src4_2;
- __u = __extension__ ((void *) __u + 2);
+ __u = (void *) ((char *) __u + 2);
__u->__c = __src6_1;
- __u = __extension__ ((void *) __u + 1);
+ __u = (void *) ((char *) __u + 1);
break;
case 8:
__u->__ui = __src0_4;
- __u = __extension__ ((void *) __u + 4);
+ __u = (void *) ((char *) __u + 4);
__u->__ui = __src4_4;
- __u = __extension__ ((void *) __u + 4);
+ __u = (void *) ((char *) __u + 4);
break;
}
return (void *) __u;
@@ -359,7 +359,7 @@
__extension__ __u->__sca8 = __src8;
break;
}
- return __extension__ ((void *) __u + __srclen);
+ return (void *) ((char *) __u + __srclen);
}
# endif
# endif
@@ -415,7 +415,7 @@
break;
case 3:
__u->__usi = __src0_2;
- __u = __extension__ ((void *) __u + 2);
+ __u = (void *) ((char *) __u + 2);
__u->__uc = '\0';
break;
case 4:
@@ -423,24 +423,24 @@
break;
case 5:
__u->__ui = __src0_4;
- __u = __extension__ ((void *) __u + 4);
+ __u = (void *) ((char *) __u + 4);
__u->__uc = '\0';
break;
case 6:
__u->__ui = __src0_4;
- __u = __extension__ ((void *) __u + 4);
+ __u = (void *) ((char *) __u + 4);
__u->__usi = __src4_2;
break;
case 7:
__u->__ui = __src0_4;
- __u = __extension__ ((void *) __u + 4);
+ __u = (void *) ((char *) __u + 4);
__u->__usi = __src4_2;
- __u = __extension__ ((void *) __u + 2);
+ __u = (void *) ((char *) __u + 2);
__u->__uc = '\0';
break;
case 8:
__u->__ui = __src0_4;
- __u = __extension__ ((void *) __u + 4);
+ __u = (void *) ((char *) __u + 4);
__u->__ui = __src4_4;
break;
}
@@ -572,40 +572,40 @@
break;
case 2:
__u->__usi = __src0_2;
- __u = __extension__ ((void *) __u + 1);
+ __u = (void *) ((char *) __u + 1);
break;
case 3:
__u->__usi = __src0_2;
- __u = __extension__ ((void *) __u + 2);
+ __u = (void *) ((char *) __u + 2);
__u->__uc = '\0';
break;
case 4:
__u->__ui = __src0_4;
- __u = __extension__ ((void *) __u + 3);
+ __u = (void *) ((char *) __u + 3);
break;
case 5:
__u->__ui = __src0_4;
- __u = __extension__ ((void *) __u + 4);
+ __u = (void *) ((char *) __u + 4);
__u->__uc = '\0';
break;
case 6:
__u->__ui = __src0_4;
- __u = __extension__ ((void *) __u + 4);
+ __u = (void *) ((char *) __u + 4);
__u->__usi = __src4_2;
- __u = __extension__ ((void *) __u + 1);
+ __u = (void *) ((char *) __u + 1);
break;
case 7:
__u->__ui = __src0_4;
- __u = __extension__ ((void *) __u + 4);
+ __u = (void *) ((char *) __u + 4);
__u->__usi = __src4_2;
- __u = __extension__ ((void *) __u + 2);
+ __u = (void *) ((char *) __u + 2);
__u->__uc = '\0';
break;
case 8:
__u->__ui = __src0_4;
- __u = __extension__ ((void *) __u + 4);
+ __u = (void *) ((char *) __u + 4);
__u->__ui = __src4_4;
- __u = __extension__ ((void *) __u + 3);
+ __u = (void *) ((char *) __u + 3);
break;
}
return &__u->__c;
--- glibc.orig/sysdeps/i386/bits/string.h Wed Aug 2 21:52:49 2000
+++ glibc/sysdeps/i386/bits/string.h Tue Sep 19 11:19:17 2000
@@ -71,7 +71,7 @@
return __dest;
case 3:
__u->__usi = *(const unsigned short int *) __src;
- __u = (void *) __u + 2;
+ __u = (void *) ((char *) __u + 2);
__u->__uc = *(2 + (const unsigned char *) __src);
return __dest;
case 4:
@@ -79,39 +79,39 @@
return __dest;
case 6:
__u->__ui = *(const unsigned int *) __src;
- __u = (void *) __u + 4;
+ __u = (void *) ((char *) __u + 4);
__u->__usi = *(2 + (const unsigned short int *) __src);
return __dest;
case 8:
__u->__ui = *(const unsigned int *) __src;
- __u = (void *) __u + 4;
+ __u = (void *) ((char *) __u + 4);
__u->__ui = *(1 + (const unsigned int *) __src);
return __dest;
case 12:
__u->__ui = *(const unsigned int *) __src;
- __u = (void *) __u + 4;
+ __u = (void *) ((char *) __u + 4);
__u->__ui = *(1 + (const unsigned int *) __src);
- __u = (void *) __u + 4;
+ __u = (void *) ((char *) __u + 4);
__u->__ui = *(2 + (const unsigned int *) __src);
return __dest;
case 16:
__u->__ui = *(const unsigned int *) __src;
- __u = (void *) __u + 4;
+ __u = (void *) ((char *) __u + 4);
__u->__ui = *(1 + (const unsigned int *) __src);
- __u = (void *) __u + 4;
+ __u = (void *) ((char *) __u + 4);
__u->__ui = *(2 + (const unsigned int *) __src);
- __u = (void *) __u + 4;
+ __u = (void *) ((char *) __u + 4);
__u->__ui = *(3 + (const unsigned int *) __src);
return __dest;
case 20:
__u->__ui = *(const unsigned int *) __src;
- __u = (void *) __u + 4;
+ __u = (void *) ((char *) __u + 4);
__u->__ui = *(1 + (const unsigned int *) __src);
- __u = (void *) __u + 4;
+ __u = (void *) ((char *) __u + 4);
__u->__ui = *(2 + (const unsigned int *) __src);
- __u = (void *) __u + 4;
+ __u = (void *) ((char *) __u + 4);
__u->__ui = *(3 + (const unsigned int *) __src);
- __u = (void *) __u + 4;
+ __u = (void *) ((char *) __u + 4);
__u->__ui = *(4 + (const unsigned int *) __src);
return __dest;
}
@@ -207,7 +207,7 @@
return __s;
case 3:
__u->__usi = __pattern;
- __u = __extension__ ((void *) __u + 2);
+ __u = (void *) ((char *) __u + 2);
__u->__uc = __pattern;
return __s;
case 4:
--- glibc.orig/sysdeps/i386/i486/bits/string.h Thu Sep 14 19:24:26 2000
+++ glibc/sysdeps/i386/i486/bits/string.h Tue Sep 19 11:21:00 2000
@@ -230,54 +230,54 @@
{ \
case 15: \
__u->__ui = __c; \
- __u = __extension__ ((void *) __u + 4); \
+ __u = (void *) ((char *) __u + 4); \
case 11: \
__u->__ui = __c; \
- __u = __extension__ ((void *) __u + 4); \
+ __u = (void *) ((char *) __u + 4); \
case 7: \
__u->__ui = __c; \
- __u = __extension__ ((void *) __u + 4); \
+ __u = (void *) ((char *) __u + 4); \
case 3: \
__u->__usi = (unsigned short int) __c; \
- __u = __extension__ ((void *) __u + 2); \
+ __u = (void *) ((char *) __u + 2); \
__u->__uc = (unsigned char) __c; \
break; \
\
case 14: \
__u->__ui = __c; \
- __u = __extension__ ((void *) __u + 4); \
+ __u = (void *) ((char *) __u + 4); \
case 10: \
__u->__ui = __c; \
- __u = __extension__ ((void *) __u + 4); \
+ __u = (void *) ((char *) __u + 4); \
case 6: \
__u->__ui = __c; \
- __u = __extension__ ((void *) __u + 4); \
+ __u = (void *) ((char *) __u + 4); \
case 2: \
__u->__usi = (unsigned short int) __c; \
break; \
\
case 13: \
__u->__ui = __c; \
- __u = __extension__ ((void *) __u + 4); \
+ __u = (void *) ((char *) __u + 4); \
case 9: \
__u->__ui = __c; \
- __u = __extension__ ((void *) __u + 4); \
+ __u = (void *) ((char *) __u + 4); \
case 5: \
__u->__ui = __c; \
- __u = __extension__ ((void *) __u + 4); \
+ __u = (void *) ((char *) __u + 4); \
case 1: \
__u->__uc = (unsigned char) __c; \
break; \
\
case 16: \
__u->__ui = __c; \
- __u = __extension__ ((void *) __u + 4); \
+ __u = (void *) ((char *) __u + 4); \
case 12: \
__u->__ui = __c; \
- __u = __extension__ ((void *) __u + 4); \
+ __u = (void *) ((char *) __u + 4); \
case 8: \
__u->__ui = __c; \
- __u = __extension__ ((void *) __u + 4); \
+ __u = (void *) ((char *) __u + 4); \
case 4: \
__u->__ui = __c; \
case 0: \
@@ -568,7 +568,7 @@
break; \
case 3: \
__u->__usi = __STRING_SMALL_GET16 (src, 0); \
- __u = __extension__ ((void *) __u + 2); \
+ __u = (void *) ((char *) __u + 2); \
__u->__uc = '\0'; \
break; \
case 4: \
@@ -576,24 +576,24 @@
break; \
case 5: \
__u->__ui = __STRING_SMALL_GET32 (src, 0); \
- __u = __extension__ ((void *) __u + 4); \
+ __u = (void *) ((char *) __u + 4); \
__u->__uc = '\0'; \
break; \
case 6: \
__u->__ui = __STRING_SMALL_GET32 (src, 0); \
- __u = __extension__ ((void *) __u + 4); \
+ __u = (void *) ((char *) __u + 4); \
__u->__usi = __STRING_SMALL_GET16 (src, 4); \
break; \
case 7: \
__u->__ui = __STRING_SMALL_GET32 (src, 0); \
- __u = __extension__ ((void *) __u + 4); \
+ __u = (void *) ((char *) __u + 4); \
__u->__usi = __STRING_SMALL_GET16 (src, 4); \
- __u = __extension__ ((void *) __u + 2); \
+ __u = (void *) ((char *) __u + 2); \
__u->__uc = '\0'; \
break; \
case 8: \
__u->__ui = __STRING_SMALL_GET32 (src, 0); \
- __u = __extension__ ((void *) __u + 4); \
+ __u = (void *) ((char *) __u + 4); \
__u->__ui = __STRING_SMALL_GET32 (src, 4); \
break; \
} \
@@ -655,40 +655,40 @@
break; \
case 2: \
__u->__usi = __STRING_SMALL_GET16 (src, 0); \
- __u = __extension__ ((void *) __u + 1); \
+ __u = (void *) ((char *) __u + 1); \
break; \
case 3: \
__u->__usi = __STRING_SMALL_GET16 (src, 0); \
- __u = __extension__ ((void *) __u + 2); \
+ __u = (void *) ((char *) __u + 2); \
__u->__uc = '\0'; \
break; \
case 4: \
__u->__ui = __STRING_SMALL_GET32 (src, 0); \
- __u = __extension__ ((void *) __u + 3); \
+ __u = (void *) ((char *) __u + 3); \
break; \
case 5: \
__u->__ui = __STRING_SMALL_GET32 (src, 0); \
- __u = __extension__ ((void *) __u + 4); \
+ __u = (void *) ((char *) __u + 4); \
__u->__uc = '\0'; \
break; \
case 6: \
__u->__ui = __STRING_SMALL_GET32 (src, 0); \
- __u = __extension__ ((void *) __u + 4); \
+ __u = (void *) ((char *) __u + 4); \
__u->__usi = __STRING_SMALL_GET16 (src, 4); \
- __u = __extension__ ((void *) __u + 1); \
+ __u = (void *) ((char *) __u + 1); \
break; \
case 7: \
__u->__ui = __STRING_SMALL_GET32 (src, 0); \
- __u = __extension__ ((void *) __u + 4); \
+ __u = (void *) ((char *) __u + 4); \
__u->__usi = __STRING_SMALL_GET16 (src, 4); \
- __u = __extension__ ((void *) __u + 2); \
+ __u = (void *) ((char *) __u + 2); \
__u->__uc = '\0'; \
break; \
case 8: \
__u->__ui = __STRING_SMALL_GET32 (src, 0); \
- __u = __extension__ ((void *) __u + 4); \
+ __u = (void *) ((char *) __u + 4); \
__u->__ui = __STRING_SMALL_GET32 (src, 4); \
- __u = __extension__ ((void *) __u + 3); \
+ __u = (void *) ((char *) __u + 3); \
break; \
} \
(char *) __u; }))