This is the mail archive of the libc-alpha@sources.redhat.com mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: [letmein <letmein@erols.com>] fix for bug#2110


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; }))

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]