Commit Graph

14 Commits

Author SHA1 Message Date
Joseph Myers
f7a9f785e5 Update copyright dates with scripts/update-copyrights. 2016-01-04 16:05:18 +00:00
H.J. Lu
e5dee2c896 Revert "Add INLINE_SYSCALL_RETURN/INLINE_SYSCALL_ERROR_RETURN"
This reverts commit 0c5b8b5941.
2015-08-21 09:57:15 -07:00
H.J. Lu
0c5b8b5941 Add INLINE_SYSCALL_RETURN/INLINE_SYSCALL_ERROR_RETURN
For ia32 PIC, the first thing of many syscalls does is to call
__x86.get_pc_thunk.reg to load PC into reg in case there is an error,
which is required for setting errno.  In most cases, there are no
errors.  But we still call __x86.get_pc_thunk.reg.  This patch adds
INLINE_SYSCALL_RETURN and INLINE_SYSCALL_ERROR_RETURN so that i386
can optimize setting errno by branching to the internal __syscall_error
without PLT.

INLINE_SYSCALL_ERROR_RETURN is designed to take the negative error
number returned from the majority of Linux kernels for which negating
is a no-op with INTERNAL_SYSCALL_ERRNO.

With i386 INLINE_SYSCALL_RETURN, INLINE_SYSCALL_ERROR_RETURN and
i386 syscall inlining optimization for GCC 5, for
sysdeps/unix/sysv/linux/fchmodat.c with -O2 -march=i686
-mtune=generic, GCC 5.2 now generates:

<fchmodat>:
   0:	push   %ebx
   1:	mov    0x14(%esp),%eax
   5:	mov    0x8(%esp),%ebx
   9:	mov    0xc(%esp),%ecx
   d:	mov    0x10(%esp),%edx
  11:	test   $0xfffffeff,%eax
  16:	jne    38 <fchmodat+0x38>
  18:	test   $0x1,%ah
  1b:	jne    48 <fchmodat+0x48>
  1d:	mov    $0x132,%eax
  22:	call   *%gs:0x10
  29:	cmp    $0xfffff000,%eax
  2e:	ja     58 <fchmodat+0x58>
  30:	pop    %ebx
  31:	ret
  32:	lea    0x0(%esi),%esi
  38:	pop    %ebx
  39:	mov    $0xffffffea,%eax
  3e:	jmp    3f <fchmodat+0x3f>	3f: R_386_PC32	__syscall_error
  43:	nop
  44:	lea    0x0(%esi,%eiz,1),%esi
  48:	pop    %ebx
  49:	mov    $0xffffffa1,%eax
  4e:	jmp    4f <fchmodat+0x4f>	4f: R_386_PC32	__syscall_error
  53:	nop
  54:	lea    0x0(%esi,%eiz,1),%esi
  58:	pop    %ebx
  59:	jmp    5a <fchmodat+0x5a>	5a: R_386_PC32	__syscall_error

instead of

<fchmodat>:
   0:	sub    $0x8,%esp
   3:	mov    0x18(%esp),%eax
   7:	mov    %ebx,(%esp)
   a:	call   b <fchmodat+0xb>	b: R_386_PC32	__x86.get_pc_thunk.bx
   f:	add    $0x2,%ebx	11: R_386_GOTPC	_GLOBAL_OFFSET_TABLE_
  15:	mov    %edi,0x4(%esp)
  19:	test   $0xfffffeff,%eax
  1e:	jne    70 <fchmodat+0x70>
  20:	test   $0x1,%ah
  23:	jne    88 <fchmodat+0x88>
  25:	mov    0x14(%esp),%edx
  29:	mov    0x10(%esp),%ecx
  2d:	mov    0xc(%esp),%edi
  31:	xchg   %ebx,%edi
  33:	mov    $0x132,%eax
  38:	call   *%gs:0x10
  3f:	xchg   %edi,%ebx
  41:	cmp    $0xfffff000,%eax
  46:	ja     58 <fchmodat+0x58>
  48:	mov    (%esp),%ebx
  4b:	mov    0x4(%esp),%edi
  4f:	add    $0x8,%esp
  52:	ret
  53:	nop
  54:	lea    0x0(%esi,%eiz,1),%esi
  58:	mov    0x0(%ebx),%edx	5a: R_386_TLS_GOTIE	__libc_errno
  5e:	neg    %eax
  60:	mov    %eax,%gs:(%edx)
  63:	mov    $0xffffffff,%eax
  68:	jmp    48 <fchmodat+0x48>
  6a:	lea    0x0(%esi),%esi
  70:	mov    0x0(%ebx),%eax	72: R_386_TLS_GOTIE	__libc_errno
  76:	movl   $0x16,%gs:(%eax)
  7d:	mov    $0xffffffff,%eax
  82:	jmp    48 <fchmodat+0x48>
  84:	lea    0x0(%esi,%eiz,1),%esi
  88:	mov    0x0(%ebx),%eax	8a: R_386_TLS_GOTIE	__libc_errno
  8e:	movl   $0x5f,%gs:(%eax)
  95:	mov    $0xffffffff,%eax
  9a:	jmp    48 <fchmodat+0x48>

	* sysdeps/unix/sysdep.h (INLINE_SYSCALL_RETURN): New.
	(INLINE_SYSCALL_ERROR_RETURN): Likewise.
	* sysdeps/unix/sysv/linux/adjtime.c (ADJTIME): Use
	INLINE_SYSCALL_RETURN and INLINE_SYSCALL_ERROR_RETURN.
	* sysdeps/unix/sysv/linux/aio_sigqueue.c (__aio_sigqueue):
	Likewise.
	* sysdeps/unix/sysv/linux/dl-openat64.c (openat64): Likewise.
	* sysdeps/unix/sysv/linux/eventfd.c (eventfd): Likewise.
	* sysdeps/unix/sysv/linux/faccessat.c (faccessat): Likewise.
	* sysdeps/unix/sysv/linux/fchmodat.c (fchmodat): Likewise.
	* sysdeps/unix/sysv/linux/fcntl.c (do_fcntl): Likewise.
	* sysdeps/unix/sysv/linux/fstatfs64.c (__fstatfs64): Likewise.
	* sysdeps/unix/sysv/linux/ftruncate64.c (__ftruncate64): Likewise.
	* sysdeps/unix/sysv/linux/futimens.c (futimens): Likewise.
	* sysdeps/unix/sysv/linux/futimes.c (__futimes): Likewise.
	* sysdeps/unix/sysv/linux/futimesat.c (futimesat): Likewise.
	* sysdeps/unix/sysv/linux/fxstat.c (__fxstat): Likewise.
	* sysdeps/unix/sysv/linux/fxstat64.c (___fxstat64): Likewise.
	* sysdeps/unix/sysv/linux/fxstatat.c (__fxstatat): Likewise.
	* sysdeps/unix/sysv/linux/fxstatat64.c (__fxstatat64): Likewise.
	* sysdeps/unix/sysv/linux/gai_sigqueue.c (__gai_sigqueue):
	Likewise.
	* sysdeps/unix/sysv/linux/getpriority.c (__getpriority): Likewise.
	* sysdeps/unix/sysv/linux/getrlimit64.c (__getrlimit64): Likewise.
	* sysdeps/unix/sysv/linux/llseek.c (__llseek): Likewise.
	* sysdeps/unix/sysv/linux/lutimes.c (lutimes): Likewise.
	* sysdeps/unix/sysv/linux/lxstat.c (__lxstat): Likewise.
	* sysdeps/unix/sysv/linux/lxstat64.c (___lxstat64): Likewise.
	* sysdeps/unix/sysv/linux/mmap64.c (__mmap64): Likewise.
	* sysdeps/unix/sysv/linux/mq_close.c (mq_close): Likewise.
	* sysdeps/unix/sysv/linux/mq_open.c (__mq_open): Likewise.
	* sysdeps/unix/sysv/linux/mq_unlink.c (mq_unlink): Likewise.
	* sysdeps/unix/sysv/linux/msgget.c (msgget): Likewise.
	* sysdeps/unix/sysv/linux/prlimit.c (prlimit): Likewise.
	* sysdeps/unix/sysv/linux/pt-raise.c (raise): Likewise.
	* sysdeps/unix/sysv/linux/raise.c (raise): Likewise.
	* sysdeps/unix/sysv/linux/readahead.c (__readahead): Likewise.
	* sysdeps/unix/sysv/linux/reboot.c (reboot): Likewise.
	* sysdeps/unix/sysv/linux/semget.c (semget): Likewise.
	* sysdeps/unix/sysv/linux/semop.c (semop): Likewise.
	* sysdeps/unix/sysv/linux/semtimedop.c (semtimedop): Likewise.
	* sysdeps/unix/sysv/linux/setrlimit64.c (setrlimit64): Likewise.
	* sysdeps/unix/sysv/linux/shmat.c (shmat): Likewise.
	* sysdeps/unix/sysv/linux/shmdt.c (shmdt): Likewise.
	* sysdeps/unix/sysv/linux/shmget.c (shmget): Likewise.
	* sysdeps/unix/sysv/linux/signalfd.c (signalfd): Likewise.
	* sysdeps/unix/sysv/linux/sigpending.c (sigpending): Likewise.
	* sysdeps/unix/sysv/linux/sigprocmask.c ( __sigprocmask): Likewise.
	* sysdeps/unix/sysv/linux/sigqueue.c (__sigqueue): Likewise.
	* sysdeps/unix/sysv/linux/speed.c (cfsetospeed): Likewise.
	* sysdeps/unix/sysv/linux/statfs64.c (__statfs64): Likewise.
	* sysdeps/unix/sysv/linux/sysctl.c (__sysctl): Likewise.
	* sysdeps/unix/sysv/linux/tcsendbrk.c (tcsendbreak): Likewise.
	* sysdeps/unix/sysv/linux/tcsetattr.c (tcsetattr): Likewise.
	* sysdeps/unix/sysv/linux/timer_getoverr.c (timer_getoverrun):
	Likewise.
	* sysdeps/unix/sysv/linux/timer_gettime.c (timer_gettime):
	Likewise.
	* sysdeps/unix/sysv/linux/timer_settime.c (timer_settime):
	Likewise.
	* sysdeps/unix/sysv/linux/truncate64.c (truncate64): Likewise.
	* sysdeps/unix/sysv/linux/ustat.c (ustat): Likewise.
	* sysdeps/unix/sysv/linux/utimensat.c (utimensat): Likewise.
	* sysdeps/unix/sysv/linux/utimes.c (__utimes): Likewise.
	* sysdeps/unix/sysv/linux/xmknod.c (__xmknod): Likewise.
	* sysdeps/unix/sysv/linux/xmknodat.c (__xmknodat): Likewise.
	* sysdeps/unix/sysv/linux/xstat.c (__xstat): Likewise.
	* sysdeps/unix/sysv/linux/xstat64.c (___xstat64): Likewise.
	* sysdeps/unix/sysv/linux/xstatconv.c (__xstat_conv): Likewise.
	(__xstat64_conv): Likewise.
	(__xstat32_conv): Likewise.
	* sysdeps/unix/sysv/linux/sched_getaffinity.c
	(__sched_getaffinity_new): Add libc_hidden_proto and
	libc_hidden_def.  Use INLINE_SYSCALL_ERROR_RETURN.
2015-08-21 04:46:53 -07:00
Joseph Myers
b168057aaa Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
Allan McRae
d4697bc93d Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
Joseph Myers
568035b787 Update copyright notices with scripts/update-copyrights. 2013-01-02 19:05:09 +00:00
Paul Eggert
59ba27a63a Replace FSF snail mail address with URLs. 2012-02-09 23:18:22 +00:00
Ulrich Drepper
f8de5057b9 * nscd/servicescache.c: Include kernel-features.h.
* nscd/gai.c: Likewise.
	* sysdeps/unix/sysv/linux/statfs64.c: Likewise.
	* sysdeps/unix/sysv/linux/fstatfs64.c: Likewise.
	* sysdeps/unix/sysv/linux/fxstatat.c: Likewise.
	* sysdeps/unix/sysv/linux/s390/s390-32/mmap.S: Likewise.
	* sysdeps/unix/sysv/linux/s390/s390-32/mmap64.S: Likewise.
	* sysdeps/unix/sysv/linux/xstatconv.c: Likewise.
	* sysdeps/unix/sysv/linux/if_index.c: Likewise.
	* sysdeps/unix/sysv/linux/sparc/sparc64/xstat.c: Likewise.
	* sysdeps/unix/sysv/linux/ifaddrs.c: Likewise.
2007-08-13 18:33:31 +00:00
Ulrich Drepper
08c9a553c7 Update.
2004-04-02  Ulrich Drepper  <drepper@redhat.com>

	* sysdeps/unix/sysv/linux/internal_statvfs64.c: New file.
	* sysdeps/unix/sysv/linux/Makefile [subdir=io] (sysdep_routines):
	Add internal_statvfs64.
	* sysdeps/unix/sysv/linux/internal_statvfs.c: Allow to be used to
	compile 64bit version.
	* sysdeps/unix/sysv/linux/statvfs64.c: Use __fstatfs64 and skip
	compatibility code if __ASSUME_STATFS64 is defined.
	* sysdeps/unix/sysv/linux/fstatvfs64.c: Likewise.

	* sysdeps/unix/sysv/linux/statfs64.c: Don't add __no_statfs64 if
	__ASSUME_STATFS64 != 0.

2004-04-02  Thorsten Kukuk  <kukuk@firun.suse.de>

	* nis/nss_nis/nis-ethers.c (saveit): Fix return codes in error case.
	* nis/nss_nis/nis-initgroups.c (saveit): Likewise.
	* nis/nss_nis/nis-proto.c (saveit): Likewise.
	* nis/nss_nis/nis-rpc.c (saveit): Likewise.
	* nis/nss_nis/nis-service.c (saveit): Likewise.
2004-04-03 07:50:20 +00:00
Ulrich Drepper
51d1ca00fd Update.
2003-06-24  Ulrich Drepper  <drepper@redhat.com>

	* sysdeps/unix/sysv/linux/fstatfs64.c (__fstatfs64): Add support
	for the fstatfs64 syscall.
	* sysdeps/unix/sysv/linux/statfs64.c (__statfs64): Add support for
	the statfs64 syscall.

	* sysdeps/unix/sysv/linux/kernel-features.h: Define
	__ASSUME_STATFS64 appropriately.

	* sysdeps/unix/sysv/linux/internal_statvfs.c: Use f_frsize field
	from statfs structure if it has been filled in.

	* sysdeps/unix/sysv/linux/bits/statfs.h (struct statfs): Add f_frsize
	field.
	(struct statfs64): Likewise.
	* sysdeps/unix/sysv/linux/alpha/bits/statfs.h: Likewise.
	* sysdeps/unix/sysv/linux/s390/bits/statfs.h: Likewise.

	instead of __libc_cleanup_region_*.
2003-06-24 18:59:03 +00:00
Andreas Jaeger
41bdb6e20c Update to LGPL v2.1.
2001-07-06  Paul Eggert  <eggert@twinsun.com>

	* manual/argp.texi: Remove ignored LGPL copyright notice; it's
	not appropriate for documentation anyway.
	* manual/libc-texinfo.sh: "Library General Public License" ->
	"Lesser General Public License".

2001-07-06  Andreas Jaeger  <aj@suse.de>

	* All files under GPL/LGPL version 2: Place under LGPL version
	2.1.
2001-07-06 04:58:11 +00:00
Ulrich Drepper
bb8e0116cd update.
2000-04-14  Ulrich Drepper  <drepper@redhat.com>

	* include/sys/statfs.h: Add prototypes for __statfs64 and __fstatfs64.
	* sysdeps/generic/fstatfs64.c (__fstatfs64): Renamed to fstatfs64.
	Make old name weak alias.
	* sysdeps/unix/sysv/linux/fstatfs64.c: Likewise.
	* sysdeps/generic/statfs64.c (__statfs64): Renamed to statfs64.
	Make old name weak alias.
	* sysdeps/unix/sysv/linux/statfs64.c: Likewise.

	* io/Makefile (routines): Add posix_fadvise, posix_fadvise64,
	posix_fallocate, and posix_fallocate64.
	* io/Versions [libc] (GLIBC_2.2): Add posix_fadvise, posix_fadvise64,
	posix_fallocate, and posix_fallocate64.
	* io/fcntl.h: Declare posix_fadvise, posix_fadvise64,
	posix_fallocate, and posix_fallocate64.
	* sysdeps/generic/fadvise.c: New file.
	* sysdeps/generic/fadvise64.c: New file.
	* sysdeps/generic/fallocate.c: New file.
	* sysdeps/generic/fallocate64.c: New file.
	* sysdeps/posix/fallocate.c: New file.
	* sysdeps/posix/fallocate64.c: New file.
	* sysdeps/generic/bits/fcntl.h: Define POSIX_FADV_NORMAL,
	POSIX_FADV_RANDOM, POSIX_FADV_SEQUENTIAL, POSIX_FADV_WILLNEED,
	POSIX_FADV_DONTNEED, and POSIX_FADV_NOREUSE.
	* sysdeps/mach/hurd/bits/fcntl.h: Likewise.
	* sysdeps/unix/sysv/linux/alpha/bits/fcntl.h: Likewise.
	* sysdeps/unix/sysv/linux/bits/fcntl.h: Likewise.
	* sysdeps/unix/sysv/linux/i386/bits/fcntl.h: Likewise.
	* sysdeps/unix/sysv/linux/mips/bits/fcntl.h: Likewise.
	* sysdeps/unix/sysv/linux/sparc/bits/fcntl.h: Likewise.

	* sysdeps/generic/madvise.c (__madvise): Renamed to posix_madvise.
	* sysdeps/unix/sysv/linux/syscalls.list: Likewise.
2000-04-14 07:51:02 +00:00
Ulrich Drepper
5330804225 Update.
1999-07-29  H.J. Lu  <hjl@gnu.org>

	* stdlib/mbtowc.c: Include <string.h>.
	* stdlib/wctomb.c: Likewise.
	* sysdeps/unix/sysv/linux/fstatfs64.c: Likewise.
	* sysdeps/unix/sysv/linux/statfs64.c: Likewise.

	* misc/mntent_r.c: Include <alloca.h>.
	* elf/dl-runtime.c: Likewise.
1999-07-29 23:46:10 +00:00
Roland McGrath
47b33891c4 1998-12-27 Roland McGrath <roland@baalperazim.frob.com>
* sysdeps/mach/hurd/bits/statfs.h (struct statfs, struct statfs64):
	Remove __ from member names; rename __unused to f_spare.

1998-12-21  Mark Kettenis  <kettenis@phys.uva.nl>

	Implement fstatvfs and statvfs on the Hurd.
	* sysdeps/mach/hurd/bits/statfs.h: New file.
	* sysdeps/mach/hurd/bits/statvfs.h: New file.
	* sysdeps/mach/hurd/fstatvfs.c: New file.
	* sysdeps/mach/hurd/statvfs.c: New file.

	* sysdeps/generic/fstatfs64.c: Changed into stub.
	Moved previous contents to...
	* sysdeps/unix/sysv/linux/fstatfs64.c: ...here.
	* sysdeps/generic/fstatvfs64.c: Likewise.
	* sysdeps/unix/sysv/linux/fstatvfs64.c: Likewise.
	* sysdeps/generic/statfs64.c: Likewise.
	* sysdeps/unix/sysv/linux/statfs64.c: Likewise.
	* sysdeps/generic/statvfs64.c: Likewise.
	* sysdeps/unix/sysv/linux/statvfs64.c: Likewise.

1998-12-19  Andreas Schwab  <schwab@issan.cs.uni-dortmund.de>

	* sunrpc/key_call.c (getkeyserv_handle): Use __fcntl instead of

1998-12-20  Andreas Schwab  <schwab@issan.cs.uni-dortmund.de>

	* locale/weight.h (get_weight): Extract string elements as
	unsigned values.
1998-12-27 01:40:53 +00:00