From 1c6cace0bf88a5f30886665e2c2d2268e3a3ccc5 Mon Sep 17 00:00:00 2001
From: Rich Felker <dalias@aerifal.cx>
Date: Mon, 22 Jul 2013 15:45:28 -0400
Subject: 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.
---
 arch/arm/bits/alltypes.h.in        | 1 +
 arch/i386/bits/alltypes.h.in       | 1 +
 arch/microblaze/bits/alltypes.h.in | 1 +
 arch/mips/bits/alltypes.h.in       | 1 +
 arch/powerpc/bits/alltypes.h.in    | 1 +
 arch/x86_64/bits/alltypes.h.in     | 1 +
 include/alltypes.h.in              | 2 +-
 7 files changed, 7 insertions(+), 1 deletion(-)

diff --git a/arch/arm/bits/alltypes.h.in b/arch/arm/bits/alltypes.h.in
index 764a2469..bd23a6ae 100644
--- a/arch/arm/bits/alltypes.h.in
+++ b/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;
diff --git a/arch/i386/bits/alltypes.h.in b/arch/i386/bits/alltypes.h.in
index 04fd1cb4..efd2c077 100644
--- a/arch/i386/bits/alltypes.h.in
+++ b/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;
diff --git a/arch/microblaze/bits/alltypes.h.in b/arch/microblaze/bits/alltypes.h.in
index eb842aaf..6bd79429 100644
--- a/arch/microblaze/bits/alltypes.h.in
+++ b/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;
diff --git a/arch/mips/bits/alltypes.h.in b/arch/mips/bits/alltypes.h.in
index eb842aaf..6bd79429 100644
--- a/arch/mips/bits/alltypes.h.in
+++ b/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;
diff --git a/arch/powerpc/bits/alltypes.h.in b/arch/powerpc/bits/alltypes.h.in
index 1c3fe283..e9d8dd8a 100644
--- a/arch/powerpc/bits/alltypes.h.in
+++ b/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;
diff --git a/arch/x86_64/bits/alltypes.h.in b/arch/x86_64/bits/alltypes.h.in
index b9bff866..277e9448 100644
--- a/arch/x86_64/bits/alltypes.h.in
+++ b/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;
diff --git a/include/alltypes.h.in b/include/alltypes.h.in
index f3481fc2..644c61de 100644
--- a/include/alltypes.h.in
+++ b/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;
-- 
cgit v1.2.3-70-g09d2