1
0
mirror of https://sourceware.org/git/glibc.git synced 2025-07-29 11:41:21 +03:00

Adjust for recent input file changes.

This commit is contained in:
Ulrich Drepper
2006-01-09 19:50:01 +00:00
parent ae11e4128c
commit 49783c67c0
10 changed files with 327 additions and 52 deletions

View File

@ -28,8 +28,17 @@ nlink_t:j
off64_t:l off64_t:l
off_t:l off_t:l
pid_t:i pid_t:i
pthread_attr_t:14pthread_attr_t
pthread_barrier_t:17pthread_barrier_t
pthread_barrierattr_t:21pthread_barrierattr_t
pthread_cond_t:14pthread_cond_t
pthread_condattr_t:18pthread_condattr_t
pthread_key_t:j pthread_key_t:j
pthread_mutex_t:15pthread_mutex_t
pthread_mutexattr_t:19pthread_mutexattr_t
pthread_once_t:i pthread_once_t:i
pthread_rwlock_t:16pthread_rwlock_t
pthread_rwlockattr_t:20pthread_rwlockattr_t
pthread_spinlock_t:i pthread_spinlock_t:i
pthread_t:m pthread_t:m
quad_t:l quad_t:l

View File

@ -0,0 +1,67 @@
blkcnt64_t:x
blkcnt_t:l
blksize_t:l
caddr_t:Pc
clockid_t:i
clock_t:l
daddr_t:i
dev_t:y
fd_mask:l
fsblkcnt64_t:y
fsblkcnt_t:m
fsfilcnt64_t:y
fsfilcnt_t:m
fsid_t:8__fsid_t
gid_t:j
id_t:j
ino64_t:y
ino_t:m
int16_t:s
int32_t:i
int64_t:x
int8_t:a
intptr_t:i
key_t:i
loff_t:x
mode_t:j
nlink_t:j
off64_t:x
off_t:l
pid_t:i
pthread_attr_t:14pthread_attr_t
pthread_barrier_t:17pthread_barrier_t
pthread_barrierattr_t:21pthread_barrierattr_t
pthread_cond_t:14pthread_cond_t
pthread_condattr_t:18pthread_condattr_t
pthread_key_t:j
pthread_mutex_t:15pthread_mutex_t
pthread_mutexattr_t:19pthread_mutexattr_t
pthread_once_t:i
pthread_rwlock_t:16pthread_rwlock_t
pthread_rwlockattr_t:20pthread_rwlockattr_t
pthread_spinlock_t:i
pthread_t:m
quad_t:x
register_t:i
rlim64_t:y
rlim_t:m
sigset_t:10__sigset_t
size_t:j
socklen_t:j
ssize_t:i
suseconds_t:i
time_t:l
u_char:h
uid_t:j
uint:j
u_int:j
u_int16_t:t
u_int32_t:j
u_int64_t:y
u_int8_t:h
ulong:m
u_long:m
u_quad_t:y
useconds_t:j
ushort:t
u_short:t

View File

@ -0,0 +1,67 @@
blkcnt64_t:l
blkcnt_t:l
blksize_t:l
caddr_t:Pc
clockid_t:i
clock_t:l
daddr_t:i
dev_t:m
fd_mask:l
fsblkcnt64_t:m
fsblkcnt_t:m
fsfilcnt64_t:m
fsfilcnt_t:m
fsid_t:8__fsid_t
gid_t:j
id_t:j
ino64_t:m
ino_t:m
int16_t:s
int32_t:i
int64_t:l
int8_t:a
intptr_t:l
key_t:i
loff_t:l
mode_t:j
nlink_t:j
off64_t:l
off_t:l
pid_t:i
pthread_attr_t:14pthread_attr_t
pthread_barrier_t:17pthread_barrier_t
pthread_barrierattr_t:21pthread_barrierattr_t
pthread_cond_t:14pthread_cond_t
pthread_condattr_t:18pthread_condattr_t
pthread_key_t:j
pthread_mutex_t:15pthread_mutex_t
pthread_mutexattr_t:19pthread_mutexattr_t
pthread_once_t:i
pthread_rwlock_t:16pthread_rwlock_t
pthread_rwlockattr_t:20pthread_rwlockattr_t
pthread_spinlock_t:i
pthread_t:m
quad_t:l
register_t:l
rlim64_t:m
rlim_t:m
sigset_t:10__sigset_t
size_t:m
socklen_t:j
ssize_t:l
suseconds_t:i
time_t:l
u_char:h
uid_t:j
uint:j
u_int:j
u_int16_t:t
u_int32_t:j
u_int64_t:m
u_int8_t:h
ulong:m
u_long:m
u_quad_t:m
useconds_t:j
ushort:t
u_short:t

View File

@ -111,7 +111,8 @@
/* On sparc and ARM the truncate64/ftruncate64/mmap2/stat64/lstat64/fstat64 /* On sparc and ARM the truncate64/ftruncate64/mmap2/stat64/lstat64/fstat64
syscalls were introduced in 2.3.35. */ syscalls were introduced in 2.3.35. */
#if __LINUX_KERNEL_VERSION >= 131875 && (defined __sparc__ || defined __arm__) #if __LINUX_KERNEL_VERSION >= 131875 \
&& ((defined __sparc__ && !defined __arch64__) || defined __arm__)
# define __ASSUME_TRUNCATE64_SYSCALL 1 # define __ASSUME_TRUNCATE64_SYSCALL 1
# define __ASSUME_MMAP2_SYSCALL 1 # define __ASSUME_MMAP2_SYSCALL 1
# define __ASSUME_STAT64_SYSCALL 1 # define __ASSUME_STAT64_SYSCALL 1
@ -449,3 +450,9 @@
#if __LINUX_KERNEL_VERSION >= 0x020609 && defined __alpha__ #if __LINUX_KERNEL_VERSION >= 0x020609 && defined __alpha__
#define __ASSUME_IEEE_RAISE_EXCEPTION 1 #define __ASSUME_IEEE_RAISE_EXCEPTION 1
#endif #endif
/* On sparc64 stat64/lstat64/fstat64 syscalls were introduced in 2.6.12. */
#if __LINUX_KERNEL_VERSION >= 0x02060c && defined __sparc__ \
&& defined __arch64__
# define __ASSUME_STAT64_SYSCALL 1
#endif

View File

@ -61,7 +61,7 @@ typedef struct __sparc64_jmp_buf
/* Test if longjmp to JMPBUF would unwind the frame /* Test if longjmp to JMPBUF would unwind the frame
containing a local variable at ADDRESS. */ containing a local variable at ADDRESS. */
#define _JMPBUF_UNWINDS(jmpbuf, address, demangle) \ #define _JMPBUF_UNWINDS(jmpbuf, address, demangle) \
((unsigned long int) (address) < (jmpbuf)->uc_mcontext.mc_fp) ((unsigned long int) (address) < (jmpbuf)->uc_mcontext.mc_fp + 2047)
#else #else

View File

@ -1,4 +1,5 @@
/* Copyright (C) 1992,95,96,97,98,99,2000,2001,2002 Free Software Foundation, Inc. /* Copyright (C) 1992, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2006
Free Software Foundation, Inc.
This file is part of the GNU C Library. This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or The GNU C Library is free software; you can redistribute it and/or
@ -60,15 +61,7 @@ struct stat
#else #else
__blkcnt64_t st_blocks; /* Number 512-byte blocks allocated. */ __blkcnt64_t st_blocks; /* Number 512-byte blocks allocated. */
#endif #endif
#if __WORDSIZE == 64 #ifdef __USE_MISC
__time_t st_atime; /* Time of last access. */
unsigned long int __unused1;
__time_t st_mtime; /* Time of last modification. */
unsigned long int __unused2;
__time_t st_ctime; /* Time of last status change. */
unsigned long int __unused3;
#else
# ifdef __USE_MISC
/* Nanosecond resolution timestamps are stored in a format /* Nanosecond resolution timestamps are stored in a format
equivalent to 'struct timespec'. This is the type used equivalent to 'struct timespec'. This is the type used
whenever possible but the Unix namespace rules do not allow the whenever possible but the Unix namespace rules do not allow the
@ -78,17 +71,16 @@ struct stat
struct timespec st_atim; /* Time of last access. */ struct timespec st_atim; /* Time of last access. */
struct timespec st_mtim; /* Time of last modification. */ struct timespec st_mtim; /* Time of last modification. */
struct timespec st_ctim; /* Time of last status change. */ struct timespec st_ctim; /* Time of last status change. */
# define st_atime st_atim.tv_sec /* Backward compatibility. */ # define st_atime st_atim.tv_sec /* Backward compatibility. */
# define st_mtime st_mtim.tv_sec # define st_mtime st_mtim.tv_sec
# define st_ctime st_ctim.tv_sec # define st_ctime st_ctim.tv_sec
# else #else
__time_t st_atime; /* Time of last access. */ __time_t st_atime; /* Time of last access. */
unsigned long int st_atimensec; /* Nscecs of last access. */ unsigned long int st_atimensec; /* Nscecs of last access. */
__time_t st_mtime; /* Time of last modification. */ __time_t st_mtime; /* Time of last modification. */
unsigned long int st_mtimensec; /* Nsecs of last modification. */ unsigned long int st_mtimensec; /* Nsecs of last modification. */
__time_t st_ctime; /* Time of last status change. */ __time_t st_ctime; /* Time of last status change. */
unsigned long int st_ctimensec; /* Nsecs of last status change. */ unsigned long int st_ctimensec; /* Nsecs of last status change. */
# endif
#endif #endif
unsigned long int __unused4; unsigned long int __unused4;
unsigned long int __unused5; unsigned long int __unused5;
@ -112,15 +104,7 @@ struct stat64
__blksize_t st_blksize; /* Optimal block size for I/O. */ __blksize_t st_blksize; /* Optimal block size for I/O. */
__blkcnt64_t st_blocks; /* Number 512-byte blocks allocated. */ __blkcnt64_t st_blocks; /* Number 512-byte blocks allocated. */
#if __WORDSIZE == 64 #ifdef __USE_MISC
__time_t st_atime; /* Time of last access. */
unsigned long int __unused1;
__time_t st_mtime; /* Time of last modification. */
unsigned long int __unused2;
__time_t st_ctime; /* Time of last status change. */
unsigned long int __unused3;
#else
# ifdef __USE_MISC
/* Nanosecond resolution timestamps are stored in a format /* Nanosecond resolution timestamps are stored in a format
equivalent to 'struct timespec'. This is the type used equivalent to 'struct timespec'. This is the type used
whenever possible but the Unix namespace rules do not allow the whenever possible but the Unix namespace rules do not allow the
@ -130,17 +114,16 @@ struct stat64
struct timespec st_atim; /* Time of last access. */ struct timespec st_atim; /* Time of last access. */
struct timespec st_mtim; /* Time of last modification. */ struct timespec st_mtim; /* Time of last modification. */
struct timespec st_ctim; /* Time of last status change. */ struct timespec st_ctim; /* Time of last status change. */
# define st_atime st_atim.tv_sec /* Backward compatibility. */ # define st_atime st_atim.tv_sec /* Backward compatibility. */
# define st_mtime st_mtim.tv_sec # define st_mtime st_mtim.tv_sec
# define st_ctime st_ctim.tv_sec # define st_ctime st_ctim.tv_sec
# else #else
__time_t st_atime; /* Time of last access. */ __time_t st_atime; /* Time of last access. */
unsigned long int st_atimensec; /* Nscecs of last access. */ unsigned long int st_atimensec; /* Nscecs of last access. */
__time_t st_mtime; /* Time of last modification. */ __time_t st_mtime; /* Time of last modification. */
unsigned long int st_mtimensec; /* Nsecs of last modification. */ unsigned long int st_mtimensec; /* Nsecs of last modification. */
__time_t st_ctime; /* Time of last status change. */ __time_t st_ctime; /* Time of last status change. */
unsigned long int st_ctimensec; /* Nsecs of last status change. */ unsigned long int st_ctimensec; /* Nsecs of last status change. */
# endif
#endif #endif
unsigned long int __unused4; unsigned long int __unused4;
unsigned long int __unused5; unsigned long int __unused5;

View File

@ -1 +1 @@
#include "../../fxstatat.c" #include "../../i386/fxstatat.c"

View File

@ -9,31 +9,39 @@ struct kernel_stat
unsigned int st_gid; unsigned int st_gid;
unsigned int st_rdev; unsigned int st_rdev;
long int st_size; long int st_size;
long int st_atime; long int st_atime_sec;
long int st_mtime; long int st_mtime_sec;
long int st_ctime; long int st_ctime_sec;
long int st_blksize; long int st_blksize;
long int st_blocks; long int st_blocks;
unsigned long int __unused1; unsigned long int __unused1;
unsigned long int __unused2; unsigned long int __unused2;
}; };
#define _HAVE___UNUSED1 /* Definition of `struct stat64' used in the kernel. */
#define _HAVE___UNUSED2 struct kernel_stat64
{
unsigned long int st_dev;
unsigned long int st_ino;
unsigned long int st_nlink;
#define _HAVE_STAT___UNUSED1 unsigned int st_mode;
#define _HAVE_STAT___UNUSED2 unsigned int st_uid;
#define _HAVE_STAT___UNUSED3 unsigned int st_gid;
#define _HAVE_STAT___UNUSED4 unsigned int __pad0;
#define _HAVE_STAT___UNUSED5
#define _HAVE_STAT___PAD1 unsigned long int st_rdev;
#define _HAVE_STAT___PAD2 long int st_size;
#define _HAVE_STAT64___UNUSED1 long int st_blksize;
#define _HAVE_STAT64___UNUSED2 long int st_blocks;
#define _HAVE_STAT64___UNUSED3
#define _HAVE_STAT64___UNUSED4 unsigned long int st_atime_sec;
#define _HAVE_STAT64___UNUSED5 unsigned long int st_atime_nsec;
#define _HAVE_STAT64___PAD1 unsigned long int st_mtime_sec;
#define _HAVE_STAT64___PAD2 unsigned long int st_mtime_nsec;
unsigned long int st_ctime_sec;
unsigned long int st_ctime_nsec;
long int __unused[3];
};
#define XSTAT_IS_XSTAT64 1 #define XSTAT_IS_XSTAT64 1

View File

@ -1 +1,8 @@
#include "../../xstat.c" #include "../../i386/xstat.c"
#ifdef __NR_stat64
# if __ASSUME_STAT64_SYSCALL == 0
/* The variable is shared between all wrappers around *stat{,64} calls. */
int __have_no_stat64;
# endif
#endif

View File

@ -0,0 +1,127 @@
/* Convert between the kernel's `struct stat' format, and libc's.
Copyright (C) 1991, 1995, 1996, 1997, 2000, 2002, 2003, 2006
Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, write to the Free
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA. */
#include <assert.h>
#include <errno.h>
#include <sys/stat.h>
#include <kernel_stat.h>
#include <string.h>
#include <kernel-features.h>
int
__xstat_conv (int vers, struct kernel_stat *kbuf, void *ubuf)
{
switch (vers)
{
case _STAT_VER_KERNEL:
/* Nothing to do. The struct is in the form the kernel expects.
We should have short-circuted before we got here, but for
completeness... */
*(struct kernel_stat *) ubuf = *kbuf;
break;
case _STAT_VER_LINUX:
{
struct stat *buf = ubuf;
/* Convert to current kernel version of `struct stat'. */
buf->st_dev = kbuf->st_dev;
buf->__pad1 = 0;
buf->st_ino = kbuf->st_ino;
buf->st_mode = kbuf->st_mode;
buf->st_nlink = kbuf->st_nlink;
buf->st_uid = kbuf->st_uid;
buf->st_gid = kbuf->st_gid;
buf->st_rdev = kbuf->st_rdev;
buf->__pad2 = 0;
buf->st_size = kbuf->st_size;
buf->st_blksize = kbuf->st_blksize;
buf->st_blocks = kbuf->st_blocks;
buf->st_atim.tv_sec = kbuf->st_atime_sec;
buf->st_atim.tv_nsec = 0;
buf->st_mtim.tv_sec = kbuf->st_mtime_sec;
buf->st_mtim.tv_nsec = 0;
buf->st_ctim.tv_sec = kbuf->st_ctime_sec;
buf->st_ctim.tv_nsec = 0;
buf->__unused4 = 0;
buf->__unused5 = 0;
}
break;
default:
__set_errno (EINVAL);
return -1;
}
return 0;
}
int
__xstat32_conv (int vers, struct stat64 *sbuf, struct stat *buf)
{
struct kernel_stat64 *kbuf;
/* *stat64 syscalls on sparc64 really fill in struct kernel_stat64,
rather than struct stat64. But it is the same size as
struct kernel_stat64, so use this hack so that we can reuse
i386 {,f,l}xstat{,at}.c routines. */
__asm ("" : "=r" (kbuf) : "0" (sbuf));
assert (sizeof (struct stat) == sizeof (struct stat64));
assert (sizeof (struct stat64) >= sizeof (struct kernel_stat64));
switch (vers)
{
case _STAT_VER_LINUX:
{
/* Convert current kernel version of `struct stat64' to
`struct stat'. */
buf->st_dev = kbuf->st_dev;
buf->__pad1 = 0;
buf->st_ino = kbuf->st_ino;
buf->st_mode = kbuf->st_mode;
buf->st_nlink = kbuf->st_nlink;
buf->st_uid = kbuf->st_uid;
buf->st_gid = kbuf->st_gid;
buf->st_rdev = kbuf->st_rdev;
buf->__pad2 = 0;
buf->st_size = kbuf->st_size;
buf->st_blksize = kbuf->st_blksize;
buf->st_blocks = kbuf->st_blocks;
buf->st_atim.tv_sec = kbuf->st_atime_sec;
buf->st_atim.tv_nsec = kbuf->st_atime_nsec;
buf->st_mtim.tv_sec = kbuf->st_mtime_sec;
buf->st_mtim.tv_nsec = kbuf->st_mtime_nsec;
buf->st_ctim.tv_sec = kbuf->st_ctime_sec;
buf->st_ctim.tv_nsec = kbuf->st_ctime_nsec;
buf->__unused4 = 0;
buf->__unused5 = 0;
}
break;
/* If struct stat64 is different from struct stat then
_STAT_VER_KERNEL does not make sense. */
case _STAT_VER_KERNEL:
default:
__set_errno (EINVAL);
return -1;
}
return 0;
}