use int instead of long for ptrdiff_t on all 32-bit archs
authorRich Felker <dalias@aerifal.cx>
Fri, 10 Aug 2012 19:13:26 +0000 (15:13 -0400)
committerRich Felker <dalias@aerifal.cx>
Fri, 10 Aug 2012 19:13:26 +0000 (15:13 -0400)
this is needed to match the underlying "ABI" standards. it's not
really an ABI issue since the binary representations are the same, but
having the wrong type can lead to errors when the type arising from a
difference-of-pointers expression does not match the defined type of
ptrdiff_t. most of the problems affect C++, not C.

arch/arm/bits/alltypes.h.sh
arch/i386/bits/alltypes.h.sh

index 4ba3d81caf825716978d744869893a2885bc13c0..274de0df7d9dcece1ea2a192519f8dc59b3536b2 100755 (executable)
@@ -18,7 +18,7 @@ union \1 \2;\
 
 TYPEDEF unsigned size_t;
 TYPEDEF int ssize_t;
-TYPEDEF long ptrdiff_t;
+TYPEDEF int ptrdiff_t;
 
 TYPEDEF __builtin_va_list va_list;
 
index 109566901cd71c214b3c808b989773441ec3a8ed..10fcf6a3c46a852d86e287e3ce7918fb2226737a 100755 (executable)
@@ -18,7 +18,7 @@ union \1 \2;\
 
 TYPEDEF unsigned size_t;
 TYPEDEF int ssize_t;
-TYPEDEF long ptrdiff_t;
+TYPEDEF int ptrdiff_t;
 
 #if __GNUC__ >= 3
 TYPEDEF __builtin_va_list va_list;