[klibc] [patch] sparc64 fix stat()

maximilian attems maks at sternwelten.at
Wed Dec 28 16:19:42 PST 2005


From: Jurij Smakov <jurij at wooyd.org>

I've investigated the sparc stat() klibc problem a bit and found that the
definition of 'struct stat' in klibc's include/arch/sparc64/archstat.h is
(most probably) incorrect. I've written a simple test case using stat()
function and then looked at preprocessed source, which includes the
'struct stat' definition (from glibc headers) and copied that to
include/arch/sparc64/archstat.h. That required changing the storage size
for some fields, rearranging them, and adding some padding fields where
neccessary. Attached patch implements these changes.

With this change I was able to successfully boot my ultra5 box.

Signed-off-by: maximilian attems <maks at sternwelten.at>

--- a/include/arch/sparc64/klibc/archstat.h	2005-09-06 13:49:34.000000000 -0700
+++ b/include/arch/sparc64/klibc/archstat.h	2005-10-29 10:31:26.000000000 -0700
@@ -3,20 +3,26 @@
 
 /* No nsec fields?! */
 struct stat {
-	unsigned   st_dev;
+	unsigned long st_dev;
+	unsigned short __pad1;
 	ino_t   st_ino;
 	mode_t  st_mode;
-	short   st_nlink;
+	unsigned int st_nlink;
 	uid_t   st_uid;
 	gid_t   st_gid;
-	unsigned   st_rdev;
+	unsigned long st_rdev;
+	unsigned short __pad2;
 	off_t   st_size;
+	off_t   st_blksize;
+	off_t   st_blocks;
 	time_t  st_atime;
+	unsigned long __unused1;
 	time_t  st_mtime;
+	unsigned long __unused2;
 	time_t  st_ctime;
-	off_t   st_blksize;
-	off_t   st_blocks;
-	unsigned long  __unused4[2];
+	unsigned long __unused3;
+	unsigned long __unused4;
+	unsigned long __unused5;
 };
 
 #endif



More information about the klibc mailing list