sparc64 fix stat()
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@sternwelten.at>
diff --git a/include/arch/sparc64/klibc/archstat.h b/include/arch/sparc64/klibc/archstat.h
index c22905d..cc54ad1 100644
--- a/include/arch/sparc64/klibc/archstat.h
+++ b/include/arch/sparc64/klibc/archstat.h
@@ -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;
- time_t st_atime;
- time_t st_mtime;
- time_t st_ctime;
off_t st_blksize;
off_t st_blocks;
- unsigned long __unused4[2];
+ time_t st_atime;
+ unsigned long __unused1;
+ time_t st_mtime;
+ unsigned long __unused2;
+ time_t st_ctime;
+ unsigned long __unused3;
+ unsigned long __unused4;
+ unsigned long __unused5;
};
#endif