Commit 6db45e6519fee264ef3bbe88f50233f23640b403

Authored by ths
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
... ...