[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Commits] r18549 - in /fsf/trunk/libc: ./ elf/ manual/ nptl/ nptl/sysdeps/pthread/ nptl/sysdeps/unix/sysv/linux/x86_64/bits/ nptl/sysd...
- To: commits@xxxxxxxxxx
- Subject: [Commits] r18549 - in /fsf/trunk/libc: ./ elf/ manual/ nptl/ nptl/sysdeps/pthread/ nptl/sysdeps/unix/sysv/linux/x86_64/bits/ nptl/sysd...
- From: eglibc@xxxxxxxxxx
- Date: Tue, 15 May 2012 00:01:56 -0000
Author: eglibc
Date: Tue May 15 00:01:54 2012
New Revision: 18549
Log:
Import glibc-mainline for 2012-05-15
Added:
fsf/trunk/libc/nptl/sysdeps/x86_64/64/
fsf/trunk/libc/nptl/sysdeps/x86_64/64/shlib-versions
fsf/trunk/libc/nptl/sysdeps/x86_64/x32/shlib-versions
fsf/trunk/libc/sysdeps/i386/i686/fpu/multiarch/
fsf/trunk/libc/sysdeps/i386/i686/fpu/multiarch/Makefile
fsf/trunk/libc/sysdeps/i386/i686/fpu/multiarch/e_expf-ia32.S
fsf/trunk/libc/sysdeps/i386/i686/fpu/multiarch/e_expf-sse2.S
fsf/trunk/libc/sysdeps/i386/i686/fpu/multiarch/e_expf.c
fsf/trunk/libc/sysdeps/x86_64/64/
fsf/trunk/libc/sysdeps/x86_64/64/shlib-versions
fsf/trunk/libc/sysdeps/x86_64/x32/
fsf/trunk/libc/sysdeps/x86_64/x32/dl-machine.h
fsf/trunk/libc/sysdeps/x86_64/x32/shlib-versions
Removed:
fsf/trunk/libc/manual/.gitignore
Modified:
fsf/trunk/libc/ChangeLog
fsf/trunk/libc/NEWS
fsf/trunk/libc/elf/rtld.c
fsf/trunk/libc/manual/Makefile
fsf/trunk/libc/manual/install.texi
fsf/trunk/libc/manual/libc-texinfo.sh
fsf/trunk/libc/manual/string.texi
fsf/trunk/libc/nptl/ChangeLog
fsf/trunk/libc/nptl/shlib-versions
fsf/trunk/libc/nptl/sysdeps/pthread/pthread.h
fsf/trunk/libc/nptl/sysdeps/unix/sysv/linux/x86_64/bits/pthreadtypes.h
fsf/trunk/libc/shlib-versions
fsf/trunk/libc/sysdeps/i386/fpu/bits/mathinline.h
fsf/trunk/libc/sysdeps/ieee754/dbl-64/wordsize-64/s_logb.c
fsf/trunk/libc/sysdeps/unix/sysv/linux/check_pf.c
fsf/trunk/libc/sysdeps/unix/sysv/linux/configure
fsf/trunk/libc/sysdeps/unix/sysv/linux/configure.in
fsf/trunk/libc/sysdeps/unix/sysv/linux/dl-osinfo.h
fsf/trunk/libc/sysdeps/unix/sysv/linux/getcwd.c
fsf/trunk/libc/sysdeps/unix/sysv/linux/i386/chown.c
fsf/trunk/libc/sysdeps/unix/sysv/linux/i386/fchownat.c
fsf/trunk/libc/sysdeps/unix/sysv/linux/i386/sigaction.c
fsf/trunk/libc/sysdeps/unix/sysv/linux/if_index.c
fsf/trunk/libc/sysdeps/unix/sysv/linux/ifreq.c
fsf/trunk/libc/sysdeps/unix/sysv/linux/kernel-features.h
fsf/trunk/libc/sysdeps/unix/sysv/linux/poll.c
fsf/trunk/libc/sysdeps/unix/sysv/linux/powerpc/chown.c
fsf/trunk/libc/sysdeps/unix/sysv/linux/powerpc/fchownat.c
fsf/trunk/libc/sysdeps/unix/sysv/linux/powerpc/powerpc32/pread.c
fsf/trunk/libc/sysdeps/unix/sysv/linux/powerpc/powerpc32/pread64.c
fsf/trunk/libc/sysdeps/unix/sysv/linux/powerpc/powerpc32/pwrite.c
fsf/trunk/libc/sysdeps/unix/sysv/linux/powerpc/powerpc32/pwrite64.c
fsf/trunk/libc/sysdeps/unix/sysv/linux/powerpc/powerpc64/pread.c
fsf/trunk/libc/sysdeps/unix/sysv/linux/powerpc/powerpc64/pread64.c
fsf/trunk/libc/sysdeps/unix/sysv/linux/powerpc/powerpc64/pwrite.c
fsf/trunk/libc/sysdeps/unix/sysv/linux/powerpc/powerpc64/pwrite64.c
fsf/trunk/libc/sysdeps/unix/sysv/linux/pread.c
fsf/trunk/libc/sysdeps/unix/sysv/linux/pread64.c
fsf/trunk/libc/sysdeps/unix/sysv/linux/ptsname.c
fsf/trunk/libc/sysdeps/unix/sysv/linux/pwrite.c
fsf/trunk/libc/sysdeps/unix/sysv/linux/pwrite64.c
fsf/trunk/libc/sysdeps/unix/sysv/linux/sh/pread.c
fsf/trunk/libc/sysdeps/unix/sysv/linux/sh/pread64.c
fsf/trunk/libc/sysdeps/unix/sysv/linux/sh/pwrite.c
fsf/trunk/libc/sysdeps/unix/sysv/linux/sh/pwrite64.c
fsf/trunk/libc/sysdeps/unix/sysv/linux/sigaction.c
fsf/trunk/libc/sysdeps/unix/sysv/linux/sigpending.c
fsf/trunk/libc/sysdeps/unix/sysv/linux/sigprocmask.c
fsf/trunk/libc/sysdeps/unix/sysv/linux/sigsuspend.c
fsf/trunk/libc/sysdeps/unix/sysv/linux/sparc/sparc32/sigaction.c
fsf/trunk/libc/sysdeps/unix/sysv/linux/syslog.c
fsf/trunk/libc/sysdeps/unix/sysv/linux/testrtsig.h
fsf/trunk/libc/sysdeps/unix/sysv/linux/ttyname.c
fsf/trunk/libc/sysdeps/unix/sysv/linux/ttyname_r.c
fsf/trunk/libc/sysdeps/unix/sysv/linux/x86_64/sysdep.h
fsf/trunk/libc/sysdeps/x86_64/dl-machine.h
fsf/trunk/libc/sysdeps/x86_64/sysdep.h
Modified: fsf/trunk/libc/ChangeLog
==============================================================================
--- fsf/trunk/libc/ChangeLog (original)
+++ fsf/trunk/libc/ChangeLog Tue May 15 00:01:54 2012
@@ -1,3 +1,276 @@
+2012-05-14 H.J. Lu <hongjiu.lu@xxxxxxxxx>
+
+ * shlib-versions: Move x86_64-.*-linux.* entries to ...
+ * sysdeps/x86_64/64/shlib-versions: Here. New file.
+ * sysdeps/x86_64/x32/shlib-versions: New file.
+
+2012-05-14 Roland McGrath <roland@xxxxxxxxxxxxx>
+
+ * sysdeps/unix/sysv/linux/dl-osinfo.h (dl_fatal): Function removed.
+ * elf/rtld.c (dl_main) [DL_SYSDEP_OSCHECK]:
+ Use _dl_fatal_printf instead.
+
+2012-05-14 Joseph Myers <joseph@xxxxxxxxxxxxxxxx>
+
+ * sysdeps/unix/sysv/linux/configure.in (minimum_kernel): Always
+ set if not set by the user. Do not allow for being unset.
+ * sysdeps/unix/sysv/linux/configure: Regenerated.
+
+2012-05-14 H.J. Lu <hongjiu.lu@xxxxxxxxx>
+
+ * sysdeps/x86_64/dl-machine.h (elf_machine_load_address): Remove
+ the `q' suffix from lea and replace .quad with ASM_ADDR.
+
+2012-05-14 H.J. Lu <hongjiu.lu@xxxxxxxxx>
+
+ * sysdeps/unix/sysv/linux/x86_64/sysdep.h (PTR_MANGLE): Remove
+ the `q' suffix from xor/rol instructions. Use $2*LP_SIZE+1
+ instead of $17.
+ (PTR_DEMANGLE): Likewise.
+
+2012-05-14 H.J. Lu <hongjiu.lu@xxxxxxxxx>
+
+ * sysdeps/x86_64/sysdep.h (LP_SIZE): New macro.
+ (LP_OP): Likewise.
+ (ASM_ADDR): Likewise.
+ (RAX_LP): Likewise.
+ (RBP_LP): Likewise.
+ (RBX_LP): Likewise.
+ (RCX_LP): Likewise.
+ (RDI_LP): Likewise.
+ (RSI_LP): Likewise.
+ (RSP_LP): Likewise.
+ (R8_LP): Likewise.
+ (R9_LP): Likewise.
+ (R10_LP): Likewise.
+ (R10_LP): Likewise.
+ (R11_LP): Likewise.
+ (R12_LP): Likewise.
+ (R13_LP): Likewise.
+ (R14_LP): Likewise.
+ (R15_LP): Likewise.
+
+2012-05-14 H.J. Lu <hongjiu.lu@xxxxxxxxx>
+
+ * sysdeps/x86_64/x32/dl-machine.h: New file.
+
+2012-05-14 Andreas Jaeger <aj@xxxxxxx>
+
+ * manual/Makefile (subdir): Remove export of subdir.
+ (all): Remove target.
+ (.PHONY): Remove all from list.
+ (mkinstalldirs): Remove.
+ (.PHONY): Remove installdirs from list.
+ ($(inst_infodir)/libc.info): Use make-target-directory.
+ (installdirs): Remove.
+ (subdir_%): Remove.
+ (glibc-targets): Remove.
+ (lib): Remove.
+ (stubs): Remove.
+ ($(objpfx)stubs ../po/manual.pot): Remove.
+ ($(objpfx)stamp%): Remove.
+ (make-target-directory): Remove.
+ (subdir_install): Remove.
+ (routines): Remove.
+ (aux): Remove.
+ (sources): Remove.
+ (objects): Remove.
+ (headers): Remove.
+
+ [BZ #13750]
+ * manual/.gitignore: Remove, it's not needed anymore.
+ * manual/libc-texinfo.sh: Pass OUTDIR as extra argument, create
+ all files in it.
+ * manual/Makefile (dvi, pdf, info, html): Depend on files in build
+ directory.
+ (texis): Renamed to $(objpfx)texis.
+ (texis-path): New, contains path to generated files.
+ (chapters.%): Use texis-path for complete path, add extra argument
+ libc-texinfo.sh.
+ (libc.dvi, libc.pdf, libc.info, libc.pdf): Add $(objfpx) as prefix.
+ (libc/index.html, summary.texi): Add $(objpfx) as prefix.
+ (summary,texi, stamp-summary): Use complete path of
+ files. Generate files in build dir.
+ (dir-add.texi): Build in build dir.
+ (libm-err.texi,stamp-libm-err): Likewise.
+ (version.texi, stamp-version): Likewise.
+ (.%c.texi): Likewise.
+ (%.info,%.dvi,%.pdf): Add $(objpfx) as prefix, build in build dir.
+ (mostlyclean): Remove target.
+ (realclean): Remove target.
+ (generated): Add new variable with contents from mostlyclean and
+ realclean, remove entries duplicated in common-mostlyclean, add
+ stamp-libm-err and stamp-version.
+ (generated-dirs): Add libc directory.
+ ($(inst_infodir)/libc.info): Install files from build dir.
+
+ * manual/install.texi (Configuring and compiling): Adjust since
+ the info files are not part of the tar ball anymore.
+
+2012-05-14 Andreas Jaeger <aj@xxxxxxx>
+
+ * sysdeps/unix/sysv/linux/getcwd.c (__getcwd): Remove unused
+ variable.
+
+2012-05-14 Joseph Myers <joseph@xxxxxxxxxxxxxxxx>
+
+ [BZ #13717]
+ * sysdeps/unix/sysv/linux/configure.in (arch_minimum_kernel): Set
+ to 2.2.0 where earlier.
+ * sysdeps/unix/sysv/linux/configure: Regenerated.
+ * sysdeps/unix/sysv/linux/getcwd.c [!__ASSUME_GETCWD_SYSCALL]:
+ Remove conditional code.
+ [__ASSUME_GETCWD_SYSCALL]: Make code unconditional.
+ * sysdeps/unix/sysv/linux/i386/chown.c [!__ASSUME_LCHOWN_SYSCALL]:
+ Remove conditional code.
+ [!__NR_lchown]: Likewise.
+ [__ASSUME_LCHOWN_SYSCALL]: Make code unconditional.
+ [__NR_lchown]: Likewise.
+ * sysdeps/unix/sysv/linux/i386/fchownat.c (fchownat): Remove
+ comment referencing __ASSUME_LCHOWN_SYSCALL.
+ * sysdeps/unix/sysv/linux/i386/sigaction.c
+ [!__ASSUME_REALTIME_SIGNALS]: Remove conditional code.
+ [__ASSUME_REALTIME_SIGNALS]: Make code unconditional.
+ * sysdeps/unix/sysv/linux/if_index.c [!__ASSUME_SIOCGIFNAME]:
+ Remove conditional code.
+ [__ASSUME_SIOCGIFNAME ]: Make code unconditional.
+ (__protocol_available): Remove #if 0 code.
+ * sysdeps/unix/sysv/linux/ifreq.c [!__ASSUME_SIOCGIFNAME]: Remove
+ conditional code.
+ [__ASSUME_SIOCGIFNAME]: Make code unconditional.
+ * sysdeps/unix/sysv/linux/kernel-features.h
+ (__ASSUME_GETCWD_SYSCALL): Don't define.
+ (__ASSUME_REALTIME_SIGNALS): Likewise.
+ (__ASSUME_PREAD_SYSCALL): Likewise.
+ (__ASSUME_PWRITE_SYSCALL): Likewise.
+ (__ASSUME_POLL_SYSCALL): Likewise.
+ (__ASSUME_LCHOWN_SYSCALL): Likewise.
+ (__ASSUME_SETRESUID_SYSCALL): Define for all kernel versions for
+ non-SPARC.
+ (__ASSUME_SIOCGIFNAME): Don't define.
+ (__ASSUME_MSG_NOSIGNAL): Likewise.
+ (__ASSUME_SENDFILE): Define unconditionally.
+ (__ASSUME_PROC_SELF_FD_SYMLINK): Don't define.
+ * sysdeps/unix/sysv/linux/poll.c [!__ASSUME_POLL_SYSCALL]: Remove
+ conditional code.
+ [__ASSUME_POLL_SYSCALL]: Make code unconditional.
+ * sysdeps/unix/sysv/linux/powerpc/chown.c (__chown)
+ [!__ASSUME_LCHOWN_SYSCALL]: Remove conditional code.
+ (__chown) [__ASSUME_LCHOWN_SYSCALL]: Make code unconditional.
+ * sysdeps/unix/sysv/linux/powerpc/fchownat.c (fchownat)
+ [!__ASSUME_LCHOWN_SYSCALL]: Remove conditional code.
+ (fchownat) [__ASSUME_LCHOWN_SYSCALL]: Make code unconditional.
+ * sysdeps/unix/sysv/linux/powerpc/powerpc32/pread.c
+ [!__ASSUME_PREAD_SYSCALL]: Remove conditional code.
+ [__ASSUME_PREAD_SYSCALL]: Make code unconditional.
+ * sysdeps/unix/sysv/linux/powerpc/powerpc32/pread64.c
+ [!__ASSUME_PREAD_SYSCALL]: Remove conditional code.
+ [__ASSUME_PREAD_SYSCALL]: Make code unconditional.
+ * sysdeps/unix/sysv/linux/powerpc/powerpc32/pwrite.c
+ [!__ASSUME_PWRITE_SYSCALL]: Remove conditional code.
+ [__ASSUME_PWRITE_SYSCALL]: Make code unconditional.
+ * sysdeps/unix/sysv/linux/powerpc/powerpc32/pwrite64.c
+ [!__ASSUME_PWRITE_SYSCALL]: Remove conditional code.
+ [__ASSUME_PWRITE_SYSCALL]: Make code unconditional.
+ * sysdeps/unix/sysv/linux/powerpc/powerpc64/pread.c
+ [!__ASSUME_PREAD_SYSCALL]: Remove conditional code.
+ [__ASSUME_PREAD_SYSCALL]: Make code unconditional.
+ * sysdeps/unix/sysv/linux/powerpc/powerpc64/pread64.c
+ [!__ASSUME_PREAD_SYSCALL]: Remove conditional code.
+ [__ASSUME_PREAD_SYSCALL]: Make code unconditional.
+ * sysdeps/unix/sysv/linux/powerpc/powerpc64/pwrite.c
+ [!__ASSUME_PWRITE_SYSCALL]: Remove conditional code.
+ [__ASSUME_PWRITE_SYSCALL]: Make code unconditional.
+ * sysdeps/unix/sysv/linux/powerpc/powerpc64/pwrite64.c
+ [!__ASSUME_PWRITE_SYSCALL]: Remove conditional code.
+ [__ASSUME_PWRITE_SYSCALL]: Make code unconditional.
+ * sysdeps/unix/sysv/linux/pread.c [!__ASSUME_PREAD_SYSCALL]:
+ Remove conditional code.
+ [__ASSUME_PREAD_SYSCALL]: Make code unconditional.
+ * sysdeps/unix/sysv/linux/pread64.c [!__ASSUME_PREAD_SYSCALL]:
+ Remove conditional code.
+ [__ASSUME_PREAD_SYSCALL]: Make code unconditional.
+ * sysdeps/unix/sysv/linux/ptsname.c (__ptsname_internal)
+ [__LINUX_KERNEL_VERSION < 131443]: Remove conditional code.
+ * sysdeps/unix/sysv/linux/pwrite.c [!__ASSUME_PWRITE_SYSCALL]:
+ Remove conditional code.
+ [__ASSUME_PWRITE_SYSCALL]: Make code unconditional.
+ * sysdeps/unix/sysv/linux/pwrite64.c [!__ASSUME_PWRITE_SYSCALL]:
+ Remove conditional code.
+ [__ASSUME_PWRITE_SYSCALL]: Make code unconditional.
+ * sysdeps/unix/sysv/linux/sh/pread.c [!__ASSUME_PREAD_SYSCALL]:
+ Remove conditional code.
+ [__ASSUME_PREAD_SYSCALL]: Make code unconditional.
+ * sysdeps/unix/sysv/linux/sh/pread64.c [!__ASSUME_PREAD_SYSCALL]:
+ Remove conditional code.
+ [__ASSUME_PREAD_SYSCALL]: Make code unconditional.
+ * sysdeps/unix/sysv/linux/sh/pwrite.c [!__ASSUME_PWRITE_SYSCALL]:
+ Remove conditional code.
+ [__ASSUME_PWRITE_SYSCALL]: Make code unconditional.
+ * sysdeps/unix/sysv/linux/sh/pwrite64.c
+ [!__ASSUME_PWRITE_SYSCALL]: Remove conditional code.
+ [__ASSUME_PWRITE_SYSCALL]: Make code unconditional.
+ * sysdeps/unix/sysv/linux/sigaction.c
+ [!__ASSUME_REALTIME_SIGNALS]: Remove conditional code.
+ [__ASSUME_REALTIME_SIGNALS]: Make code unconditional.
+ * sysdeps/unix/sysv/linux/sigpending.c
+ [!__ASSUME_REALTIME_SIGNALS]: Remove conditional code.
+ [__ASSUME_REALTIME_SIGNALS]: Make code unconditional.
+ * sysdeps/unix/sysv/linux/sigprocmask.c
+ [!__ASSUME_REALTIME_SIGNALS]: Remove conditional code.
+ [__ASSUME_REALTIME_SIGNALS]: Make code unconditional.
+ * sysdeps/unix/sysv/linux/sigsuspend.c
+ [!__ASSUME_REALTIME_SIGNALS]: Remove conditional code.
+ [__ASSUME_REALTIME_SIGNALS]: Make code unconditional.
+ * sysdeps/unix/sysv/linux/sparc/sparc32/sigaction.c
+ (__libc_missing_rt_sigs): Remove.
+ (__libc_sigaction) [__NR_rt_sigaction]: Make code unconditional.
+ (__libc_sigaction): Do not handle ENOSYS from rt_sigaction.
+ * sysdeps/unix/sysv/linux/syslog.c [!__ASSUME_MSG_NOSIGNAL]:
+ Remove conditional code.
+ [__ASSUME_MSG_NOSIGNAL]: Make code unconditional.
+ * sysdeps/unix/sysv/linux/testrtsig.h (kernel_has_rtsig): Always
+ return 1.
+ * sysdeps/unix/sysv/linux/ttyname.c (ttyname)
+ [!__ASSUME_PROC_SELF_FD_SYMLINK]: Remove conditional code.
+ * sysdeps/unix/sysv/linux/ttyname_r.c (__ttyname_r)
+ [!__ASSUME_PROC_SELF_FD_SYMLINK]: Likewise.
+
+2012-05-14 Andreas Jaeger <aj@xxxxxxx>
+
+ * sysdeps/i386/fpu/bits/mathinline.h (__pow2): Remove,
+ it's not used in glibc.
+ (__coshm1): Likewise.
+ (__acosh1p): Likewise.
+ (__sgn): Likewise.
+
+ * manual/string.texi (Copying and Concatenation): Add missing
+ variable in concat example.
+ Reported by David C. Rankin <drankinatty@xxxxxxxxxxxxxxxxxx>.
+
+2012-05-14 H.J. Lu <hongjiu.lu@xxxxxxxxx>
+
+ [BZ #14103]
+ * sysdeps/ieee754/dbl-64/wordsize-64/s_logb.c (__logb): Replace
+ __builtin_clzl with __builtin_clzll.
+
+2012-05-14 H.J. Lu <hongjiu.lu@xxxxxxxxx>
+
+ [BZ #14104]
+ * sysdeps/unix/sysv/linux/check_pf.c (cache): Use
+ libc_freeres_ptr.
+
+2012-05-14 Liubov Dmitrieva <liubov.dmitrieva@xxxxxxxxx>
+
+ * sysdeps/i386/i686/fpu/multiarch/Makefile: New file.
+ * sysdeps/i386/i686fpu/multiarch/e_expf.c: New file.
+ * sysdeps/i386/i686fpu/multiarch/e_expf-ia32.S: New file.
+ * sysdeps/i386/i686/fpu/multiarch/e_expf-sse2.S: New file.
+
+2012-05-14 Mike Frysinger <vapier@xxxxxxxxxx>
+
+ * NEWS: Update ia64 info.
+
2012-05-12 Andreas Schwab <schwab@xxxxxxxxxxxxxx>
* sysdeps/powerpc/memmove.c (MEMMOVE): Don't return a value if
Modified: fsf/trunk/libc/NEWS
==============================================================================
--- fsf/trunk/libc/NEWS (original)
+++ fsf/trunk/libc/NEWS Tue May 15 00:01:54 2012
@@ -18,14 +18,14 @@
11494, 11521, 11837, 11959, 12047, 12340, 13058, 13525, 13526, 13527,
13528, 13529, 13530, 13531, 13532, 13533, 13547, 13551, 13552, 13553,
13555, 13559, 13563, 13566, 13583, 13592, 13618, 13637, 13656, 13658,
- 13673, 13691, 13695, 13704, 13705, 13706, 13726, 13738, 13739, 13758,
- 13760, 13761, 13775, 13786, 13787, 13792, 13806, 13824, 13840, 13841,
- 13844, 13846, 13851, 13852, 13854, 13871, 13872, 13873, 13879, 13883,
- 13884, 13885, 13886, 13892, 13895, 13908, 13910, 13911, 13912, 13913,
- 13914, 13915, 13916, 13917, 13918, 13919, 13920, 13921, 13922, 13923,
- 13924, 13926, 13927, 13928, 13938, 13941, 13942, 13954, 13955, 13956,
- 13963, 13967, 13970, 13973, 13979, 13983, 14012, 14027, 14033, 14034,
- 14040, 14049, 14053, 14055, 14064, 14080, 14083
+ 13673, 13691, 13695, 13704, 13705, 13706, 13726, 13738, 13739, 13750,
+ 13758, 13760, 13761, 13775, 13786, 13787, 13792, 13806, 13824, 13840,
+ 13841, 13844, 13846, 13851, 13852, 13854, 13871, 13872, 13873, 13879,
+ 13883, 13884, 13885, 13886, 13892, 13895, 13908, 13910, 13911, 13912,
+ 13913, 13914, 13915, 13916, 13917, 13918, 13919, 13920, 13921, 13922,
+ 13923, 13924, 13926, 13927, 13928, 13938, 13941, 13942, 13954, 13955,
+ 13956, 13963, 13967, 13970, 13973, 13979, 13983, 14012, 14027, 14033,
+ 14034, 14040, 14049, 14053, 14055, 14064, 14080, 14083, 14103, 14104
* ISO C11 support:
@@ -48,7 +48,7 @@
Implemented by Ulrich Drepper.
-* Support for the IA-64 is removed and could live in ports.
+* Support for the IA-64 has been moved to ports.
* Remove support for anything but ELF binary format
@@ -63,6 +63,10 @@
version 2.14. This option will be removed at some time in the future
after the TI-RPC library becomes fully sufficient for the needs of
existing applications.
+
+* Compatibility code for Linux kernel versions before 2.2 has been removed.
+ Note that glibc is not expected to work with any Linux kernel version
+ before 2.6.
Version 2.15
@@ -989,68 +993,6 @@
Masahide Washizawa.
* IA-64 port by Jes Sorensen and HJ Lu.
-
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-Compiling the GNU C Library for Linux/ia64
-******************************************
-
- Please refer to the file INSTALL in the same directory as you found
-this file for general information about configuring and compiling
-glibc.
-
- For general inquiries about glibc under Linux/ia64 please use the
-following mailing list linux-ia64@xxxxxxxxxxxxx or one of the relevant
-glibc mailing lists.
-
-Recommended Tools for Compilation
-=================================
-
- In order for glibc-2.2 to build correctly on the ia64 you need at
-least the following versions of the GNU tools (the :
-
- * The Cygnus toolchain snapshot for the ia64 as of August 4
- including the provided set of patches. It is however recommend
- you use the October 24 toolchain snapshot or a more recent version.
-
- OR alternatively you can try the following (the Cygnus toolchain is
- the recommended solution):
-
- * GCC and binutils, GAS and GNU LD out of CVS from
- sources.redhat.com as of August 28, 2000 or later. The CVS tree
- may require special patches to work properly on the ia64.
-
-Configuring and compiling GNU Libc for Linux/ia64
-=================================================
-
- The library requires Linux kernel version 2.4.0-test4-000728 or
-later to funtion properly. Besides that it support for debug libraries
-is currently untested. Hence the following options
-are required for configuring the library:
-
- --disable-debug --enable-kernel=2.4.0
-
- It is also important that you make sure the library picks up the
-appropriate kernel header files, if you do not have recent enough
-kernel headers in /usr/src/linux/include, you should use the
---with-headers=<path> option to specify the location.
-
- As an example I personally use the following options to configure
-the library:
-
- --disable-debug
- --disable-cvs
- --enable-kernel=2.4.0
- --host=ia64-linux
- --enable-add-ons=yes
- --prefix=/usr
- --with-headers=/home/jes/linux/include
-
-
-Good luck
-
-Jes Sorensen <jes@xxxxxxxxxxxxx>,
-November 14th, 2000
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Version 2.1.3
Modified: fsf/trunk/libc/elf/rtld.c
==============================================================================
--- fsf/trunk/libc/elf/rtld.c (original)
+++ fsf/trunk/libc/elf/rtld.c Tue May 15 00:01:54 2012
@@ -1432,7 +1432,7 @@
#endif
#ifdef DL_SYSDEP_OSCHECK
- DL_SYSDEP_OSCHECK (dl_fatal);
+ DL_SYSDEP_OSCHECK (_dl_fatal_printf);
#endif
/* Initialize the data structures for the search paths for shared
Removed: fsf/trunk/libc/manual/.gitignore
==============================================================================
--- fsf/trunk/libc/manual/.gitignore (original)
+++ fsf/trunk/libc/manual/.gitignore (removed)
@@ -1,30 +1,0 @@
-*.aux
-*.c.texi
-*.cp
-*.cps
-*.dvi*
-*.fn
-*.fns
-*.info*
-*.ky
-*.kys
-*.log
-*.pdf
-*.pg
-*.pgs
-*.ps
-*.tmp
-*.toc
-*.tp
-*.tps
-*.vr
-*.vrs
-chapters.texi
-dir-add.texi
-dir-add.texinfo
-libm-err.texi
-stamp-*
-summary.texi
-texis
-top-menu.texi
-version.texi
Modified: fsf/trunk/libc/manual/Makefile
==============================================================================
--- fsf/trunk/libc/manual/Makefile (original)
+++ fsf/trunk/libc/manual/Makefile Tue May 15 00:01:54 2012
@@ -19,28 +19,24 @@
# Makefile for the GNU C Library manual.
subdir := manual
-export subdir := $(subdir)
# Allow override
INSTALL_INFO = install-info
-.PHONY: all dvi pdf info html
-all: dvi
-dvi: libc.dvi
-pdf: libc.pdf
+.PHONY: dvi pdf info html
# Get glibc's configuration info.
include ../Makeconfig
+
+dvi: $(objpfx)libc.dvi
+pdf: $(objpfx)libc.pdf
TEXI2DVI = texi2dvi
TEXI2PDF = texi2dvi --pdf
ifneq ($(strip $(MAKEINFO)),:)
-all: info
-info: libc.info
+info: $(objpfx)libc.info
endif
-
-mkinstalldirs = $(..)scripts/mkinstalldirs
chapters = $(addsuffix .texi, \
intro errno memory ctype string charset locale \
@@ -52,8 +48,8 @@
appendices = lang.texi header.texi install.texi maint.texi contrib.texi
licenses = freemanuals.texi lgpl-2.1.texi fdl-1.3.texi
--include texis
-texis: texis.awk $(chapters) $(add-chapters) $(appendices) $(licenses)
+-include $(objpfx)texis
+$(objpfx)texis: texis.awk $(chapters) $(add-chapters) $(appendices) $(licenses)
$(AWK) -f $^ > $@.T
mv -f $@.T $@
@@ -61,34 +57,45 @@
examples = $(filter-out $(foreach d, $(add-ons), ../$d/%.c.texi), \
$(filter %.c.texi, $(texis)))
-# Kludge: implicit rule so Make knows the one command does it all.
-chapters.% top-menu.%: libc-texinfo.sh $(texis) Makefile
- AWK=$(AWK) $(SHELL) $< '$(chapters)' \
- '$(add-chapters)' \
- '$(appendices) $(licenses)'
-
# Generated files directly included from libc.texinfo.
libc-texi-generated = chapters.texi top-menu.texi dir-add.texi \
libm-err.texi version.texi
-libc.dvi libc.pdf libc.info: $(libc-texi-generated)
-libc.dvi libc.pdf: texinfo.tex
+# Add path to build dir for generated files
+texis-path := $(filter-out $(libc-texi-generated) summary.texi $(examples), \
+ $(texis)) \
+ $(addprefix $(objpfx),$(filter $(libc-texi-generated) summary.texi \
+ $(examples), $(texis)))
-html: libc/index.html
-libc/index.html: $(libc-texi-generated)
- $(MAKEINFO) --html libc.texinfo
+# Kludge: implicit rule so Make knows the one command does it all.
+chapters.% top-menu.%: libc-texinfo.sh $(texis-path) Makefile
+ AWK=$(AWK) $(SHELL) $< $(objpfx) \
+ '$(chapters)' \
+ '$(add-chapters)' \
+ '$(appendices) $(licenses)'
+
+
+$(objpfx)libc.dvi $(objpfx)libc.pdf $(objpfx)libc.info: \
+ $(addprefix $(objpfx),$(libc-texi-generated))
+$(objpfx)libc.dvi $(objpfx)libc.pdf: texinfo.tex
+
+html: $(objpfx)libc/index.html
+$(objpfx)libc/index.html: $(addprefix $(objpfx),$(libc-texi-generated))
+ $(MAKEINFO) -P $(objpfx) -o $(objpfx)libc --html libc.texinfo
# Generate the summary from the Texinfo source files for each chapter.
-summary.texi: stamp-summary ;
-stamp-summary: summary.awk $(filter-out summary.texi, $(texis))
- $(AWK) -f $^ | sort -t'' -df -k 1,1 | tr '\014' '\012' > summary-tmp
- $(move-if-change) summary-tmp summary.texi
+$(objpfx)summary.texi: $(objpfx)stamp-summary ;
+$(objpfx)stamp-summary: summary.awk $(filter-out $(objpfx)summary.texi, \
+ $(texis-path))
+ $(AWK) -f $^ | sort -t'' -df -k 1,1 | tr '\014' '\012' \
+ > $(objpfx)summary-tmp
+ $(move-if-change) $(objpfx)summary-tmp $(objpfx)summary.texi
touch $@
# Generate a file which can be added to the `dir' content to provide direct
# access to the documentation of the function, variables, and other
# definitions.
-dir-add.texi: xtract-typefun.awk $(texis)
+$(objpfx)dir-add.texi: xtract-typefun.awk $(texis-path)
(echo "@dircategory GNU C library functions and macros"; \
echo "@direntry"; \
$(AWK) -f $^ | sort; \
@@ -96,23 +103,23 @@
mv -f $@.new $@
# The table with the math errors is generated.
-libm-err.texi: stamp-libm-err
-stamp-libm-err: libm-err-tab.pl $(wildcard $(foreach dir,$(sysdirs),\
+$(objpfx)libm-err.texi: $(objpfx)stamp-libm-err
+$(objpfx)stamp-libm-err: libm-err-tab.pl $(wildcard $(foreach dir,$(sysdirs),\
$(dir)/libm-test-ulps))
pwd=`pwd`; \
- $(PERL) $< $$pwd/.. > libm-err-tmp
- $(move-if-change) libm-err-tmp libm-err.texi
+ $(PERL) $< $$pwd/.. > $(objpfx)libm-err-tmp
+ $(move-if-change) $(objpfx)libm-err-tmp $(objpfx)libm-err.texi
touch $@
# Generate a file with the version number.
-version.texi: stamp-version ;
-stamp-version: $(common-objpfx)config.make
- echo "@set VERSION $(version)" > version-tmp
- $(move-if-change) version-tmp version.texi
+$(objpfx)version.texi: $(objpfx)stamp-version ;
+$(objpfx)stamp-version: $(common-objpfx)config.make
+ echo "@set VERSION $(version)" > $(objpfx)version-tmp
+ $(move-if-change) $(objpfx)version-tmp $(objpfx)version.texi
touch $@
# Generate Texinfo files from the C source for the example programs.
-%.c.texi: examples/%.c
+$(objpfx)%.c.texi: examples/%.c
sed -e '1,/^\*\/$$/d' \
-e 's,[{}],@&,g' \
-e 's,/\*\(@.*\)\*/,\1,g' \
@@ -121,14 +128,17 @@
$< | expand > $@.new
mv -f $@.new $@
-%.info: %.texinfo
- LANGUAGE=C LC_ALL=C $(MAKEINFO) $<
+$(objpfx)%.info: %.texinfo
+ LANGUAGE=C LC_ALL=C $(MAKEINFO) -P $(objpfx) --output=$@ $<
-%.dvi: %.texinfo
- $(TEXI2DVI) $<
+$(objpfx)%.dvi: %.texinfo
+ cd $(objpfx);$(TEXI2DVI) -I $(shell cd $(<D) && pwd) --output=$@ \
+ $(shell cd $(<D) && pwd)/$<
-%.pdf: %.texinfo
- $(TEXI2PDF) $<
+$(objpfx)%.pdf: %.texinfo
+ cd $(objpfx);$(TEXI2PDF) -I $(shell cd $(<D) && pwd) --output=$@ \
+ $(shell cd $(<D) && pwd)/$<
+
# Distribution.
minimal-dist = summary.awk texis.awk tsort.awk libc-texinfo.sh libc.texinfo \
@@ -136,21 +146,19 @@
$(filter-out summary.texi, $(nonexamples)) \
$(patsubst %.c.texi,examples/%.c, $(examples))
-.PHONY: mostlyclean distclean realclean clean
-mostlyclean:
- -rm -f libc.dvi libc.pdf libc.tmp libc.info*
- -rm -f $(objpfx)stubs
- -rm -f $(foreach o,$(object-suffixes-for-libc),$(objpfx)stamp$o)
-clean: mostlyclean
-distclean: clean
indices = cp fn pg tp vr ky
-realclean: distclean
- -rm -f texis summary.texi stamp-summary *.c.texi
- -rm -f $(foreach index,$(indices),libc.$(index) libc.$(index)s)
- -rm -f libc.log libc.aux libc.toc
- -rm -f $(libc-texi-generated)
+generated-dirs := libc
+generated = libc.dvi libc.pdf libc.tmp libc.info* \
+ stubs \
+ texis summary.texi stamp-summary *.c.texi \
+ $(foreach index,$(indices),libc.$(index) libc.$(index)s) \
+ libc.log libc.aux libc.toc \
+ $(libc-texi-generated) \
+ stamp-libm-err stamp-version
-.PHONY: install subdir_install installdirs install-data
+include ../Rules
+
+.PHONY: install subdir_install install-data
install-data subdir_install: install
ifneq ($(strip $(MAKEINFO)),:)
install: $(inst_infodir)/libc.info
@@ -162,58 +170,11 @@
# Catchall implicit rule for other installation targets from the parent.
install-%: ;
-$(inst_infodir)/libc.info: libc.info installdirs
+$(inst_infodir)/libc.info: $(objpfx)libc.info
+ $(make-target-directory)
for file in $<*; do \
- $(INSTALL_DATA) $$file $(@D)/$$file; \
+ $(INSTALL_DATA) $$file $(@D)/; \
done
-
-installdirs:
- $(mkinstalldirs) $(inst_infodir)
TAGS: $(minimal-dist)
$(ETAGS) -o $@ $^
-
-# The parent makefile sometimes invokes us with targets `subdir_REAL-TARGET'.
-subdir_%: % ;
-# For targets we don't define, do nothing.
-subdir_%: ;
-
-# These are targets that each glibc subdirectory is expected to understand.
-# ../Rules defines them for code subdirectories; for us, they are no-ops.
-# None of these should be `subdir_TARGET'; those targets are transformed
-# by the implicit rule above into `TARGET' deps.
-glibc-targets := lib objects objs others tests xtests lint.out echo-headers
-.PHONY: $(glibc-targets)
-$(glibc-targets):
-
-# Create stamp files if they don't exist, so the parent makefile's rules for
-# updating the library archives are happy with us, and never think we have
-# changed the library.
-lib: $(foreach o,$(object-suffixes-for-libc),$(objpfx)stamp$o)
-ifdef objpfx
-.PHONY: stubs
-stubs: $(objpfx)stubs
-endif
-$(objpfx)stubs ../po/manual.pot:
- $(make-target-directory)
- touch $@
-$(objpfx)stamp%:
- $(make-target-directory)
- touch $@
-
-# Make the target directory if it doesn't exist, using the `mkinstalldirs'
-# script that does `mkdir -p' even if `mkdir' doesn't support that flag.
-define make-target-directory
-$(addprefix $(mkinstalldirs) ,\
- $(filter-out $(wildcard $(@D:%/=%)),$(@D:%/=%)))
-endef
-
-# The top-level glibc Makefile expects subdir_install to update the stubs file.
-subdir_install: stubs
-
-# Get rid of these variables if they came from the parent.
-routines =
-aux =
-sources =
-objects =
-headers =
Modified: fsf/trunk/libc/manual/install.texi
==============================================================================
--- fsf/trunk/libc/manual/install.texi (original)
+++ fsf/trunk/libc/manual/install.texi Tue May 15 00:01:54 2012
@@ -203,10 +203,10 @@
These files must all contain correct and sensible content.
To format the @cite{GNU C Library Reference Manual} for printing, type
-@w{@code{make dvi}}. You need a working @TeX{} installation to do this.
-The distribution already includes the on-line formatted version of the
-manual, as Info files. You can regenerate those with @w{@code{make
-info}}, but it shouldn't be necessary.
+@w{@code{make dvi}}. You need a working @TeX{} installation to do
+this. The distribution builds the on-line formatted version of the
+manual, as Info files, as part of the build process. You can build
+them manually with @w{@code{make info}}.
The library has a number of special-purpose configuration parameters
which you can find in @file{Makeconfig}. These can be overwritten with
Modified: fsf/trunk/libc/manual/libc-texinfo.sh
==============================================================================
--- fsf/trunk/libc/manual/libc-texinfo.sh (original)
+++ fsf/trunk/libc/manual/libc-texinfo.sh Tue May 15 00:01:54 2012
@@ -1,10 +1,13 @@
#! /bin/sh
+
+OUTDIR=$1
+shift
# Create libc.texinfo from the chapter files.
-trap "rm -f *.$$; exit 1" 1 2 15
+trap "rm -f ${OUTDIR}*.$$; exit 1" 1 2 15
-exec 3>incl.$$ 4>smenu.$$ 5>lmenu.$$
+exec 3>${OUTDIR}incl.$$ 4>${OUTDIR}smenu.$$ 5>${OUTDIR}lmenu.$$
build_menu () {
while IFS=: read file node; do
@@ -51,7 +54,7 @@
exec 3>&- 4>&- 5>&-
-mv -f incl.$$ chapters.texi
+mv -f ${OUTDIR}incl.$$ ${OUTDIR}chapters.texi
{
echo '@menu'
@@ -72,7 +75,7 @@
}
!/^\*/ { print; }
- ' smenu.$$
+ ' ${OUTDIR}smenu.$$
cat <<EOF
* Free Manuals:: Free Software Needs Free Documentation.
* Copying:: The GNU Lesser General Public License says
@@ -90,8 +93,8 @@
--- The Detailed Node Listing ---
EOF
- cat lmenu.$$
- echo '@end menu'; } >top-menu.texi.$$
-mv -f top-menu.texi.$$ top-menu.texi
+ cat ${OUTDIR}lmenu.$$
+ echo '@end menu'; } >${OUTDIR}top-menu.texi.$$
+mv -f ${OUTDIR}top-menu.texi.$$ ${OUTDIR}top-menu.texi
-rm -f *.$$
+rm -f ${OUTDIR}*.$$
Modified: fsf/trunk/libc/manual/string.texi
==============================================================================
--- fsf/trunk/libc/manual/string.texi (original)
+++ fsf/trunk/libc/manual/string.texi Tue May 15 00:01:54 2012
@@ -886,6 +886,7 @@
@{
char *newp;
char *wp;
+ const char *s;
va_start (ap, str);
Modified: fsf/trunk/libc/nptl/ChangeLog
==============================================================================
--- fsf/trunk/libc/nptl/ChangeLog (original)
+++ fsf/trunk/libc/nptl/ChangeLog Tue May 15 00:01:54 2012
@@ -1,3 +1,26 @@
+2012-05-14 H.J. Lu <hongjiu.lu@xxxxxxxxx>
+
+ * sysdeps/pthread/pthread.h (__PTHREAD_RWLOCK_INT_FLAGS_SHARED):
+ New.
+ (PTHREAD_RWLOCK_WRITER_NONRECURSIVE_INITIALIZER_NP): Check
+ __PTHREAD_RWLOCK_INT_FLAGS_SHARED instead of __WORDSIZE.
+
+2012-05-14 H.J. Lu <hongjiu.lu@xxxxxxxxx>
+
+ * shlib-versions: Move x86_64-.*-linux.* entry to ...
+ * sysdeps/x86_64/64/shlib-versions: Here. New file.
+ * sysdeps/x86_64/x32/shlib-versions: New file.
+
+2012-05-14 H.J. Lu <hongjiu.lu@xxxxxxxxx>
+
+ * sysdeps/unix/sysv/linux/x86_64/bits/pthreadtypes.h: Define x32
+ __SIZEOF_PTHREAD_XXX_T.
+ (__pthread_internal_list): Check __x86_64__ instead of __WORDSIZE.
+ (pthread_mutex_t): Likewise.
+ (pthread_rwlock_t): Likewise.
+ (__PTHREAD_RWLOCK_INT_FLAGS_SHARED): New. Defined if __x86_64__
+ is defined.
+
2012-05-11 H.J. Lu <hongjiu.lu@xxxxxxxxx>
* sysdeps/x86_64/x32/tls.h: New file.
Modified: fsf/trunk/libc/nptl/shlib-versions
==============================================================================
--- fsf/trunk/libc/nptl/shlib-versions (original)
+++ fsf/trunk/libc/nptl/shlib-versions Tue May 15 00:01:54 2012
@@ -1,6 +1,5 @@
sparc64.*-.*-linux.* libpthread=0 GLIBC_2.2
sh.*-.*-linux.* libpthread=0 GLIBC_2.2
s390x-.*-linux.* libpthread=0 GLIBC_2.2
-x86_64-.*-linux.* libpthread=0 GLIBC_2.2.5
powerpc64-.*-linux.* libpthread=0 GLIBC_2.3
.*-.*-linux.* libpthread=0
Modified: fsf/trunk/libc/nptl/sysdeps/pthread/pthread.h
==============================================================================
--- fsf/trunk/libc/nptl/sysdeps/pthread/pthread.h (original)
+++ fsf/trunk/libc/nptl/sysdeps/pthread/pthread.h Tue May 15 00:01:54 2012
@@ -118,11 +118,20 @@
PTHREAD_RWLOCK_DEFAULT_NP = PTHREAD_RWLOCK_PREFER_READER_NP
};
+/* Define __PTHREAD_RWLOCK_INT_FLAGS_SHARED to 1 if pthread_rwlock_t
+ has the shared field. All 64-bit architectures have the shared field
+ in pthread_rwlock_t. */
+#ifndef __PTHREAD_RWLOCK_INT_FLAGS_SHARED
+# if __WORDSIZE == 64
+# define __PTHREAD_RWLOCK_INT_FLAGS_SHARED 1
+# endif
+#endif
+
/* Read-write lock initializers. */
# define PTHREAD_RWLOCK_INITIALIZER \
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }
# ifdef __USE_GNU
-# if __WORDSIZE == 64
+# ifdef __PTHREAD_RWLOCK_INT_FLAGS_SHARED
# define PTHREAD_RWLOCK_WRITER_NONRECURSIVE_INITIALIZER_NP \
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
PTHREAD_RWLOCK_PREFER_WRITER_NONRECURSIVE_NP } }
Modified: fsf/trunk/libc/nptl/sysdeps/unix/sysv/linux/x86_64/bits/pthreadtypes.h
==============================================================================
--- fsf/trunk/libc/nptl/sysdeps/unix/sysv/linux/x86_64/bits/pthreadtypes.h (original)
+++ fsf/trunk/libc/nptl/sysdeps/unix/sysv/linux/x86_64/bits/pthreadtypes.h Tue May 15 00:01:54 2012
@@ -20,16 +20,28 @@
#include <bits/wordsize.h>
-#if __WORDSIZE == 64
-# define __SIZEOF_PTHREAD_ATTR_T 56
-# define __SIZEOF_PTHREAD_MUTEX_T 40
-# define __SIZEOF_PTHREAD_MUTEXATTR_T 4
-# define __SIZEOF_PTHREAD_COND_T 48
-# define __SIZEOF_PTHREAD_CONDATTR_T 4
-# define __SIZEOF_PTHREAD_RWLOCK_T 56
-# define __SIZEOF_PTHREAD_RWLOCKATTR_T 8
-# define __SIZEOF_PTHREAD_BARRIER_T 32
-# define __SIZEOF_PTHREAD_BARRIERATTR_T 4
+#ifdef __x86_64__
+# if __WORDSIZE == 64
+# define __SIZEOF_PTHREAD_ATTR_T 56
+# define __SIZEOF_PTHREAD_MUTEX_T 40
+# define __SIZEOF_PTHREAD_MUTEXATTR_T 4
+# define __SIZEOF_PTHREAD_COND_T 48
+# define __SIZEOF_PTHREAD_CONDATTR_T 4
+# define __SIZEOF_PTHREAD_RWLOCK_T 56
+# define __SIZEOF_PTHREAD_RWLOCKATTR_T 8
+# define __SIZEOF_PTHREAD_BARRIER_T 32
+# define __SIZEOF_PTHREAD_BARRIERATTR_T 4
+# else
+# define __SIZEOF_PTHREAD_ATTR_T 32
+# define __SIZEOF_PTHREAD_MUTEX_T 32
+# define __SIZEOF_PTHREAD_MUTEXATTR_T 4
+# define __SIZEOF_PTHREAD_COND_T 48
+# define __SIZEOF_PTHREAD_CONDATTR_T 4
+# define __SIZEOF_PTHREAD_RWLOCK_T 44
+# define __SIZEOF_PTHREAD_RWLOCKATTR_T 8
+# define __SIZEOF_PTHREAD_BARRIER_T 20
+# define __SIZEOF_PTHREAD_BARRIERATTR_T 4
+# endif
#else
# define __SIZEOF_PTHREAD_ATTR_T 36
# define __SIZEOF_PTHREAD_MUTEX_T 24
@@ -59,7 +71,7 @@
#endif
-#if __WORDSIZE == 64
+#ifdef __x86_64__
typedef struct __pthread_internal_list
{
struct __pthread_internal_list *__prev;
@@ -82,13 +94,13 @@
int __lock;
unsigned int __count;
int __owner;
-#if __WORDSIZE == 64
+#ifdef __x86_64__
unsigned int __nusers;
#endif
/* KIND must stay at this position in the structure to maintain
binary compatibility. */
int __kind;
-#if __WORDSIZE == 64
+#ifdef __x86_64__
int __spins;
__pthread_list_t __list;
# define __PTHREAD_MUTEX_HAVE_PREV 1
@@ -151,7 +163,7 @@
structure of the attribute type is not exposed on purpose. */
typedef union
{
-# if __WORDSIZE == 64
+# ifdef __x86_64__
struct
{
int __lock;
@@ -167,6 +179,7 @@
/* FLAGS must stay at this position in the structure to maintain
binary compatibility. */
unsigned int __flags;
+# define __PTHREAD_RWLOCK_INT_FLAGS_SHARED 1
} __data;
# else
struct
Added: fsf/trunk/libc/nptl/sysdeps/x86_64/64/shlib-versions
==============================================================================
--- fsf/trunk/libc/nptl/sysdeps/x86_64/64/shlib-versions (added)
+++ fsf/trunk/libc/nptl/sysdeps/x86_64/64/shlib-versions Tue May 15 00:01:54 2012
@@ -1,0 +1,3 @@
+# Configuration DEFAULT Earliest symbol set
+# ------------- --------------- ------------------------------
+x86_64-.*-linux.* libpthread=0 GLIBC_2.2.5
Added: fsf/trunk/libc/nptl/sysdeps/x86_64/x32/shlib-versions
==============================================================================
--- fsf/trunk/libc/nptl/sysdeps/x86_64/x32/shlib-versions (added)
+++ fsf/trunk/libc/nptl/sysdeps/x86_64/x32/shlib-versions Tue May 15 00:01:54 2012
@@ -1,0 +1,3 @@
+# Configuration DEFAULT Earliest symbol set
+# ------------- --------------- ------------------------------
+x86_64-.*-linux.* libpthread=0 GLIBC_2.16
Modified: fsf/trunk/libc/shlib-versions
==============================================================================
--- fsf/trunk/libc/shlib-versions (original)
+++ fsf/trunk/libc/shlib-versions Tue May 15 00:01:54 2012
@@ -27,7 +27,6 @@
# ------------- --------------- ------------------------------
s390x-.*-linux.* DEFAULT GLIBC_2.2
-x86_64-.*-linux.* DEFAULT GLIBC_2.2.5
powerpc64-.*-linux.* DEFAULT GLIBC_2.3
.*-.*-gnu-gnu.* DEFAULT GLIBC_2.2.6
@@ -77,7 +76,6 @@
sh.*-.*-linux.* ld=ld-linux.so.2 GLIBC_2.2
s390x-.*-linux.* ld=ld64.so.1 GLIBC_2.2
powerpc64.*-.*-linux.* ld=ld64.so.1 GLIBC_2.3
-x86_64-.*-linux.* ld=ld-linux-x86-64.so.2 GLIBC_2.2.5
# We use the ELF ABI standard name for the default.
.*-.*-.* ld=ld.so.1
Modified: fsf/trunk/libc/sysdeps/i386/fpu/bits/mathinline.h
==============================================================================
--- fsf/trunk/libc/sysdeps/i386/fpu/bits/mathinline.h (original)
+++ fsf/trunk/libc/sysdeps/i386/fpu/bits/mathinline.h Tue May 15 00:01:54 2012
@@ -290,35 +290,8 @@
#if !defined __NO_MATH_INLINES && defined __OPTIMIZE__
/* Miscellaneous functions */
-__inline_mathcode (__sgn, __x, \
- return __x == 0.0 ? 0.0 : (__x > 0.0 ? 1.0 : -1.0))
-
/* __FAST_MATH__ is defined by gcc -ffast-math. */
#ifdef __FAST_MATH__
-__inline_mathcode (__pow2, __x, \
- register long double __value; \
- register long double __exponent; \
- __extension__ long long int __p = (long long int) __x; \
- if (__x == (long double) __p) \
- { \
- __asm __volatile__ \
- ("fscale" \
- : "=t" (__value) : "0" (1.0), "u" (__x)); \
- return __value; \
- } \
- __asm __volatile__ \
- ("fld %%st(0)\n\t" \
- "frndint # int(x)\n\t" \
- "fxch\n\t" \
- "fsub %%st(1) # fract(x)\n\t" \
- "f2xm1 # 2^(fract(x)) - 1\n\t" \
- : "=t" (__value), "=u" (__exponent) : "0" (__x)); \
- __value += 1.0; \
- __asm __volatile__ \
- ("fscale" \
- : "=t" (__value) : "0" (__value), "u" (__exponent)); \
- return __value)
-
# ifdef __USE_GNU
# define __sincos_code \
register long double __cosr; \
@@ -733,16 +706,6 @@
| 0x800fffffu) + 1) >> 31));
}
-/* Miscellaneous functions */
-# ifdef __FAST_MATH__
-__inline_mathcode (__coshm1, __x, \
- register long double __exm1 = __expm1l (__fabsl (__x)); \
- return 0.5 * (__exm1 / (__exm1 + 1.0)) * __exm1)
-
-__inline_mathcode (__acosh1p, __x, \
- return log1pl (__x + __libc_sqrtl (__x) * __libc_sqrtl (__x + 2.0)))
-
-# endif /* __FAST_MATH__ */
#endif /* __USE_MISC */
/* Undefine some of the large macros which are not used anymore. */
Added: fsf/trunk/libc/sysdeps/i386/i686/fpu/multiarch/Makefile
==============================================================================
--- fsf/trunk/libc/sysdeps/i386/i686/fpu/multiarch/Makefile (added)
+++ fsf/trunk/libc/sysdeps/i386/i686/fpu/multiarch/Makefile Tue May 15 00:01:54 2012
@@ -1,0 +1,3 @@
+ifeq ($(subdir),math)
+libm-sysdep_routines += e_expf-sse2 e_expf-ia32
+endif
Added: fsf/trunk/libc/sysdeps/i386/i686/fpu/multiarch/e_expf-ia32.S
==============================================================================
--- fsf/trunk/libc/sysdeps/i386/i686/fpu/multiarch/e_expf-ia32.S (added)
+++ fsf/trunk/libc/sysdeps/i386/i686/fpu/multiarch/e_expf-ia32.S Tue May 15 00:01:54 2012
@@ -1,0 +1,22 @@
+/*
+ Copyright (C) 2012 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, see
+ <http://www.gnu.org/licenses/>. */
+
+#define __ieee754_expf __ieee754_expf_ia32
+#define __expf_finite __expf_finite_ia32
+
+#include <sysdeps/i386/fpu/e_expf.S>
Added: fsf/trunk/libc/sysdeps/i386/i686/fpu/multiarch/e_expf-sse2.S
==============================================================================
--- fsf/trunk/libc/sysdeps/i386/i686/fpu/multiarch/e_expf-sse2.S (added)
+++ fsf/trunk/libc/sysdeps/i386/i686/fpu/multiarch/e_expf-sse2.S Tue May 15 00:01:54 2012
@@ -1,0 +1,324 @@
+/* SSE2 version of __ieee754_expf and __expf_finite
+ Copyright (C) 2012 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, see
+ <http://www.gnu.org/licenses/>. */
+
+
+#include <sysdep.h>
+
+/* Short algorithm description:
+ *
+ * Let K = 64 (table size).
+ * e^x = 2^(x/log(2)) = 2^n * T[j] * (1 + P(y))
+ * where
+ * x = m*log(2)/K + y, y in [0.0..log(2)/K]
+ * m = n*K + j, m,n,j - signed integer, j in [0..K-1]
+ * values of 2^(j/K) are tabulated as T[j].
+ *
+ * P(y) is a minimax polynomial approximation of expf(x)-1
+ * on small interval [0.0..log(2)/K].
+ *
+ * P(y) = P3*y*y*y*y + P2*y*y*y + P1*y*y + P0*y, calculated as
+ * z = y*y; P(y) = (P3*z + P1)*z + (P2*z + P0)*y
+ *
+ * Special cases:
+ * __ieee754_expf_sse2(NaN) = NaN
+ * __ieee754_expf_sse2(+INF) = +INF
+ * __ieee754_expf_sse2(-INF) = 0
+ * __ieee754_expf_sse2(x) = 1 for subnormals
+ * for finite argument, only __ieee754_expf_sse2(0)=1 is exact
+ * __ieee754_expf_sse2(x) overflows if x>700
+ * __ieee754_expf_sse2(x) underflows if x<-700
+ *
+ * Note:
+ * For |x|<700, __ieee754_expf_sse2 computes result in double precision,
+ * with accuracy a bit more than needed for expf, and does not round it
+ * to single precision.
+ */
+
+
+#ifdef PIC
+# define MO1(symbol) L(symbol)##@GOTOFF(%edx)
+# define MO2(symbol,reg2,_scale) L(symbol)##@GOTOFF(%edx,reg2,_scale)
+#else
+# define MO1(symbol) L(symbol)
+# define MO2(symbol,reg2,_scale) L(symbol)(,reg2,_scale)
+#endif
+
+ .text
+ENTRY(__ieee754_expf_sse2)
+ /* Input: single precision x on stack at address 4(%esp) */
+
+#ifdef PIC
+ LOAD_PIC_REG(dx)
+#endif
+
+ cvtss2sd 4(%esp), %xmm1 /* Convert x to double precision */
+ mov 4(%esp), %ecx /* Copy x */
+ movsd MO1(DP_KLN2), %xmm2 /* DP K/log(2) */
+ movsd MO1(DP_P2), %xmm3 /* DP P2 */
+ movl %ecx, %eax /* x */
+ mulsd %xmm1, %xmm2 /* DP x*K/log(2) */
+ andl $0x7fffffff, %ecx /* |x| */
+ cmpl $0x442f0000, %ecx /* |x|<700 ? */
+ movsd MO1(DP_P3), %xmm4 /* DP P3 */
+ addsd MO1(DP_RS), %xmm2 /* DP x*K/log(2)+RS */
+ jae L(special_paths)
+
+ /* Here if |x|<700 */
+ cmpl $0x31800000, %ecx /* |x|<2^(-28) ? */
+ jb L(small_arg)
+
+ /* Main path: here if 2^(-28)<=|x|<700 */
+ cvtsd2ss %xmm2, %xmm2 /* SP x*K/log(2)+RS */
+ movd %xmm2, %eax /* bits of n*K+j with trash */
+ subss MO1(SP_RS), %xmm2 /* SP t=round(x*K/log(2)) */
+ movl %eax, %ecx /* n*K+j with trash */
+ cvtss2sd %xmm2, %xmm2 /* DP t */
+ andl $0x3f, %eax /* bits of j */
+ mulsd MO1(DP_NLN2K), %xmm2 /* DP -t*log(2)/K */
+ andl $0xffffffc0, %ecx /* bits of n */
+#ifdef __AVX__
+ vaddsd %xmm1, %xmm2, %xmm0 /* DP y=x-t*log(2)/K */
+ vmulsd %xmm0, %xmm0, %xmm2 /* DP z=y*y */
+#else
+ addsd %xmm1, %xmm2 /* DP y=x-t*log(2)/K */
+ movaps %xmm2, %xmm0 /* DP y */
+ mulsd %xmm2, %xmm2 /* DP z=y*y */
+#endif
+ mulsd %xmm2, %xmm4 /* DP P3*z */
+ addl $0xffc0, %ecx /* bits of n + DP exponent bias */
+ mulsd %xmm2, %xmm3 /* DP P2*z */
+ shrl $2, %ecx /* High 2 bytes of DP 2^n */
+ pxor %xmm1, %xmm1 /* clear %xmm1 */
+ addsd MO1(DP_P1), %xmm4 /* DP P3*z+P1 */
+ addsd MO1(DP_P0), %xmm3 /* DP P2*z+P0 */
+ pinsrw $3, %ecx, %xmm1 /* DP 2^n */
+ mulsd %xmm2, %xmm4 /* DP (P3*z+P1)*z */
+ mulsd %xmm3, %xmm0 /* DP (P2*z+P0)*y */
+ addsd %xmm4, %xmm0 /* DP P(y) */
+ mulsd MO2(DP_T,%eax,8), %xmm0 /* DP P(y)*T[j] */
+ addsd MO2(DP_T,%eax,8), %xmm0 /* DP T[j]*(P(y)+1) */
+ mulsd %xmm1, %xmm0 /* DP result=2^n*(T[j]*(P(y)+1)) */
+
+ lea -8(%esp), %esp /* Borrow 8 bytes of stack frame */
+ movsd %xmm0, 0(%esp) /* Move result from sse... */
+ fldl 0(%esp) /* ...to FPU. */
+ lea 8(%esp), %esp /* Return back 8 bytes of stack frame */
+ ret
+
+ .p2align 4
+L(small_arg):
+ /* Here if 0<=|x|<2^(-28) */
+ movss 4(%esp), %xmm0 /* load x */
+ addss MO1(SP_ONE), %xmm0 /* 1.0 + x */
+ /* Return 1.0 with inexact raised, except for x==0 */
+ jmp L(epilogue)
+
+ .p2align 4
+L(special_paths):
+ /* Here if x is NaN, or Inf, or finite |x|>=700 */
+ movss 4(%esp), %xmm0 /* load x */
+
+ cmpl $0x7f800000, %ecx /* |x| is finite ? */
+ jae L(arg_inf_or_nan)
+
+ /* Here if finite |x|>=700 */
+ testl $0x80000000, %eax /* sign of x nonzero ? */
+ je L(res_overflow)
+
+ /* Here if finite x<=-700 */
+ movss MO1(SP_SMALL), %xmm0 /* load small value 2^(-100) */
+ mulss %xmm0, %xmm0 /* Return underflowed result (zero or subnormal) */
+ jmp L(epilogue)
+
+ .p2align 4
+L(res_overflow):
+ /* Here if finite x>=700 */
+ movss MO1(SP_LARGE), %xmm0 /* load large value 2^100 */
+ mulss %xmm0, %xmm0 /* Return overflowed result (Inf or max normal) */
+ jmp L(epilogue)
+
+ .p2align 4
+L(arg_inf_or_nan):
+ /* Here if |x| is Inf or NAN */
+ jne L(arg_nan) /* |x| is Inf ? */
+
+ /* Here if |x| is Inf */
+ shrl $31, %eax /* Get sign bit of x */
+ movss MO2(SP_INF_0,%eax,4), %xmm0/* return zero or Inf, depending on sign of x */
+ jmp L(epilogue)
+
+ .p2align 4
+L(arg_nan):
+ /* Here if |x| is NaN */
+ addss %xmm0, %xmm0 /* Return x+x (raise invalid) */
+
+ .p2align 4
+L(epilogue):
+ lea -4(%esp), %esp /* Borrow 4 bytes of stack frame */
+ movss %xmm0, 0(%esp) /* Move result from sse... */
+ flds 0(%esp) /* ...to FPU. */
+ lea 4(%esp), %esp /* Return back 4 bytes of stack frame */
+ ret
+END(__ieee754_expf_sse2)
+
+ .section .rodata, "a"
+ .p2align 3
+L(DP_T): /* table of double precision values 2^(j/K) for j=[0..K-1] */
+ .long 0x00000000, 0x3ff00000
+ .long 0x3e778061, 0x3ff02c9a
+ .long 0xd3158574, 0x3ff059b0
+ .long 0x18759bc8, 0x3ff08745
+ .long 0x6cf9890f, 0x3ff0b558
+ .long 0x32d3d1a2, 0x3ff0e3ec
+ .long 0xd0125b51, 0x3ff11301
+ .long 0xaea92de0, 0x3ff1429a
+ .long 0x3c7d517b, 0x3ff172b8
+ .long 0xeb6fcb75, 0x3ff1a35b
+ .long 0x3168b9aa, 0x3ff1d487
+ .long 0x88628cd6, 0x3ff2063b
+ .long 0x6e756238, 0x3ff2387a
+ .long 0x65e27cdd, 0x3ff26b45
+ .long 0xf51fdee1, 0x3ff29e9d
+ .long 0xa6e4030b, 0x3ff2d285
+ .long 0x0a31b715, 0x3ff306fe
+ .long 0xb26416ff, 0x3ff33c08
+ .long 0x373aa9cb, 0x3ff371a7
+ .long 0x34e59ff7, 0x3ff3a7db
+ .long 0x4c123422, 0x3ff3dea6
+ .long 0x21f72e2a, 0x3ff4160a
+ .long 0x6061892d, 0x3ff44e08
+ .long 0xb5c13cd0, 0x3ff486a2
+ .long 0xd5362a27, 0x3ff4bfda
+ .long 0x769d2ca7, 0x3ff4f9b2
+ .long 0x569d4f82, 0x3ff5342b
+ .long 0x36b527da, 0x3ff56f47
+ .long 0xdd485429, 0x3ff5ab07
+ .long 0x15ad2148, 0x3ff5e76f
+ .long 0xb03a5585, 0x3ff6247e
+ .long 0x82552225, 0x3ff66238
+ .long 0x667f3bcd, 0x3ff6a09e
+ .long 0x3c651a2f, 0x3ff6dfb2
+ .long 0xe8ec5f74, 0x3ff71f75
+ .long 0x564267c9, 0x3ff75feb
+ .long 0x73eb0187, 0x3ff7a114
+ .long 0x36cf4e62, 0x3ff7e2f3
+ .long 0x994cce13, 0x3ff82589
+ .long 0x9b4492ed, 0x3ff868d9
+ .long 0x422aa0db, 0x3ff8ace5
+ .long 0x99157736, 0x3ff8f1ae
+ .long 0xb0cdc5e5, 0x3ff93737
+ .long 0x9fde4e50, 0x3ff97d82
+ .long 0x82a3f090, 0x3ff9c491
+ .long 0x7b5de565, 0x3ffa0c66
+ .long 0xb23e255d, 0x3ffa5503
+ .long 0x5579fdbf, 0x3ffa9e6b
+ .long 0x995ad3ad, 0x3ffae89f
+ .long 0xb84f15fb, 0x3ffb33a2
+ .long 0xf2fb5e47, 0x3ffb7f76
+ .long 0x904bc1d2, 0x3ffbcc1e
+ .long 0xdd85529c, 0x3ffc199b
+ .long 0x2e57d14b, 0x3ffc67f1
+ .long 0xdcef9069, 0x3ffcb720
+ .long 0x4a07897c, 0x3ffd072d
+ .long 0xdcfba487, 0x3ffd5818
+ .long 0x03db3285, 0x3ffda9e6
+ .long 0x337b9b5f, 0x3ffdfc97
+ .long 0xe78b3ff6, 0x3ffe502e
+ .long 0xa2a490da, 0x3ffea4af
+ .long 0xee615a27, 0x3ffefa1b
+ .long 0x5b6e4540, 0x3fff5076
+ .long 0x819e90d8, 0x3fffa7c1
+ ASM_TYPE_DIRECTIVE(L(DP_T), @object)
+ ASM_SIZE_DIRECTIVE(L(DP_T))
+
+ .section .rodata.cst8,"aM",@progbits,8
+ .p2align 3
+L(DP_KLN2): /* double precision K/log(2) */
+ .long 0x652b82fe, 0x40571547
+ ASM_TYPE_DIRECTIVE(L(DP_KLN2), @object)
+ ASM_SIZE_DIRECTIVE(L(DP_KLN2))
+
+ .p2align 3
+L(DP_NLN2K): /* double precision -log(2)/K */
+ .long 0xfefa39ef, 0xbf862e42
+ ASM_TYPE_DIRECTIVE(L(DP_NLN2K), @object)
+ ASM_SIZE_DIRECTIVE(L(DP_NLN2K))
+
+ .p2align 3
+L(DP_RS): /* double precision 2^23+2^22 */
+ .long 0x00000000, 0x41680000
+ ASM_TYPE_DIRECTIVE(L(DP_RS), @object)
+ ASM_SIZE_DIRECTIVE(L(DP_RS))
+
+ .p2align 3
+L(DP_P3): /* double precision polynomial coefficient P3 */
+ .long 0xeb78fa85, 0x3fa56420
+ ASM_TYPE_DIRECTIVE(L(DP_P3), @object)
+ ASM_SIZE_DIRECTIVE(L(DP_P3))
+
+ .p2align 3
+L(DP_P1): /* double precision polynomial coefficient P1 */
+ .long 0x008d6118, 0x3fe00000
+ ASM_TYPE_DIRECTIVE(L(DP_P1), @object)
+ ASM_SIZE_DIRECTIVE(L(DP_P1))
+
+ .p2align 3
+L(DP_P2): /* double precision polynomial coefficient P2 */
+ .long 0xda752d4f, 0x3fc55550
+ ASM_TYPE_DIRECTIVE(L(DP_P2), @object)
+ ASM_SIZE_DIRECTIVE(L(DP_P2))
+
+ .p2align 3
+L(DP_P0): /* double precision polynomial coefficient P0 */
+ .long 0xffffe7c6, 0x3fefffff
+ ASM_TYPE_DIRECTIVE(L(DP_P0), @object)
+ ASM_SIZE_DIRECTIVE(L(DP_P0))
+
+ .p2align 2
+L(SP_INF_0):
+ .long 0x7f800000 /* single precision Inf */
+ .long 0 /* single precision zero */
+ ASM_TYPE_DIRECTIVE(L(SP_INF_0), @object)
+ ASM_SIZE_DIRECTIVE(L(SP_INF_0))
+
+ .section .rodata.cst4,"aM",@progbits,4
+ .p2align 2
+L(SP_RS): /* single precision 2^23+2^22 */
+ .long 0x4b400000
+ ASM_TYPE_DIRECTIVE(L(SP_RS), @object)
+ ASM_SIZE_DIRECTIVE(L(SP_RS))
+
+ .p2align 2
+L(SP_SMALL): /* single precision small value 2^(-100) */
+ .long 0x0d800000
+ ASM_TYPE_DIRECTIVE(L(SP_SMALL), @object)
+ ASM_SIZE_DIRECTIVE(L(SP_SMALL))
+
+ .p2align 2
+L(SP_LARGE): /* single precision large value 2^100 */
+ .long 0x71800000
+ ASM_TYPE_DIRECTIVE(L(SP_LARGE), @object)
+ ASM_SIZE_DIRECTIVE(L(SP_LARGE))
+
+ .p2align 2
+L(SP_ONE): /* single precision 1.0 */
+ .long 0x3f800000
+ ASM_TYPE_DIRECTIVE(L(SP_ONE), @object)
+ ASM_SIZE_DIRECTIVE(L(SP_ONE))
+
+strong_alias (__ieee754_expf_sse2, __expf_finite_sse2)
Added: fsf/trunk/libc/sysdeps/i386/i686/fpu/multiarch/e_expf.c
==============================================================================
--- fsf/trunk/libc/sysdeps/i386/i686/fpu/multiarch/e_expf.c (added)
+++ fsf/trunk/libc/sysdeps/i386/i686/fpu/multiarch/e_expf.c Tue May 15 00:01:54 2012
@@ -1,0 +1,15 @@
+#include <init-arch.h>
+
+extern double __ieee754_expf_sse2 (double);
+extern double __ieee754_expf_ia32 (double);
+
+double __ieee754_expf (double);
+libm_ifunc (__ieee754_expf,
+ HAS_SSE2 ? __ieee754_expf_sse2 : __ieee754_expf_ia32);
+
+extern double __expf_finite_sse2 (double);
+extern double __expf_finite_ia32 (double);
+
+double __expf_finite (double);
+libm_ifunc (__expf_finite,
+ HAS_SSE2 ? __expf_finite_sse2 : __expf_finite_ia32);
Modified: fsf/trunk/libc/sysdeps/ieee754/dbl-64/wordsize-64/s_logb.c
==============================================================================
--- fsf/trunk/libc/sysdeps/ieee754/dbl-64/wordsize-64/s_logb.c (original)
+++ fsf/trunk/libc/sysdeps/ieee754/dbl-64/wordsize-64/s_logb.c Tue May 15 00:01:54 2012
@@ -36,7 +36,7 @@
return x * x;
if (__builtin_expect (ex == 0, 0))
{
- int m = (ix == 0) ? 0 : __builtin_clzl (ix);
+ int m = (ix == 0) ? 0 : __builtin_clzll (ix);
return -1022.0 + (double)(11 -m);
}
return (double) (ex - 1023);
Modified: fsf/trunk/libc/sysdeps/unix/sysv/linux/check_pf.c
==============================================================================
--- fsf/trunk/libc/sysdeps/unix/sysv/linux/check_pf.c (original)
+++ fsf/trunk/libc/sysdeps/unix/sysv/linux/check_pf.c Tue May 15 00:01:54 2012
@@ -61,7 +61,7 @@
.in6ailen = 0
};
-static struct cached_data *cache;
+libc_freeres_ptr (static struct cached_data *cache);
__libc_lock_define_initialized (static, lock);
Modified: fsf/trunk/libc/sysdeps/unix/sysv/linux/configure
==============================================================================
--- fsf/trunk/libc/sysdeps/unix/sysv/linux/configure (original)
+++ fsf/trunk/libc/sysdeps/unix/sysv/linux/configure Tue May 15 00:01:54 2012
@@ -284,11 +284,11 @@
case "$machine" in
i386*)
libc_cv_gcc_unwind_find_fde=yes
- arch_minimum_kernel=2.0.10
+ arch_minimum_kernel=2.2.0
;;
powerpc/powerpc32)
libc_cv_gcc_unwind_find_fde=yes
- arch_minimum_kernel=2.0.10
+ arch_minimum_kernel=2.2.0
;;
powerpc/powerpc64)
arch_minimum_kernel=2.4.21
@@ -311,13 +311,13 @@
;;
sparc*)
libc_cv_gcc_unwind_find_fde=yes
- arch_minimum_kernel=2.0.10
+ arch_minimum_kernel=2.2.0
;;
x86_64*)
arch_minimum_kernel=2.4.0
;;
*)
- arch_minimum_kernel=2.0.10
+ arch_minimum_kernel=2.2.0
;;
esac
if test -n "$minimum_kernel"; then
@@ -331,17 +331,14 @@
minimum_kernel=$arch_minimum_kernel
fi
else
- if test $arch_minimum_kernel != '2.0.10'; then
- minimum_kernel=$arch_minimum_kernel
- fi
-fi
-
-if test -n "$minimum_kernel"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for kernel header at least $minimum_kernel" >&5
+ minimum_kernel=$arch_minimum_kernel
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for kernel header at least $minimum_kernel" >&5
$as_echo_n "checking for kernel header at least $minimum_kernel... " >&6; }
- decnum=`echo "$minimum_kernel.0.0.0" | sed 's/\([0-9]*\)\.\([0-9]*\)\.\([0-9]*\).*/(\1 * 65536 + \2 * 256 + \3)/'`;
- abinum=`echo "$minimum_kernel.0.0.0" | sed 's/\([0-9]*\)\.\([0-9]*\)\.\([0-9]*\).*/\1,\2,\3/'`;
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+decnum=`echo "$minimum_kernel.0.0.0" | sed 's/\([0-9]*\)\.\([0-9]*\)\.\([0-9]*\).*/(\1 * 65536 + \2 * 256 + \3)/'`;
+abinum=`echo "$minimum_kernel.0.0.0" | sed 's/\([0-9]*\)\.\([0-9]*\)\.\([0-9]*\).*/\1,\2,\3/'`;
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <linux/version.h>
#if LINUX_VERSION_CODE < $decnum
@@ -356,21 +353,20 @@
fi
rm -f conftest*
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_minimum_kernel" >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_minimum_kernel" >&5
$as_echo "$libc_minimum_kernel" >&6; }
- if test "$libc_minimum_kernel" = ok; then
- cat >>confdefs.h <<_ACEOF
+if test "$libc_minimum_kernel" = ok; then
+ cat >>confdefs.h <<_ACEOF
#define __LINUX_KERNEL_VERSION $decnum
_ACEOF
- cat >>confdefs.h <<_ACEOF
+ cat >>confdefs.h <<_ACEOF
#define __ABI_TAG_VERSION $abinum
_ACEOF
- else
- as_fn_error $? "*** The available kernel headers are older than the requested
+else
+ as_fn_error $? "*** The available kernel headers are older than the requested
*** compatible kernel version" "$LINENO" 5
- fi
fi
# The result of the above test for the use of the FDE code is invalid if
Modified: fsf/trunk/libc/sysdeps/unix/sysv/linux/configure.in
==============================================================================
--- fsf/trunk/libc/sysdeps/unix/sysv/linux/configure.in (original)
+++ fsf/trunk/libc/sysdeps/unix/sysv/linux/configure.in Tue May 15 00:01:54 2012
@@ -41,11 +41,11 @@
case "$machine" in
i386*)
libc_cv_gcc_unwind_find_fde=yes
- arch_minimum_kernel=2.0.10
+ arch_minimum_kernel=2.2.0
;;
powerpc/powerpc32)
libc_cv_gcc_unwind_find_fde=yes
- arch_minimum_kernel=2.0.10
+ arch_minimum_kernel=2.2.0
;;
powerpc/powerpc64)
arch_minimum_kernel=2.4.21
@@ -68,13 +68,13 @@
;;
sparc*)
libc_cv_gcc_unwind_find_fde=yes
- arch_minimum_kernel=2.0.10
+ arch_minimum_kernel=2.2.0
;;
x86_64*)
arch_minimum_kernel=2.4.0
;;
*)
- arch_minimum_kernel=2.0.10
+ arch_minimum_kernel=2.2.0
;;
esac
if test -n "$minimum_kernel"; then
@@ -87,29 +87,25 @@
minimum_kernel=$arch_minimum_kernel
fi
else
- if test $arch_minimum_kernel != '2.0.10'; then
- minimum_kernel=$arch_minimum_kernel
- fi
-fi
-
-if test -n "$minimum_kernel"; then
- AC_MSG_CHECKING(for kernel header at least $minimum_kernel)
+ minimum_kernel=$arch_minimum_kernel
+fi
+
+AC_MSG_CHECKING(for kernel header at least $minimum_kernel)
changequote(,)dnl
- decnum=`echo "$minimum_kernel.0.0.0" | sed 's/\([0-9]*\)\.\([0-9]*\)\.\([0-9]*\).*/(\1 * 65536 + \2 * 256 + \3)/'`;
- abinum=`echo "$minimum_kernel.0.0.0" | sed 's/\([0-9]*\)\.\([0-9]*\)\.\([0-9]*\).*/\1,\2,\3/'`;
+decnum=`echo "$minimum_kernel.0.0.0" | sed 's/\([0-9]*\)\.\([0-9]*\)\.\([0-9]*\).*/(\1 * 65536 + \2 * 256 + \3)/'`;
+abinum=`echo "$minimum_kernel.0.0.0" | sed 's/\([0-9]*\)\.\([0-9]*\)\.\([0-9]*\).*/\1,\2,\3/'`;
changequote([,])dnl
- AC_EGREP_CPP([eat flaming death], [#include <linux/version.h>
+AC_EGREP_CPP([eat flaming death], [#include <linux/version.h>
#if LINUX_VERSION_CODE < $decnum
eat flaming death
#endif], libc_minimum_kernel='too old!', libc_minimum_kernel=ok)
- AC_MSG_RESULT($libc_minimum_kernel)
- if test "$libc_minimum_kernel" = ok; then
- AC_DEFINE_UNQUOTED(__LINUX_KERNEL_VERSION, $decnum)
- AC_DEFINE_UNQUOTED(__ABI_TAG_VERSION, $abinum)
- else
- AC_MSG_ERROR([*** The available kernel headers are older than the requested
+AC_MSG_RESULT($libc_minimum_kernel)
+if test "$libc_minimum_kernel" = ok; then
+ AC_DEFINE_UNQUOTED(__LINUX_KERNEL_VERSION, $decnum)
+ AC_DEFINE_UNQUOTED(__ABI_TAG_VERSION, $abinum)
+else
+ AC_MSG_ERROR([*** The available kernel headers are older than the requested
*** compatible kernel version])
- fi
fi
# The result of the above test for the use of the FDE code is invalid if
Modified: fsf/trunk/libc/sysdeps/unix/sysv/linux/dl-osinfo.h
==============================================================================
--- fsf/trunk/libc/sysdeps/unix/sysv/linux/dl-osinfo.h (original)
+++ fsf/trunk/libc/sysdeps/unix/sysv/linux/dl-osinfo.h Tue May 15 00:01:54 2012
@@ -1,5 +1,5 @@
/* Operating system specific code for generic dynamic loader functions. Linux.
- Copyright (C) 2000-2002,2004-2009,2011 Free Software Foundation, Inc.
+ Copyright (C) 2000-2012 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
@@ -25,18 +25,6 @@
#ifndef MIN
# define MIN(a,b) (((a)<(b))?(a):(b))
-#endif
-
-#ifdef SHARED
-/* This is the function used in the dynamic linker to print the fatal error
- message. */
-static void
-__attribute__ ((__noreturn__))
-dl_fatal (const char *str)
-{
- _dl_dprintf (2, str);
- _exit (1);
-}
#endif
#define DL_SYSDEP_OSCHECK(FATAL) \
Modified: fsf/trunk/libc/sysdeps/unix/sysv/linux/getcwd.c
==============================================================================
--- fsf/trunk/libc/sysdeps/unix/sysv/linux/getcwd.c (original)
+++ fsf/trunk/libc/sysdeps/unix/sysv/linux/getcwd.c Tue May 15 00:01:54 2012
@@ -38,27 +38,6 @@
#endif
-#if __ASSUME_GETCWD_SYSCALL > 0
-/* Kernel 2.1.92 introduced a third way to get the current working
- directory: a syscall. We've got to be careful that even when
- compiling under 2.1.92+ the libc still runs under older kernels. */
-# define no_syscall_getcwd 0
-# define have_new_dcache 1
-#else
-# if __NR_getcwd
-/* Kernel 2.1.92 introduced a third way to get the current working
- directory: a syscall. We've got to be careful that even when
- compiling under 2.1.92+ the libc still runs under older kernels.
- An additional problem is that the system call does not return
- the path of directories longer than one page. */
-static int no_syscall_getcwd;
-static int have_new_dcache;
-# else
-# define no_syscall_getcwd 1
-static int have_new_dcache = 1;
-# endif
-#endif
-
/* The "proc" filesystem provides an easy method to retrieve the value.
For each process, the corresponding directory contains a symbolic link
named `cwd'. Reading the content of this link immediate gives us the
@@ -70,11 +49,7 @@
__getcwd (char *buf, size_t size)
{
char *path;
- int n;
char *result;
-
- if (no_syscall_getcwd && !have_new_dcache)
- return generic_getcwd (buf, size);
#ifndef NO_ALLOCATION
size_t alloc_size = size;
@@ -101,138 +76,59 @@
#endif
path = buf;
-#if defined __NR_getcwd || __LINUX_GETCWD_SYSCALL > 0
- if (!no_syscall_getcwd)
+ int retval;
+
+ retval = INLINE_SYSCALL (getcwd, 2, CHECK_STRING (path), alloc_size);
+ if (retval >= 0)
{
- int retval;
+#ifndef NO_ALLOCATION
+ if (buf == NULL && size == 0)
+ /* Ensure that the buffer is only as large as necessary. */
+ buf = realloc (path, (size_t) retval);
- retval = INLINE_SYSCALL (getcwd, 2, CHECK_STRING (path), alloc_size);
- if (retval >= 0)
- {
-# ifndef NO_ALLOCATION
- if (buf == NULL && size == 0)
- /* Ensure that the buffer is only as large as necessary. */
- buf = realloc (path, (size_t) retval);
-
- if (buf == NULL)
- /* Either buf was NULL all along, or `realloc' failed but
- we still have the original string. */
- buf = path;
-# endif
-
- return buf;
- }
-
- /* The system call cannot handle paths longer than a page.
- Neither can the magic symlink in /proc/self. Just use the
- generic implementation right away. */
- if (errno == ENAMETOOLONG)
- {
-# ifndef NO_ALLOCATION
- if (buf == NULL && size == 0)
- {
- free (path);
- path = NULL;
- }
-# endif
-
- result = generic_getcwd (path, size);
-
-# ifndef NO_ALLOCATION
- if (result == NULL && buf == NULL && size != 0)
- free (path);
-# endif
-
- return result;
- }
-
-# if __ASSUME_GETCWD_SYSCALL
- /* It should never happen that the `getcwd' syscall failed because
- the buffer is too small if we allocated the buffer ourselves
- large enough. */
- assert (errno != ERANGE || buf != NULL || size != 0);
-
-# ifndef NO_ALLOCATION
if (buf == NULL)
- free (path);
-# endif
-
- return NULL;
-# else
- if (errno == ENOSYS)
- {
- no_syscall_getcwd = 1;
- have_new_dcache = 1; /* Now we will try the /proc method. */
- }
- else if (errno != ERANGE || buf != NULL)
- {
-# ifndef NO_ALLOCATION
- if (buf == NULL)
- free (path);
-# endif
- return NULL;
- }
-# endif
- }
+ /* Either buf was NULL all along, or `realloc' failed but
+ we still have the original string. */
+ buf = path;
#endif
- n = __readlink ("/proc/self/cwd", path, alloc_size - 1);
- if (n != -1)
+ return buf;
+ }
+
+ /* The system call cannot handle paths longer than a page.
+ Neither can the magic symlink in /proc/self. Just use the
+ generic implementation right away. */
+ if (errno == ENAMETOOLONG)
{
- if (path[0] == '/')
+#ifndef NO_ALLOCATION
+ if (buf == NULL && size == 0)
{
- if ((size_t) n >= alloc_size - 1)
- {
-#ifndef NO_ALLOCATION
- if (buf == NULL)
- free (path);
-#endif
- return NULL;
- }
-
- path[n] = '\0';
-#ifndef NO_ALLOCATION
- if (buf == NULL && size == 0)
- /* Ensure that the buffer is only as large as necessary. */
- buf = realloc (path, (size_t) n + 1);
- if (buf == NULL)
- /* Either buf was NULL all along, or `realloc' failed but
- we still have the original string. */
- buf = path;
+ free (path);
+ path = NULL;
+ }
#endif
- return buf;
- }
-#ifndef have_new_dcache
- else
- have_new_dcache = 0;
+ result = generic_getcwd (path, size);
+
+#ifndef NO_ALLOCATION
+ if (result == NULL && buf == NULL && size != 0)
+ free (path);
#endif
+
+ return result;
}
-#if __ASSUME_GETCWD_SYSCALL == 0
- /* Set to have_new_dcache only if error indicates that proc doesn't
- exist. */
- if (errno != EACCES && errno != ENAMETOOLONG)
- have_new_dcache = 0;
-#endif
+ /* It should never happen that the `getcwd' syscall failed because
+ the buffer is too small if we allocated the buffer ourselves
+ large enough. */
+ assert (errno != ERANGE || buf != NULL || size != 0);
#ifndef NO_ALLOCATION
- /* Don't put restrictions on the length of the path unless the user does. */
- if (buf == NULL && size == 0)
- {
- free (path);
- path = NULL;
- }
-#endif
-
- result = generic_getcwd (path, size);
-
-#ifndef NO_ALLOCATION
- if (result == NULL && buf == NULL && size != 0)
+ if (buf == NULL)
free (path);
#endif
- return result;
+ return NULL;
}
weak_alias (__getcwd, getcwd)
Modified: fsf/trunk/libc/sysdeps/unix/sysv/linux/i386/chown.c
==============================================================================
--- fsf/trunk/libc/sysdeps/unix/sysv/linux/i386/chown.c (original)
+++ fsf/trunk/libc/sysdeps/unix/sysv/linux/i386/chown.c Tue May 15 00:01:54 2012
@@ -1,5 +1,4 @@
-/* Copyright (C) 1998,1999,2000,2002,2003,2004,2006
- Free Software Foundation, Inc.
+/* Copyright (C) 1998-2012 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
@@ -42,64 +41,22 @@
extern int __real_chown (const char *__file, uid_t __owner, gid_t __group);
-#if defined __NR_lchown || __ASSUME_LCHOWN_SYSCALL > 0
-/* Running under Linux > 2.1.80. */
-
-# ifdef __NR_chown32
+#ifdef __NR_chown32
# if __ASSUME_32BITUIDS == 0
/* This variable is shared with all files that need to check for 32bit
uids. */
extern int __libc_missing_32bit_uids;
-# endif
-# endif /* __NR_chown32 */
+# endif
+#endif /* __NR_chown32 */
int
__real_chown (const char *file, uid_t owner, gid_t group)
{
-# if __ASSUME_LCHOWN_SYSCALL == 0
- static int __libc_old_chown;
- int result;
-
- if (!__libc_old_chown)
- {
- int saved_errno = errno;
-# ifdef __NR_chown32
- if (__libc_missing_32bit_uids <= 0)
- {
- int result;
- int saved_errno = errno;
-
- result = INLINE_SYSCALL (chown32, 3, CHECK_STRING (file), owner, group);
- if (result == 0 || errno != ENOSYS)
- return result;
-
- __set_errno (saved_errno);
- __libc_missing_32bit_uids = 1;
- }
-# endif /* __NR_chown32 */
- if (((owner + 1) > (uid_t) ((__kernel_uid_t) -1U))
- || ((group + 1) > (gid_t) ((__kernel_gid_t) -1U)))
- {
- __set_errno (EINVAL);
- return -1;
- }
-
- result = INLINE_SYSCALL (chown, 3, CHECK_STRING (file), owner, group);
-
- if (result >= 0 || errno != ENOSYS)
- return result;
-
- __set_errno (saved_errno);
- __libc_old_chown = 1;
- }
-
- return __lchown (file, owner, group);
-# elif __ASSUME_32BITUIDS
- /* This implies __ASSUME_LCHOWN_SYSCALL. */
+#if __ASSUME_32BITUIDS
return INLINE_SYSCALL (chown32, 3, CHECK_STRING (file), owner, group);
-# else
- /* !__ASSUME_32BITUIDS && ASSUME_LCHOWN_SYSCALL */
-# ifdef __NR_chown32
+#else
+ /* !__ASSUME_32BITUIDS */
+# ifdef __NR_chown32
if (__libc_missing_32bit_uids <= 0)
{
int result;
@@ -112,7 +69,7 @@
__set_errno (saved_errno);
__libc_missing_32bit_uids = 1;
}
-# endif /* __NR_chown32 */
+# endif /* __NR_chown32 */
if (((owner + 1) > (uid_t) ((__kernel_uid_t) -1U))
|| ((group + 1) > (gid_t) ((__kernel_gid_t) -1U)))
{
@@ -121,19 +78,11 @@
}
return INLINE_SYSCALL (chown, 3, CHECK_STRING (file), owner, group);
-# endif
+#endif
}
-#endif
-#if !defined __NR_lchown && __ASSUME_LCHOWN_SYSCALL == 0
-/* Compiling under older kernels. */
-int
-__chown_is_lchown (const char *file, uid_t owner, gid_t group)
-{
- return INLINE_SYSCALL (chown, 3, CHECK_STRING (file), owner, group);
-}
-#elif SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_1)
+#if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_1)
/* Compiling for compatibiity. */
int
attribute_compat_text_section
@@ -147,12 +96,6 @@
compat_symbol (libc, __chown_is_lchown, chown, GLIBC_2_0);
#endif
-#ifdef __NR_lchown
versioned_symbol (libc, __real_chown, chown, GLIBC_2_1);
strong_alias (__real_chown, __chown)
-#else
-strong_alias (__chown_is_lchown, __chown_is_lchown21)
-versioned_symbol (libc, __chown_is_lchown21, chown, GLIBC_2_1);
-strong_alias (__chown_is_lchown, __chown)
-#endif
libc_hidden_def (__chown)
Modified: fsf/trunk/libc/sysdeps/unix/sysv/linux/i386/fchownat.c
==============================================================================
--- fsf/trunk/libc/sysdeps/unix/sysv/linux/i386/fchownat.c (original)
+++ fsf/trunk/libc/sysdeps/unix/sysv/linux/i386/fchownat.c Tue May 15 00:01:54 2012
@@ -1,4 +1,4 @@
-/* Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
+/* Copyright (C) 2005-2012 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
@@ -84,7 +84,6 @@
}
# if __ASSUME_32BITUIDS > 0
- /* This implies __ASSUME_LCHOWN_SYSCALL. */
INTERNAL_SYSCALL_DECL (err);
if (flag & AT_SYMLINK_NOFOLLOW)
Modified: fsf/trunk/libc/sysdeps/unix/sysv/linux/i386/sigaction.c
==============================================================================
--- fsf/trunk/libc/sysdeps/unix/sysv/linux/i386/sigaction.c (original)
+++ fsf/trunk/libc/sysdeps/unix/sysv/linux/i386/sigaction.c Tue May 15 00:01:54 2012
@@ -1,5 +1,5 @@
/* POSIX.1 `sigaction' call for Linux/i386.
- Copyright (C) 1991,1995-2000,2002-2005,2006 Free Software Foundation, Inc.
+ Copyright (C) 1991-2012 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
@@ -37,12 +37,6 @@
#define SA_RESTORER 0x04000000
-#if __ASSUME_REALTIME_SIGNALS == 0
-/* The variable is shared between all wrappers around signal handling
- functions which have RT equivalents. */
-int __libc_missing_rt_sigs;
-#endif
-
/* Using the hidden attribute here does not change the code but it
helps to avoid warnings. */
#ifdef __NR_rt_sigaction
@@ -56,92 +50,39 @@
int
__libc_sigaction (int sig, const struct sigaction *act, struct sigaction *oact)
{
-#if __ASSUME_REALTIME_SIGNALS == 0
- struct old_kernel_sigaction k_newact, k_oldact;
-#endif
int result;
-#ifdef __NR_rt_sigaction
+ struct kernel_sigaction kact, koact;
- /* First try the RT signals. */
-# if __ASSUME_REALTIME_SIGNALS == 0
- if (!__libc_missing_rt_sigs)
-# endif
- {
- struct kernel_sigaction kact, koact;
-# if __ASSUME_REALTIME_SIGNALS == 0
- int saved_errno = errno;
-# endif
-
- if (act)
- {
- kact.k_sa_handler = act->sa_handler;
- kact.sa_flags = act->sa_flags;
- memcpy (&kact.sa_mask, &act->sa_mask, sizeof (sigset_t));
-
- if (GLRO(dl_sysinfo_dso) == NULL)
- {
- kact.sa_flags |= SA_RESTORER;
-
- kact.sa_restorer = ((act->sa_flags & SA_SIGINFO)
- ? &restore_rt : &restore);
- }
- }
-
- /* XXX The size argument hopefully will have to be changed to the
- real size of the user-level sigset_t. */
- result = INLINE_SYSCALL (rt_sigaction, 4,
- sig, act ? __ptrvalue (&kact) : NULL,
- oact ? __ptrvalue (&koact) : NULL, _NSIG / 8);
-
-# if __ASSUME_REALTIME_SIGNALS == 0
- if (result >= 0 || errno != ENOSYS)
-# endif
- {
- if (oact && result >= 0)
- {
- oact->sa_handler = koact.k_sa_handler;
- memcpy (&oact->sa_mask, &koact.sa_mask, sizeof (sigset_t));
- oact->sa_flags = koact.sa_flags;
- oact->sa_restorer = koact.sa_restorer;
- }
- return result;
- }
-
-# if __ASSUME_REALTIME_SIGNALS == 0
- __set_errno (saved_errno);
- __libc_missing_rt_sigs = 1;
-# endif
- }
-#endif
-
-#if __ASSUME_REALTIME_SIGNALS == 0
if (act)
{
- k_newact.k_sa_handler = act->sa_handler;
- k_newact.sa_mask = act->sa_mask.__val[0];
- k_newact.sa_flags = act->sa_flags | SA_RESTORER;
+ kact.k_sa_handler = act->sa_handler;
+ kact.sa_flags = act->sa_flags;
+ memcpy (&kact.sa_mask, &act->sa_mask, sizeof (sigset_t));
- k_newact.sa_restorer = &restore;
+ if (GLRO(dl_sysinfo_dso) == NULL)
+ {
+ kact.sa_flags |= SA_RESTORER;
+
+ kact.sa_restorer = ((act->sa_flags & SA_SIGINFO)
+ ? &restore_rt : &restore);
+ }
}
- result = INLINE_SYSCALL (sigaction, 3, sig,
- act ? __ptrvalue (&k_newact) : 0,
- oact ? __ptrvalue (&k_oldact) : 0);
+ /* XXX The size argument hopefully will have to be changed to the
+ real size of the user-level sigset_t. */
+ result = INLINE_SYSCALL (rt_sigaction, 4,
+ sig, act ? __ptrvalue (&kact) : NULL,
+ oact ? __ptrvalue (&koact) : NULL, _NSIG / 8);
- if (result < 0)
- return -1;
-
- if (oact)
+ if (oact && result >= 0)
{
- oact->sa_handler = k_oldact.k_sa_handler;
- oact->sa_mask.__val[0] = k_oldact.sa_mask;
- oact->sa_flags = k_oldact.sa_flags;
- oact->sa_restorer = k_oldact.sa_restorer;
+ oact->sa_handler = koact.k_sa_handler;
+ memcpy (&oact->sa_mask, &koact.sa_mask, sizeof (sigset_t));
+ oact->sa_flags = koact.sa_flags;
+ oact->sa_restorer = koact.sa_restorer;
}
-
- return 0;
-#endif
+ return result;
}
libc_hidden_def (__libc_sigaction)
Modified: fsf/trunk/libc/sysdeps/unix/sysv/linux/if_index.c
==============================================================================
--- fsf/trunk/libc/sysdeps/unix/sysv/linux/if_index.c (original)
+++ fsf/trunk/libc/sysdeps/unix/sysv/linux/if_index.c Tue May 15 00:01:54 2012
@@ -1,5 +1,4 @@
-/* Copyright (C) 1997, 1998, 1999, 2000, 2002, 2003, 2004, 2005, 2007
- Free Software Foundation, Inc.
+/* Copyright (C) 1997-2012 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
@@ -32,14 +31,6 @@
#include "netlinkaccess.h"
-/* Variable to signal whether SIOCGIFCONF is not available. */
-# if __ASSUME_SIOCGIFNAME == 0
-static int old_siocgifconf;
-#else
-# define old_siocgifconf 0
-#endif
-
-
unsigned int
if_nametoindex (const char *ifname)
{
@@ -101,38 +92,20 @@
/* We may be able to get the needed buffer size directly, rather than
guessing. */
- if (! old_siocgifconf)
- {
- ifc.ifc_buf = NULL;
- ifc.ifc_len = 0;
- if (__ioctl (fd, SIOCGIFCONF, &ifc) < 0 || ifc.ifc_len == 0)
- {
-# if __ASSUME_SIOCGIFNAME == 0
- old_siocgifconf = 1;
-# endif
- rq_len = RQ_IFS * sizeof (struct ifreq);
- }
- else
- rq_len = ifc.ifc_len;
- }
+ ifc.ifc_buf = NULL;
+ ifc.ifc_len = 0;
+ if (__ioctl (fd, SIOCGIFCONF, &ifc) < 0 || ifc.ifc_len == 0)
+ rq_len = RQ_IFS * sizeof (struct ifreq);
else
- rq_len = RQ_IFS * sizeof (struct ifreq);
+ rq_len = ifc.ifc_len;
/* Read all the interfaces out of the kernel. */
ifc.ifc_buf = alloca (rq_len);
ifc.ifc_len = rq_len;
- while (1)
- {
- if (__ioctl (fd, SIOCGIFCONF, &ifc) < 0)
- {
- close_not_cancel_no_status (fd);
- return NULL;
- }
- if (ifc.ifc_len < rq_len || ! old_siocgifconf)
- break;
-
- ifc.ifc_buf = extend_alloca (ifc.ifc_buf, rq_len, 2 * rq_len);
- ifc.ifc_len = rq_len;
+ if (__ioctl (fd, SIOCGIFCONF, &ifc) < 0)
+ {
+ close_not_cancel_no_status (fd);
+ return NULL;
}
nifs = ifc.ifc_len / sizeof (struct ifreq);
@@ -314,161 +287,31 @@
char *
if_indextoname (unsigned int ifindex, char *ifname)
{
-#if !defined SIOCGIFINDEX && __ASSUME_SIOCGIFNAME == 0
- __set_errno (ENOSYS);
- return NULL;
-#else
-# if __ASSUME_SIOCGIFNAME == 0
- struct if_nameindex *idx;
- struct if_nameindex *p;
- char *result = NULL;
-# endif
-
-# if defined SIOCGIFNAME || __ASSUME_SIOCGIFNAME > 0
/* We may be able to do the conversion directly, rather than searching a
list. This ioctl is not present in kernels before version 2.1.50. */
struct ifreq ifr;
int fd;
-# if __ASSUME_SIOCGIFNAME == 0
- static int siocgifname_works_not;
-
- if (!siocgifname_works_not)
-# endif
- {
-# if __ASSUME_SIOCGIFNAME == 0
- int serrno = errno;
-# endif
- int status;
-
- fd = __opensock ();
-
- if (fd < 0)
- return NULL;
-
- ifr.ifr_ifindex = ifindex;
- status = __ioctl (fd, SIOCGIFNAME, &ifr);
-
- close_not_cancel_no_status (fd);
-
- if (status < 0)
- {
-# if __ASSUME_SIOCGIFNAME == 0
- if (errno == EINVAL)
- siocgifname_works_not = 1; /* Don't make the same mistake twice. */
- else
-# endif
- {
- if (errno == ENODEV)
- /* POSIX requires ENXIO. */
- __set_errno (ENXIO);
-
- return NULL;
- }
- }
- else
- return strncpy (ifname, ifr.ifr_name, IFNAMSIZ);
-
-# if __ASSUME_SIOCGIFNAME == 0
- __set_errno (serrno);
-# endif
- }
-# endif
-
-# if __ASSUME_SIOCGIFNAME == 0
- idx = if_nameindex ();
-
- if (idx != NULL)
- {
- for (p = idx; p->if_index || p->if_name; ++p)
- if (p->if_index == ifindex)
- {
- result = strncpy (ifname, p->if_name, IFNAMSIZ);
- break;
- }
-
- if_freenameindex (idx);
-
- if (result == NULL)
+ int status;
+
+ fd = __opensock ();
+
+ if (fd < 0)
+ return NULL;
+
+ ifr.ifr_ifindex = ifindex;
+ status = __ioctl (fd, SIOCGIFNAME, &ifr);
+
+ close_not_cancel_no_status (fd);
+
+ if (status < 0)
+ {
+ if (errno == ENODEV)
+ /* POSIX requires ENXIO. */
__set_errno (ENXIO);
- }
- return result;
-# endif
-#endif
+
+ return NULL;
+ }
+ else
+ return strncpy (ifname, ifr.ifr_name, IFNAMSIZ);
}
libc_hidden_def (if_indextoname)
-
-
-#if 0
-void
-internal_function
-__protocol_available (int *have_inet, int *have_inet6)
-{
- int fd = __opensock ();
- unsigned int nifs;
- int rq_len;
- struct ifconf ifc;
-# define RQ_IFS 4
-
- /* Wirst case assumption. */
- *have_inet = 0;
- *have_inet6 = 0;
-
- if (fd < 0)
- /* We cannot open the socket. No networking at all? */
- return;
-
- /* We may be able to get the needed buffer size directly, rather than
- guessing. */
- if (! old_siocgifconf)
- {
- ifc.ifc_buf = NULL;
- ifc.ifc_len = 0;
- if (__ioctl (fd, SIOCGIFCONF, &ifc) < 0 || ifc.ifc_len == 0)
- {
-# if __ASSUME_SIOCGIFNAME == 0
- old_siocgifconf = 1;
-# endif
- rq_len = RQ_IFS * sizeof (struct ifreq);
- }
- else
- rq_len = ifc.ifc_len;
- }
- else
- rq_len = RQ_IFS * sizeof (struct ifreq);
-
- /* Read all the interfaces out of the kernel. */
- do
- {
- ifc.ifc_buf = alloca (ifc.ifc_len = rq_len);
- if (__ioctl (fd, SIOCGIFCONF, &ifc) < 0)
- {
- close_not_cancel_no_status (fd);
- return;
- }
- rq_len *= 2;
- }
- while (ifc.ifc_len == rq_len && old_siocgifconf);
-
- nifs = ifc.ifc_len / sizeof (struct ifreq);
-
- /* Go through all the interfaces and get the address. */
- while (nifs-- > 0)
- if (__ioctl (fd, SIOCGIFADDR, &ifc.ifc_req[nifs]) >= 0)
- {
- /* We successfully got information about this interface. Now
- test whether it is an IPv4 or IPv6 address. */
- if (ifc.ifc_req[nifs].ifr_addr.sa_family == AF_INET)
- *have_inet = 1;
- else if (ifc.ifc_req[nifs].ifr_addr.sa_family == AF_INET6)
- *have_inet6 = 1;
-
- /* Note, this is & not &&. It works since the values are always
- 0 or 1. */
- if (*have_inet & *have_inet6)
- /* We can stop early. */
- break;
- }
-
- close_not_cancel_no_status (fd);
-}
-#endif
Modified: fsf/trunk/libc/sysdeps/unix/sysv/linux/ifreq.c
==============================================================================
--- fsf/trunk/libc/sysdeps/unix/sysv/linux/ifreq.c (original)
+++ fsf/trunk/libc/sysdeps/unix/sysv/linux/ifreq.c Tue May 15 00:01:54 2012
@@ -1,4 +1,4 @@
-/* Copyright (C) 1999,2002,2003,2004,2005,2006 Free Software Foundation, Inc.
+/* Copyright (C) 1999-2012 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Andreas Jaeger <aj@xxxxxxx>.
@@ -18,13 +18,6 @@
#include "ifreq.h"
#include <kernel-features.h>
-
-/* Variable to signal whether SIOCGIFCONF is not available. */
-#if __ASSUME_SIOCGIFNAME == 0 || 1
-static int old_siocgifconf;
-#else
-# define old_siocgifconf 0
-#endif
void
@@ -49,45 +42,27 @@
/* We may be able to get the needed buffer size directly, rather than
guessing. */
- if (! old_siocgifconf)
- {
- ifc.ifc_buf = NULL;
- ifc.ifc_len = 0;
- if (__ioctl (fd, SIOCGIFCONF, &ifc) < 0 || ifc.ifc_len == 0)
- {
-# if __ASSUME_SIOCGIFNAME == 0
- old_siocgifconf = 1;
-# endif
- rq_len = RQ_IFS * sizeof (struct ifreq);
- }
- else
- rq_len = ifc.ifc_len;
- }
+ ifc.ifc_buf = NULL;
+ ifc.ifc_len = 0;
+ if (__ioctl (fd, SIOCGIFCONF, &ifc) < 0 || ifc.ifc_len == 0)
+ rq_len = RQ_IFS * sizeof (struct ifreq);
else
- rq_len = RQ_IFS * sizeof (struct ifreq);
+ rq_len = ifc.ifc_len;
/* Read all the interfaces out of the kernel. */
- while (1)
+ ifc.ifc_len = rq_len;
+ void *newp = realloc (ifc.ifc_buf, ifc.ifc_len);
+ if (newp == NULL
+ || (ifc.ifc_buf = newp, __ioctl (fd, SIOCGIFCONF, &ifc)) < 0)
{
- ifc.ifc_len = rq_len;
- void *newp = realloc (ifc.ifc_buf, ifc.ifc_len);
- if (newp == NULL
- || (ifc.ifc_buf = newp, __ioctl (fd, SIOCGIFCONF, &ifc)) < 0)
- {
- free (ifc.ifc_buf);
+ free (ifc.ifc_buf);
- if (fd != sockfd)
- __close (fd);
+ if (fd != sockfd)
+ __close (fd);
- *num_ifs = 0;
- *ifreqs = NULL;
- return;
- }
-
- if (!old_siocgifconf || ifc.ifc_len < rq_len)
- break;
-
- rq_len *= 2;
+ *num_ifs = 0;
+ *ifreqs = NULL;
+ return;
}
nifs = ifc.ifc_len / sizeof (struct ifreq);
Modified: fsf/trunk/libc/sysdeps/unix/sysv/linux/kernel-features.h
==============================================================================
--- fsf/trunk/libc/sysdeps/unix/sysv/linux/kernel-features.h (original)
+++ fsf/trunk/libc/sysdeps/unix/sysv/linux/kernel-features.h Tue May 15 00:01:54 2012
@@ -35,60 +35,16 @@
version given by __LINUX_KERNEL_VERSION. We are not always exactly
recording the correct versions in which the features were
introduced. If somebody cares these values can afterwards be
- corrected. Most of the numbers here are set corresponding to
- 2.2.0. */
-
-/* `getcwd' system call. */
-#if __LINUX_KERNEL_VERSION >= 131584
-# define __ASSUME_GETCWD_SYSCALL 1
-#endif
-
-/* Real-time signal became usable in 2.1.70. */
-#if __LINUX_KERNEL_VERSION >= 131398
-# define __ASSUME_REALTIME_SIGNALS 1
-#endif
-
-/* When were the `pread'/`pwrite' syscalls introduced? */
-#if __LINUX_KERNEL_VERSION >= 131584
-# define __ASSUME_PREAD_SYSCALL 1
-# define __ASSUME_PWRITE_SYSCALL 1
-#endif
-
-/* When was `poll' introduced? */
-#if __LINUX_KERNEL_VERSION >= 131584
-# define __ASSUME_POLL_SYSCALL 1
-#endif
-
-/* The `lchown' syscall was introduced in 2.1.80. */
-#if __LINUX_KERNEL_VERSION >= 131408
-# define __ASSUME_LCHOWN_SYSCALL 1
-#endif
-
-/* When did the `setresuid' syscall became available? */
-#if __LINUX_KERNEL_VERSION >= 131584 && !defined __sparc__
+ corrected. */
+
+/* When did the `setresuid' syscall became available? By 2.2.0 except
+ on SPARC. */
+#if !defined __sparc__
# define __ASSUME_SETRESUID_SYSCALL 1
#endif
-/* The SIOCGIFNAME ioctl is available starting with 2.1.50. */
-#if __LINUX_KERNEL_VERSION >= 131408
-# define __ASSUME_SIOCGIFNAME 1
-#endif
-
-/* MSG_NOSIGNAL was at least available with Linux 2.2.0. */
-#if __LINUX_KERNEL_VERSION >= 131584
-# define __ASSUME_MSG_NOSIGNAL 1
-#endif
-
/* The sendfile syscall was introduced in 2.2.0. */
-#if __LINUX_KERNEL_VERSION >= 131584
-# define __ASSUME_SENDFILE 1
-#endif
-
-/* Only very old kernels had no real symlinks for terminal descriptors
- in /proc/self/fd. */
-#if __LINUX_KERNEL_VERSION >= 131584
-# define __ASSUME_PROC_SELF_FD_SYMLINK 1
-#endif
+#define __ASSUME_SENDFILE 1
/* On x86 another `getrlimit' syscall was added in 2.3.25. */
#if __LINUX_KERNEL_VERSION >= 131865 && defined __i386__
Modified: fsf/trunk/libc/sysdeps/unix/sysv/linux/poll.c
==============================================================================
--- fsf/trunk/libc/sysdeps/unix/sysv/linux/poll.c (original)
+++ fsf/trunk/libc/sysdeps/unix/sysv/linux/poll.c Tue May 15 00:01:54 2012
@@ -1,6 +1,5 @@
-/* Poll system call, with emulation if it is not available.
- Copyright (C) 1997,1998,1999,2000,2001,2002,2006
- Free Software Foundation, Inc.
+/* Poll system call.
+ Copyright (C) 1997-2012 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
@@ -26,58 +25,12 @@
#include <kernel-features.h>
-#if defined __NR_poll || __ASSUME_POLL_SYSCALL > 0
-
-# if __ASSUME_POLL_SYSCALL == 0
-static int __emulate_poll (struct pollfd *fds, nfds_t nfds,
- int timeout) internal_function;
-# endif
-
-
-# if __ASSUME_POLL_SYSCALL == 0
-/* For loser kernels. */
-static int
-loser_poll (struct pollfd *fds, nfds_t nfds, int timeout)
-{
- static int must_emulate;
-
- if (!must_emulate)
- {
- int errno_saved = errno;
- int retval = INLINE_SYSCALL (poll, 3, CHECK_N (fds, nfds), nfds,
- timeout);
-
- if (retval >= 0 || errno != ENOSYS)
- return retval;
-
- __set_errno (errno_saved);
- must_emulate = 1;
- }
-
- return __emulate_poll (fds, nfds, timeout);
-}
-# endif
-
-
-/* The real implementation. */
int
__poll (fds, nfds, timeout)
struct pollfd *fds;
nfds_t nfds;
int timeout;
{
-# if __ASSUME_POLL_SYSCALL == 0
- if (SINGLE_THREAD_P)
- return loser_poll (CHECK_N (fds, nfds), nfds, timeout);
-
- int oldtype = LIBC_CANCEL_ASYNC ();
-
- int result = loser_poll (CHECK_N (fds, nfds), nfds, timeout);
-
- LIBC_CANCEL_RESET (oldtype);
-
- return result;
-# else
if (SINGLE_THREAD_P)
return INLINE_SYSCALL (poll, 3, CHECK_N (fds, nfds), nfds, timeout);
@@ -88,17 +41,7 @@
LIBC_CANCEL_RESET (oldtype);
return result;
-# endif
}
libc_hidden_def (__poll)
weak_alias (__poll, poll)
strong_alias (__poll, __libc_poll)
-
-/* Get the emulation code. */
-# define __poll(fds, nfds, timeout) \
- static internal_function __emulate_poll (fds, nfds, timeout)
-#endif
-
-#if __ASSUME_POLL_SYSCALL == 0
-# include <sysdeps/unix/bsd/poll.c>
-#endif
Modified: fsf/trunk/libc/sysdeps/unix/sysv/linux/powerpc/chown.c
==============================================================================
--- fsf/trunk/libc/sysdeps/unix/sysv/linux/powerpc/chown.c (original)
+++ fsf/trunk/libc/sysdeps/unix/sysv/linux/powerpc/chown.c Tue May 15 00:01:54 2012
@@ -1,5 +1,5 @@
/* chown() compatibility.
- Copyright (C) 1998, 2000, 2002, 2003, 2005 Free Software Foundation, Inc.
+ Copyright (C) 1998-2012 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
@@ -35,95 +35,7 @@
int
__chown (const char *file, uid_t owner, gid_t group)
{
-#if __ASSUME_LCHOWN_SYSCALL
return INLINE_SYSCALL (chown, 3, file, owner, group);
-#else
- int err;
- int old_errno;
- char link[PATH_MAX + 2];
- char path[2 * PATH_MAX + 4];
- int loopct;
- size_t filelen;
- static int libc_old_chown = 0 /* -1=old linux, 1=new linux, 0=unknown */;
-
- if (libc_old_chown == 1)
- return INLINE_SYSCALL (chown, 3, __ptrvalue (file), owner, group);
-
- old_errno = errno;
-
-# ifdef __NR_lchown
- if (libc_old_chown == 0)
- {
- err = INLINE_SYSCALL (chown, 3, __ptrvalue (file), owner, group);
- if (err != -1 || errno != ENOSYS)
- {
- libc_old_chown = 1;
- return err;
- }
- libc_old_chown = -1;
- }
-# endif
-
- err = __readlink (file, link, PATH_MAX + 1);
- if (err == -1)
- {
- __set_errno (old_errno);
- return __lchown (file, owner, group);
- }
-
- filelen = strlen (file) + 1;
- if (filelen > sizeof (path))
- {
- __set_errno (ENAMETOOLONG);
- return -1;
- }
- memcpy (path, file, filelen);
-
- /* 'The system has an arbitrary limit...' In practise, we'll hit
- ENAMETOOLONG before this, usually. */
- for (loopct = 0; loopct < 128; ++loopct)
- {
- size_t linklen;
-
- if (err >= PATH_MAX + 1)
- {
- __set_errno (ENAMETOOLONG);
- return -1;
- }
-
- link[err] = 0; /* Null-terminate string, just-in-case. */
-
- linklen = strlen (link) + 1;
-
- if (link[0] == '/')
- memcpy (path, link, linklen);
- else
- {
- filelen = strlen (path);
-
- while (filelen > 1 && path[filelen - 1] == '/')
- --filelen;
- while (filelen > 0 && path[filelen - 1] != '/')
- --filelen;
- if (filelen + linklen > sizeof (path))
- {
- errno = ENAMETOOLONG;
- return -1;
- }
- memcpy (path + filelen, link, linklen);
- }
-
- err = __readlink (path, link, PATH_MAX + 1);
-
- if (err == -1)
- {
- __set_errno (old_errno);
- return __lchown (path, owner, group);
- }
- }
- __set_errno (ELOOP);
- return -1;
-#endif
}
libc_hidden_def (__chown)
Modified: fsf/trunk/libc/sysdeps/unix/sysv/linux/powerpc/fchownat.c
==============================================================================
--- fsf/trunk/libc/sysdeps/unix/sysv/linux/powerpc/fchownat.c (original)
+++ fsf/trunk/libc/sysdeps/unix/sysv/linux/powerpc/fchownat.c Tue May 15 00:01:54 2012
@@ -1,4 +1,4 @@
-/* Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
+/* Copyright (C) 2005-2012 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
@@ -86,7 +86,6 @@
file = buf;
}
-# if __ASSUME_LCHOWN_SYSCALL
INTERNAL_SYSCALL_DECL (err);
if (flag & AT_SYMLINK_NOFOLLOW)
@@ -99,15 +98,6 @@
__atfct_seterrno (INTERNAL_SYSCALL_ERRNO (result, err), fd, buf);
return -1;
}
-# else
- /* Don't inline the rest to avoid unnecessary code duplication. */
- if (flag & AT_SYMLINK_NOFOLLOW)
- result = __lchown (file, owner, group);
- else
- result = __chown (file, owner, group);
- if (result < 0)
- __atfct_seterrno (errno, fd, buf);
-# endif
return result;
Modified: fsf/trunk/libc/sysdeps/unix/sysv/linux/powerpc/powerpc32/pread.c
==============================================================================
--- fsf/trunk/libc/sysdeps/unix/sysv/linux/powerpc/powerpc32/pread.c (original)
+++ fsf/trunk/libc/sysdeps/unix/sysv/linux/powerpc/powerpc32/pread.c Tue May 15 00:01:54 2012
@@ -1,5 +1,4 @@
-/* Copyright (C) 1997,1998,1999,2000,2002,2003,2006
- Free Software Foundation, Inc.
+/* Copyright (C) 1997-2012 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@xxxxxxxxxx>, 1997.
@@ -27,14 +26,6 @@
#include <kernel-features.h>
-#if defined __NR_pread || __ASSUME_PREAD_SYSCALL > 0
-
-# if __ASSUME_PREAD_SYSCALL == 0
-static ssize_t __emulate_pread (int fd, void *buf, size_t count,
- off_t offset) internal_function;
-# endif
-
-
ssize_t
__libc_pread (fd, buf, count, offset)
int fd;
@@ -49,11 +40,6 @@
/* On PPC32 64bit values are aligned in odd/even register pairs. */
result = INLINE_SYSCALL (pread, 6, fd, CHECK_N (buf, count), count,
0, offset >> 31, offset);
-# if __ASSUME_PREAD_SYSCALL == 0
- if (result == -1 && errno == ENOSYS)
- /* No system call available. Use the emulation. */
- result = __emulate_pread (fd, buf, count, offset);
-# endif
return result;
}
@@ -63,11 +49,6 @@
/* On PPC32 64bit values are aligned in odd/even register pairs. */
result = INLINE_SYSCALL (pread, 6, fd, CHECK_N (buf, count), count,
0, offset >> 31, offset);
-# if __ASSUME_PREAD_SYSCALL == 0
- if (result == -1 && errno == ENOSYS)
- /* No system call available. Use the emulation. */
- result = __emulate_pread (fd, buf, count, offset);
-# endif
LIBC_CANCEL_RESET (oldtype);
@@ -76,11 +57,3 @@
strong_alias (__libc_pread, __pread)
weak_alias (__libc_pread, pread)
-
-# define __libc_pread(fd, buf, count, offset) \
- static internal_function __emulate_pread (fd, buf, count, offset)
-#endif
-
-#if __ASSUME_PREAD_SYSCALL == 0
-# include <sysdeps/posix/pread.c>
-#endif
Modified: fsf/trunk/libc/sysdeps/unix/sysv/linux/powerpc/powerpc32/pread64.c
==============================================================================
--- fsf/trunk/libc/sysdeps/unix/sysv/linux/powerpc/powerpc32/pread64.c (original)
+++ fsf/trunk/libc/sysdeps/unix/sysv/linux/powerpc/powerpc32/pread64.c Tue May 15 00:01:54 2012
@@ -1,5 +1,4 @@
-/* Copyright (C) 1997,1998,1999,2000,2002,2003,2006
- Free Software Foundation, Inc.
+/* Copyright (C) 1997-2012 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@xxxxxxxxxx>, 1997.
@@ -26,13 +25,6 @@
#include <kernel-features.h>
-#if defined __NR_pread || __ASSUME_PREAD_SYSCALL > 0
-
-# if __ASSUME_PREAD_SYSCALL == 0
-static ssize_t __emulate_pread64 (int fd, void *buf, size_t count,
- off64_t offset) internal_function;
-# endif
-
ssize_t
__libc_pread64 (fd, buf, count, offset)
@@ -49,11 +41,6 @@
result = INLINE_SYSCALL (pread, 6, fd, CHECK_N (buf, count), count,
0, (long) (offset >> 32),
(long) offset);
-# if __ASSUME_PREAD_SYSCALL == 0
- if (result == -1 && errno == ENOSYS)
- /* No system call available. Use the emulation. */
- result = __emulate_pread64 (fd, buf, count, offset);
-# endif
return result;
}
@@ -64,11 +51,6 @@
result = INLINE_SYSCALL (pread, 6, fd, CHECK_N (buf, count), count,
0, (long) (offset >> 32),
(long) offset);
-# if __ASSUME_PREAD_SYSCALL == 0
- if (result == -1 && errno == ENOSYS)
- /* No system call available. Use the emulation. */
- result = __emulate_pread64 (fd, buf, count, offset);
-# endif
LIBC_CANCEL_RESET (oldtype);
@@ -77,11 +59,3 @@
weak_alias (__libc_pread64, __pread64)
weak_alias (__libc_pread64, pread64)
-
-# define __libc_pread64(fd, buf, count, offset) \
- static internal_function __emulate_pread64 (fd, buf, count, offset)
-#endif
-
-# if __ASSUME_PREAD_SYSCALL == 0
-# include <sysdeps/posix/pread64.c>
-#endif
Modified: fsf/trunk/libc/sysdeps/unix/sysv/linux/powerpc/powerpc32/pwrite.c
==============================================================================
--- fsf/trunk/libc/sysdeps/unix/sysv/linux/powerpc/powerpc32/pwrite.c (original)
+++ fsf/trunk/libc/sysdeps/unix/sysv/linux/powerpc/powerpc32/pwrite.c Tue May 15 00:01:54 2012
@@ -1,5 +1,4 @@
-/* Copyright (C) 1997,1998,1999,2000,2002,2003,2006
- Free Software Foundation, Inc.
+/* Copyright (C) 1997-2012 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@xxxxxxxxxx>, 1997.
@@ -27,13 +26,6 @@
#include <kernel-features.h>
-#if defined __NR_pwrite || __ASSUME_PWRITE_SYSCALL > 0
-
-# if __ASSUME_PWRITE_SYSCALL == 0
-static ssize_t __emulate_pwrite (int fd, const void *buf, size_t count,
- off_t offset) internal_function;
-# endif
-
ssize_t
__libc_pwrite (fd, buf, count, offset)
@@ -49,11 +41,6 @@
/* On PPC32 64bit values are aligned in odd/even register pairs. */
result = INLINE_SYSCALL (pwrite, 6, fd, CHECK_N (buf, count), count,
0, offset >> 31, offset);
-# if __ASSUME_PWRITE_SYSCALL == 0
- if (result == -1 && errno == ENOSYS)
- /* No system call available. Use the emulation. */
- result = __emulate_pwrite (fd, buf, count, offset);
-# endif
return result;
}
@@ -63,11 +50,6 @@
/* On PPC32 64bit values are aligned in odd/even register pairs. */
result = INLINE_SYSCALL (pwrite, 6, fd, CHECK_N (buf, count), count,
0, offset >> 31, offset);
-# if __ASSUME_PWRITE_SYSCALL == 0
- if (result == -1 && errno == ENOSYS)
- /* No system call available. Use the emulation. */
- result = __emulate_pwrite (fd, buf, count, offset);
-# endif
LIBC_CANCEL_RESET (oldtype);
@@ -76,11 +58,3 @@
strong_alias (__libc_pwrite, __pwrite)
weak_alias (__libc_pwrite, pwrite)
-
-# define __libc_pwrite(fd, buf, count, offset) \
- static internal_function __emulate_pwrite (fd, buf, count, offset)
-#endif
-
-#if __ASSUME_PWRITE_SYSCALL == 0
-# include <sysdeps/posix/pwrite.c>
-#endif
Modified: fsf/trunk/libc/sysdeps/unix/sysv/linux/powerpc/powerpc32/pwrite64.c
==============================================================================
--- fsf/trunk/libc/sysdeps/unix/sysv/linux/powerpc/powerpc32/pwrite64.c (original)
+++ fsf/trunk/libc/sysdeps/unix/sysv/linux/powerpc/powerpc32/pwrite64.c Tue May 15 00:01:54 2012
@@ -1,5 +1,4 @@
-/* Copyright (C) 1997,1998,1999,2000,2002,2003,2006
- Free Software Foundation, Inc.
+/* Copyright (C) 1997-2012 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@xxxxxxxxxx>, 1997.
@@ -26,13 +25,6 @@
#include <kernel-features.h>
[... 1567 lines stripped ...]
_______________________________________________
Commits mailing list
Commits@xxxxxxxxxx
http://eglibc.org/cgi-bin/mailman/listinfo/commits