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

Wed Oct 25 14:23:35 1995 Roland McGrath <roland@churchy.gnu.ai.mit.edu>

* sysdeps/unix/sysv/linux/stat.c: New file.
	* sysdeps/unix/sysv/linux/fstat.c: New file.
	* sysdeps/unix/sysv/linux/lstat.c: New file.
	* sysdeps/unix/sysv/linux/i386/stat.S: File removed.
	* sysdeps/unix/sysv/linux/i386/fstat.S: File removed.
	* sysdeps/unix/sysv/linux/i386/lstat.S: File removed.
This commit is contained in:
Roland McGrath
1995-10-25 19:20:45 +00:00
parent 03a7582576
commit ff9bef7f88
6 changed files with 80 additions and 30 deletions

View File

@ -1,3 +1,12 @@
Wed Oct 25 14:23:35 1995 Roland McGrath <roland@churchy.gnu.ai.mit.edu>
* sysdeps/unix/sysv/linux/stat.c: New file.
* sysdeps/unix/sysv/linux/fstat.c: New file.
* sysdeps/unix/sysv/linux/lstat.c: New file.
* sysdeps/unix/sysv/linux/i386/stat.S: File removed.
* sysdeps/unix/sysv/linux/i386/fstat.S: File removed.
* sysdeps/unix/sysv/linux/i386/lstat.S: File removed.
Tue Oct 24 15:22:58 1995 Roland McGrath <roland@churchy.gnu.ai.mit.edu> Tue Oct 24 15:22:58 1995 Roland McGrath <roland@churchy.gnu.ai.mit.edu>
* sysdeps/unix/sysv/linux/i386/sysdep.h (SYSCALL_ERROR_HANDLER): * sysdeps/unix/sysv/linux/i386/sysdep.h (SYSCALL_ERROR_HANDLER):

View File

@ -0,0 +1,32 @@
/* Copyright (C) 1995 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 Library General Public License as
published by the Free Software Foundation; either version 2 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
Library General Public License for more details.
You should have received a copy of the GNU Library General Public
License along with the GNU C Library; see the file COPYING.LIB. If
not, write to the Free Software Foundation, Inc., 675 Mass Ave,
Cambridge, MA 02139, USA. */
#include <sys/stat.h>
/* In Linux the `stat' call is actually done by emulating a `xstat' system
call, which takes an additional first argument giving a version number
for `struct stat'. Likewise for `fstat' and `lstat' there are `fxstat'
and `lxstat' emulations. */
int
__fstat (int fd, struct stat *buf)
{
return __fxstat (_STAT_VER, fd, buf);
}
weak_alias (__fstat, fstat)

View File

@ -1,4 +0,0 @@
#define __stat __fstat
#define stat fstat
#define __xstat __fxstat
#include "stat.S"

View File

@ -1,4 +0,0 @@
#define __stat __lstat
#define stat lstat
#define __xstat __lxstat
#include "stat.S"

View File

@ -0,0 +1,32 @@
/* Copyright (C) 1995 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 Library General Public License as
published by the Free Software Foundation; either version 2 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
Library General Public License for more details.
You should have received a copy of the GNU Library General Public
License along with the GNU C Library; see the file COPYING.LIB. If
not, write to the Free Software Foundation, Inc., 675 Mass Ave,
Cambridge, MA 02139, USA. */
#include <sys/stat.h>
/* In Linux the `stat' call is actually done by emulating a `xstat' system
call, which takes an additional first argument giving a version number
for `struct stat'. Likewise for `fstat' and `lstat' there are `fxstat'
and `lxstat' emulations. */
int
__lstat (const char *file, struct stat *buf)
{
return __lxstat (_STAT_VER, file, buf);
}
weak_alias (__lstat, lstat)

View File

@ -16,32 +16,17 @@ License along with the GNU C Library; see the file COPYING.LIB. If
not, write to the Free Software Foundation, Inc., 675 Mass Ave, not, write to the Free Software Foundation, Inc., 675 Mass Ave,
Cambridge, MA 02139, USA. */ Cambridge, MA 02139, USA. */
#include <sysdep.h> #include <sys/stat.h>
/* In Linux the `stat' call is actually done by emulating a `xstat' system /* In Linux the `stat' call is actually done by emulating a `xstat' system
call, which takes an additional first argument giving a version number call, which takes an additional first argument giving a version number
for `struct stat'. Likewise for `fstat' and `lstat' there are `fxstat' for `struct stat'. Likewise for `fstat' and `lstat' there are `fxstat'
and `lxstat' emulations. This macro gives the Linux version number that and `lxstat' emulations. */
corresponds to the definition of `struct stat' in <statbuf.h>. */
#define _STAT_VER 1
ENTRY (__stat) int
movl 8(%esp), %eax __stat (const char *file, struct stat *buf)
movl 4(%esp), %ecx {
#ifdef PIC return __xstat (_STAT_VER, file, buf);
pushl %ebx }
call 0f
0: popl %ebx
addl $_GLOBAL_OFFSET_TABLE_+[.-0b], %ebx
#endif
pushl %eax
pushl %ecx
pushl $_STAT_VER /* Push extra first arg to syscall. */
call JUMPTARGET(__xstat)/* Jump to xstat implementation. */
addl $12, %esp
#ifdef PIC
popl %ebx
#endif
ret
weak_alias (__stat, stat) weak_alias (__stat, stat)