Commit 6db45e6519fee264ef3bbe88f50233f23640b403
1 parent
072ae847
Use correct data structures for stat syscalls, by Magnus Damm.
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@3001 c046a42c-6fe2-441c-8c8c-71466251a162
Showing
1 changed file
with
60 additions
and
1 deletions
linux-user/syscall_defs.h
| ... | ... | @@ -869,7 +869,7 @@ struct target_winsize { |
| 869 | 869 | #define TARGET_MAP_NORESERVE 0x4000 /* don't check for reservations */ |
| 870 | 870 | #endif |
| 871 | 871 | |
| 872 | -#if defined(TARGET_I386) || defined(TARGET_ARM) || defined(TARGET_SH4) | |
| 872 | +#if defined(TARGET_I386) || defined(TARGET_ARM) | |
| 873 | 873 | struct target_stat { |
| 874 | 874 | unsigned short st_dev; |
| 875 | 875 | unsigned short __pad1; |
| ... | ... | @@ -1242,6 +1242,65 @@ struct target_stat64 { |
| 1242 | 1242 | target_long __unused[3]; |
| 1243 | 1243 | }; |
| 1244 | 1244 | |
| 1245 | +#elif defined(TARGET_SH4) | |
| 1246 | + | |
| 1247 | +struct target_stat { | |
| 1248 | + target_ulong st_dev; | |
| 1249 | + target_ulong st_ino; | |
| 1250 | + unsigned short st_mode; | |
| 1251 | + unsigned short st_nlink; | |
| 1252 | + unsigned short st_uid; | |
| 1253 | + unsigned short st_gid; | |
| 1254 | + target_ulong st_rdev; | |
| 1255 | + target_ulong st_size; | |
| 1256 | + target_ulong st_blksize; | |
| 1257 | + target_ulong st_blocks; | |
| 1258 | + target_ulong target_st_atime; | |
| 1259 | + target_ulong target_st_atime_nsec; | |
| 1260 | + target_ulong target_st_mtime; | |
| 1261 | + target_ulong target_st_mtime_nsec; | |
| 1262 | + target_ulong target_st_ctime; | |
| 1263 | + target_ulong target_st_ctime_nsec; | |
| 1264 | + target_ulong __unused4; | |
| 1265 | + target_ulong __unused5; | |
| 1266 | +}; | |
| 1267 | + | |
| 1268 | +/* This matches struct stat64 in glibc2.1, hence the absolutely | |
| 1269 | + * insane amounts of padding around dev_t's. | |
| 1270 | + */ | |
| 1271 | +struct target_stat64 { | |
| 1272 | + unsigned long long st_dev; | |
| 1273 | + unsigned char __pad0[4]; | |
| 1274 | + | |
| 1275 | +#define TARGET_STAT64_HAS_BROKEN_ST_INO 1 | |
| 1276 | + target_ulong __st_ino; | |
| 1277 | + | |
| 1278 | + unsigned int st_mode; | |
| 1279 | + unsigned int st_nlink; | |
| 1280 | + | |
| 1281 | + target_ulong st_uid; | |
| 1282 | + target_ulong st_gid; | |
| 1283 | + | |
| 1284 | + unsigned long long st_rdev; | |
| 1285 | + unsigned char __pad3[4]; | |
| 1286 | + | |
| 1287 | + long long st_size; | |
| 1288 | + target_ulong st_blksize; | |
| 1289 | + | |
| 1290 | + unsigned long long st_blocks; /* Number 512-byte blocks allocated. */ | |
| 1291 | + | |
| 1292 | + target_ulong target_st_atime; | |
| 1293 | + target_ulong target_st_atime_nsec; | |
| 1294 | + | |
| 1295 | + target_ulong target_st_mtime; | |
| 1296 | + target_ulong target_st_mtime_nsec; | |
| 1297 | + | |
| 1298 | + target_ulong target_st_ctime; | |
| 1299 | + target_ulong target_st_ctime_nsec; | |
| 1300 | + | |
| 1301 | + unsigned long long st_ino; | |
| 1302 | +}; | |
| 1303 | + | |
| 1245 | 1304 | #else |
| 1246 | 1305 | #error unsupported CPU |
| 1247 | 1306 | #endif | ... | ... |