Browse Source

fix regression in size of nlink_t (broken stat struct) on x86_64

rather than moving nlink_t back to the arch-specific file, I've added
a macro _Reg defined to the canonical type for register-size values on
the arch. this is not the same as _Addr for (not-yet-supported)
32-on-64 pseudo-archs like x32 and mips n32, so a new macro was
needed.
Rich Felker 11 years ago
parent
commit
1c6cace0bf

+ 1 - 0
arch/arm/bits/alltypes.h.in

@@ -1,5 +1,6 @@
 #define _Addr int
 #define _Int64 long long
+#define _Reg int
 
 TYPEDEF __builtin_va_list va_list;
 TYPEDEF __builtin_va_list __isoc_va_list;

+ 1 - 0
arch/i386/bits/alltypes.h.in

@@ -1,5 +1,6 @@
 #define _Addr int
 #define _Int64 long long
+#define _Reg int
 
 #if __GNUC__ >= 3
 TYPEDEF __builtin_va_list va_list;

+ 1 - 0
arch/microblaze/bits/alltypes.h.in

@@ -1,5 +1,6 @@
 #define _Addr int
 #define _Int64 long long
+#define _Reg int
 
 TYPEDEF __builtin_va_list va_list;
 TYPEDEF __builtin_va_list __isoc_va_list;

+ 1 - 0
arch/mips/bits/alltypes.h.in

@@ -1,5 +1,6 @@
 #define _Addr int
 #define _Int64 long long
+#define _Reg int
 
 TYPEDEF __builtin_va_list va_list;
 TYPEDEF __builtin_va_list __isoc_va_list;

+ 1 - 0
arch/powerpc/bits/alltypes.h.in

@@ -1,5 +1,6 @@
 #define _Addr int
 #define _Int64 long long
+#define _Reg int
 
 TYPEDEF __builtin_va_list va_list;
 TYPEDEF __builtin_va_list __isoc_va_list;

+ 1 - 0
arch/x86_64/bits/alltypes.h.in

@@ -1,5 +1,6 @@
 #define _Addr long
 #define _Int64 long
+#define _Reg long
 
 TYPEDEF __builtin_va_list va_list;
 TYPEDEF __builtin_va_list __isoc_va_list;

+ 1 - 1
include/alltypes.h.in

@@ -17,7 +17,7 @@ TYPEDEF unsigned _Int64 uint64_t;
 TYPEDEF unsigned _Int64 uintmax_t;
 
 TYPEDEF unsigned mode_t;
-TYPEDEF unsigned nlink_t;
+TYPEDEF unsigned _Reg nlink_t;
 TYPEDEF _Int64 off_t;
 TYPEDEF unsigned _Int64 ino_t;
 TYPEDEF unsigned _Int64 dev_t;