Skip to content
Browse files

(CFLAGS-tst-align.c): Add -mpreferred-stack-boundary=4.

  • Loading branch information...
1 parent 0ecb606 commit a334319f6530564d22e775935d9c91663623a1b4 Ulrich Drepper committed Dec 22, 2004
Showing with 8,256 additions and 25,996 deletions.
  1. +12 −2 BUGS
  2. +4,949 −2,161 ChangeLog
  3. +0 −21 ChangeLog.11
  4. +0 −12 ChangeLog.12
  5. +0 −5,525 ChangeLog.15
  6. +0 −13,478 ChangeLog.16
  7. +3 −3 ChangeLog.5
  8. +0 −16 FAQ
  9. +0 −13 FAQ.in
  10. +125 −53 INSTALL
  11. +1,508 −0 INTERFACE
  12. +189 −0 MakeTAGS
  13. +132 −102 Makeconfig
  14. +17 −103 Makefile
  15. +2 −0 Makefile.in
  16. +146 −141 Makerules
  17. +3 −108 NEWS
  18. +31 −27 NOTES
  19. +46 −81 README
  20. +1 −1 README.libm
  21. +45 −80 README.template
  22. +5 −7 Rules
  23. +0 −8 Versions.def
  24. +0 −45 WUR-REPORT
  25. +0 −4 abi-tags
  26. +2 −4 argp/Makefile
  27. +1 −1 argp/argp-eexst.c
  28. +24 −18 argp/argp-fmtstream.c
  29. +4 −0 argp/argp-fmtstream.h
  30. +1 −1 argp/argp-fs-xinl.c
  31. +101 −88 argp/argp-help.c
  32. +1 −1 argp/argp-xinl.c
  33. +3 −4 argp/argp.h
  34. +0 −26 argp/bug-argp1.c
  35. +0 −101 argp/tst-argp2.c
  36. +8 −2 assert/assert-perr.c
  37. +8 −3 assert/assert.c
  38. +8 −10 assert/assert.h
  39. +6 −0 bare/.cvsignore
  40. +55 −0 bare/Makefile
  41. +10 −13 bits/byteswap.h
  42. +4 −1 bits/link.h
  43. +1 −7 bits/mman.h
  44. +1 −9 bits/resource.h
  45. +1 −1 bits/siginfo.h
  46. +0 −29 bits/syslog-path.h
  47. +5 −6 bits/types.h
  48. +0 −1 c_stubs/Banner
  49. +0 −482 c_stubs/COPYING.LIB
  50. +0 −46 c_stubs/ChangeLog
  51. +0 −46 c_stubs/Makefile
  52. +0 −8 c_stubs/README
  53. +0 −5 c_stubs/configure
  54. +0 −126 c_stubs/gconv_stubs.c
  55. +0 −8 c_stubs/test-stdio.c
  56. +14 −12 catgets/gencat.c
  57. +1 −0 config-name.in
  58. +23 −15 config.h.in
  59. +5 −8 config.make.in
  60. +359 −494 configure
  61. +267 −285 configure.in
  62. +5 −3 crypt/Makefile
  63. +1 −1 crypt/crypt_util.c
  64. +2 −3 crypt/md5.c
  65. +1 −5 crypt/md5.h
  66. +20 −10 csu/Makefile
  67. +0 −102 csu/check_fds.c
  68. +2 −3 csu/dso_handle.c
  69. +21 −38 csu/elf-init.c
  70. +0 −263 csu/libc-start.c
  71. +0 −263 csu/libc-tls.c
  72. +38 −0 csu/munch-tmpl.c
  73. +11 −0 csu/munch.awk
  74. +2 −2 csu/version.c
  75. +3 −3 ctype/ctype-extn.c
  76. +0 −1 debug/Depend
  77. +6 −45 debug/Makefile
  78. +0 −21 debug/Versions
  79. +0 −94 debug/backtrace.c
  80. +0 −64 debug/backtracesymsfd.c
  81. +2 −2 debug/catchsegv.sh
  82. +3 −7 debug/chk_fail.c
  83. +0 −30 debug/confstr_chk.c
  84. +3 −2 debug/execinfo.h
  85. +0 −67 debug/fgets_chk.c
  86. +0 −65 debug/fgets_u_chk.c
  87. +0 −54 debug/fgetws_chk.c
  88. +0 −61 debug/fgetws_u_chk.c
  89. +2 −3 debug/fprintf_chk.c
  90. +0 −45 debug/fwprintf_chk.c
  91. +0 −31 debug/getcwd_chk.c
  92. +0 −29 debug/getdomainname_chk.c
  93. +0 −30 debug/getgroups_chk.c
  94. +0 −29 debug/gethostname_chk.c
  95. +0 −29 debug/getlogin_r_chk.c
  96. +0 −34 debug/getwd_chk.c
  97. +0 −31 debug/mbsnrtowcs_chk.c
  98. +0 −31 debug/mbsrtowcs_chk.c
  99. +0 −35 debug/mbstowcs_chk.c
  100. +0 −92 debug/memset_chk.c
  101. +0 −30 debug/pread64_chk.c
  102. +0 −30 debug/pread_chk.c
  103. +2 −3 debug/printf_chk.c
  104. +0 −29 debug/ptsname_r_chk.c
  105. +0 −38 debug/read_chk.c
  106. +0 −38 debug/readlink_chk.c
  107. +0 −31 debug/readlinkat_chk.c
  108. +0 −60 debug/realpath_chk.c
  109. +0 −30 debug/recv_chk.c
  110. +0 −31 debug/recvfrom_chk.c
  111. +3 −6 debug/snprintf_chk.c
  112. +2 −5 debug/sprintf_chk.c
  113. +0 −33 debug/stack_chk_fail.c
  114. +0 −30 debug/stack_chk_fail_local.c
  115. +0 −85 debug/stpncpy_chk.c
  116. +0 −37 debug/swprintf_chk.c
Sorry, we could not display the entire diff because too many files (6,882) changed.
View
14 BUGS
@@ -1,7 +1,7 @@
List of known bugs (certainly very incomplete)
----------------------------------------------
-Time-stamp: <2005-09-23 13:25:42 drepper>
+Time-stamp: <02/09/30 13:49:48 drepper>
This following list contains those bugs which I'm aware of. Please
make sure that bugs you report are not listed here. If you can fix one
@@ -10,7 +10,7 @@ of these bugs/limitations I'll certainly be glad to receive a patch.
Another source of information about bugs is the problem data base of the
GNU project. There is an easy to use WWW interface available at
- http://sourceware.org/bugzilla/
+ http://www-gnats.gnu.org:8080/cgi-bin/wwwgnats.pl
I would appreciate it very much if you could verify the problem was not
reported before by looking through the database. To make the information
@@ -27,9 +27,19 @@ Severity: [ *] to [***]
[ **] Closing shared objects in statically linked binaries most of the
times leads to crashes during the dlopen(). Hard to fix.
+[ **] There are problems with signal handling when using LinuxThreads.
+
[ **] The RPC code is not 64 bit clean. This is getting slowly fixed
but expect incompatible changes on 64 bit platforms like Alpha.
+[ **] If a DSO is using implicitly libpthread and the application itself
+ does not there is a name lookup problem. E.g., the function fork()
+ will be found in the libc.so instead of libpthread since the thread
+ library is behind the libc. To correct this problem it must *not*
+ be relied on the currently still enabled handling of weak symbols
+ in the dynamic linker. Instead explicit tests for the availability
+ of the libpthread version are needed. [PR libc/2325]
+
[ *] The precision of the `sinhl' and/or `asinhl' function do not seem
to be the best.
View
7,110 ChangeLog
4,949 additions, 2,161 deletions not shown because the diff is too large. Please use a local Git client to view these changes.
View
21 ChangeLog.11
@@ -1352,11 +1352,6 @@
* sysdeps/unix/sysv/linux/mips/sys/tas.h: Add missing .mips0 at the
end of inline assembler code.
-2000-10-02 Jakub Jelinek <jakub@redhat.com>
-
- * sunrpc/svc_udp.c (svcudp_recv): Set msg_controllen to all
- remaining xp_pad space.
-
2000-10-02 Ulrich Drepper <drepper@redhat.com>
* include/features.h [__USE_FILE_OFFSET && !__REDIRECT]: Define
@@ -9285,12 +9280,6 @@
syscall.
* sysdeps/unix/sysv/linux/mips/truncate64.c: Likewise.
-2000-05-30 Jakub Jelinek <jakub@redhat.com>
-
- * resolv/res_query.c (res_nsearch): Remove unused variable
- root_on_list. If dots >= statp->ndots and as is querydomain
- fails, keep searching.
-
2000-05-30 Ulrich Drepper <drepper@redhat.com>
* sysdeps/unix/sysv/linux/alpha/oldglob.c (__old_glob): Loose __P.
@@ -9491,11 +9480,6 @@
* sysdeps/i386/fpu/bits/mathinline.h: Define expm1 inline only if
__FAST_MATH__ is defined.
-2000-05-22 Jakub Jelinek <jakub@redhat.com>
-
- * sysdeps/i386/fpu/bits/mathinline.h (__expm1_code): Avoid using ?:
- with omitted middle operand.
-
2000-05-22 Andreas Jaeger <aj@suse.de>
* math/Makefile: Add -D__FAST_MATH__ to CFLAGS-test-ifloat.c,
@@ -9736,11 +9720,6 @@
2000-05-17 Jakub Jelinek <jakub@redhat.com>
- * inet/rcmd.c (rcmd_af): If *ahost cannot be resolved, include
- unresolved hostname in the message.
-
-2000-05-17 Jakub Jelinek <jakub@redhat.com>
-
* sysdeps/arm/bits/huge_val.h (HUGE_VAL, HUGE_VALF): Add
__extension__ to hexadecimal floating constant notation.
* sysdeps/i386/bits/huge_val.h (HUGE_VAL, HUGE_VALF, HUGE_VALL):
View
12 ChangeLog.12
@@ -7729,13 +7729,6 @@
* Versions.def [ld]: Add GLIBC_2.2.1.
-2001-01-10 Jakub Jelinek <jakub@redhat.com>
-
- * malloc/memusage.c (me): If not SUID/SGID, allow creating new
- $MEMUSAGE_OUTPUT file.
- * sysdeps/generic/segfault.c (segfault.c): If not SUID/SGID, allow
- creating new $SEGFAULT_OUTPUT_NAME file.
-
2001-01-10 H.J. Lu <hjl@gnu.org>
* elf/dl-libc.c (do_dlopen): Call DL_STATIC_INIT for static binaries.
@@ -8137,11 +8130,6 @@
* sysdeps/powerpc/soft-fp/Versions: Likewise.
* sysdeps/sparc/sparc64/soft-fp/Versions: Likewise.
-2001-01-02 Jakub Jelinek <jakub@redhat.com>
-
- * locale/setlocale.c (setlocale): Don't allocate/free category name
- unnecessarily.
-
2001-01-02 Franz Sirl <Franz.Sirl-kernel@lauterbach.com>
* sysdeps/powerpc/dl-machine.c (__process_machine_rela): Fix typo.
View
5,525 ChangeLog.15
0 additions, 5,525 deletions not shown because the diff is too large. Please use a local Git client to view these changes.
View
13,478 ChangeLog.16
0 additions, 13,478 deletions not shown because the diff is too large. Please use a local Git client to view these changes.
View
6 ChangeLog.5
@@ -6911,9 +6911,9 @@ Sat Sep 30 11:47:05 1995 Roland McGrath <roland@churchy.gnu.ai.mit.edu>
Fri Sep 29 15:07:10 1995 Ulrich Drepper <drepper@ipd.info.uni-karlsruhe.de>
- * sysdeps/unix/sysv/linux/adjtime.c (__adjtime):
- Change name of field `mode' in `struct timex' to `modes'.
- Linux-1.3.28 updates this name according to RFC 1589.
+ * sysdeps/unix/sysv/linux/adjtime.c (__adjtime):
+ Change name of field `mode' in `struct timex' to `modes'.
+ Linux-1.3.28 updates this name according to RFC 1489.
Thu Sep 28 13:05:54 1995 Roland McGrath <roland@churchy.gnu.ai.mit.edu>
View
16 FAQ
@@ -48,8 +48,6 @@ please let me know.
malloc/libmemprof.so. How can I fix this?
1.20. Which tools should I use for MIPS?
1.21. Which compiler should I use for powerpc64?
-1.22. `make' fails when running rpcgen the first time,
- what is going on? How do I fix this?
2. Installation and configuration issues
@@ -575,20 +573,6 @@ For details check also my page <http://www.suse.de/~aj/glibc-mips.html>.
{SM} You want to use at least gcc 3.2 (together with the right versions
of all the other tools, of course).
-
-1.22. `make' fails when running rpcgen the first time,
- what is going on? How do I fix this?
-
-{CO} The first invocation of rpcgen is also the first use of the recently
-compiled dynamic loader. If there is any problem with the dynamic loader
-it will more than likely fail to run rpcgen properly. This could be due to
-any number of problems.
-
-The only real solution is to debug the loader and determine the problem
-yourself. Please remember that for each architecture there may be various
-patches required to get glibc HEAD into a runnable state. The best course
-of action is to determine if you have all the required patches.
-
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
View
13 FAQ.in
@@ -374,19 +374,6 @@ For details check also my page <http://www.suse.de/~aj/glibc-mips.html>.
{SM} You want to use at least gcc 3.2 (together with the right versions
of all the other tools, of course).
-?? `make' fails when running rpcgen the first time,
- what is going on? How do I fix this?
-
-{CO} The first invocation of rpcgen is also the first use of the recently
-compiled dynamic loader. If there is any problem with the dynamic loader
-it will more than likely fail to run rpcgen properly. This could be due to
-any number of problems.
-
-The only real solution is to debug the loader and determine the problem
-yourself. Please remember that for each architecture there may be various
-patches required to get glibc HEAD into a runnable state. The best course
-of action is to determine if you have all the required patches.
-
? Installation and configuration issues
?? Can I replace the libc on my Linux system with GNU libc?
View
178 INSTALL
@@ -1,5 +1,5 @@
-Installing the GNU C Library
-****************************
+Appendix A Installing the GNU C Library
+***************************************
Before you do anything else, you should read the file `FAQ' located at
the top level of the source tree. This file answers common questions
@@ -9,37 +9,46 @@ installation. It is updated more frequently than this manual.
Features can be added to GNU Libc via "add-on" bundles. These are
separate tar files, which you unpack into the top level of the source
tree. Then you give `configure' the `--enable-add-ons' option to
-activate them, and they will be compiled into the library.
+activate them, and they will be compiled into the library. As of the
+2.2 release, one important component of glibc is distributed as
+"official" add-ons: the linuxthreads add-on. Unless you are doing an
+unusual installation, you should get this.
+
+ Support for POSIX threads is maintained by someone else, so it's in a
+separate package. It is only available for GNU/Linux systems, but this
+will change in the future. Get it from the same place you got the main
+bundle; the file is `glibc-linuxthreads-VERSION.tar.gz'.
You will need recent versions of several GNU tools: definitely GCC
and GNU Make, and possibly others. *Note Tools for Compilation::,
below.
-Configuring and compiling GNU Libc
-==================================
+A.1 Configuring and compiling GNU Libc
+======================================
-GNU libc cannot be compiled in the source directory. You must build it
-in a separate build directory. For example, if you have unpacked the
-glibc sources in `/src/gnu/glibc-2.4', create a directory
+GNU libc can be compiled in the source directory, but we strongly advise
+building it in a separate build directory. For example, if you have
+unpacked the glibc sources in `/src/gnu/glibc-2.3', create a directory
`/src/gnu/glibc-build' to put the object files in. This allows
-removing the whole build directory in case an error occurs, which is
-the safest way to get a fresh start and should always be done.
+removing the whole build directory in case an error occurs, which is the
+safest way to get a fresh start and should always be done.
From your object directory, run the shell script `configure' located
at the top level of the source tree. In the scenario above, you'd type
- $ ../glibc-2.4/configure ARGS...
+ $ ../glibc-2.3/configure ARGS...
- Please note that even though you're building in a separate build
+ Please note that even if you're building in a separate build
directory, the compilation needs to modify a few files in the source
directory, especially some files in the manual subdirectory.
-`configure' takes many options, but the only one that is usually
-mandatory is `--prefix'. This option tells `configure' where you want
-glibc installed. This defaults to `/usr/local', but the normal setting
-to install as the standard system library is `--prefix=/usr' for
-GNU/Linux systems and `--prefix=' (an empty prefix) for GNU/Hurd
-systems.
+`configure' takes many options, but you can get away with knowing only
+two: `--prefix' and `--enable-add-ons'. The `--prefix' option tells
+`configure' where you want glibc installed. This defaults to
+`/usr/local'. The `--enable-add-ons' option tells `configure' to use
+all the add-on bundles it finds in the source directory. Since
+important functionality is provided in add-ons, you should always
+specify this option.
It may also be useful to set the CC and CFLAGS variables in the
environment when running `configure'. CC selects the C compiler that
@@ -71,16 +80,12 @@ will be used, and CFLAGS sets optimization options for the compiler.
ones found in `/usr/include'.
`--enable-add-ons[=LIST]'
- Specify add-on packages to include in the build. If this option is
+ Enable add-on packages in your source tree. If this option is
specified with no list, it enables all the add-on packages it
- finds in the main source directory; this is the default behavior.
- You may specify an explicit list of add-ons to use in LIST,
- separated by spaces or commas (if you use spaces, remember to
- quote them from the shell). Each add-on in LIST can be an
- absolute directory name or can be a directory name relative to the
- main source directory, or relative to the build directory (that
- is, the current working directory). For example,
- `--enable-add-ons=nptl,../glibc-libidn-2.4'.
+ finds. If you do not wish to use some add-on packages that you
+ have present in your source tree, give this option a list of the
+ add-ons that you _do_ want used, like this:
+ `--enable-add-ons=linuxthreads'
`--enable-kernel=VERSION'
This option is currently only useful on GNU/Linux systems. The
@@ -163,10 +168,11 @@ produce a lot of output, some of which may look like errors from `make'
but isn't. Look for error messages from `make' containing `***'.
Those indicate that something is seriously wrong.
- The compilation process can take a long time, depending on the
-configuration and the speed of your machine. Some complex modules may
-take a very long time to compile, as much as several minutes on slower
-machines. Do not panic if the compiler appears to hang.
+ The compilation process can take several hours. Expect at least two
+hours for the default configuration on i586 for GNU/Linux. For Hurd,
+times are much longer. Some complex modules may take a very long time
+to compile, as much as several minutes on slower machines. Do not
+panic if the compiler appears to hang.
If you want to run a parallel make, simply pass the `-j' option with
an appropriate numeric parameter to `make'. You need a recent GNU
@@ -208,8 +214,8 @@ library. You may need to set `AR' and `RANLIB' to cross-compiling
versions of `ar' and `ranlib' if the native tools are not configured to
work with object files for the target you configured for.
-Installing the C Library
-========================
+A.2 Installing the C Library
+============================
To install the library and its header files, and the Info files of the
manual, type `env LANGUAGE=C LC_ALL=C make install'. This will build
@@ -282,8 +288,8 @@ which is in `/usr/share/zoneinfo' to the file `/etc/localtime'. For
Germany, you might execute `ln -s /usr/share/zoneinfo/Europe/Berlin
/etc/localtime'.
-Recommended Tools for Compilation
-=================================
+A.3 Recommended Tools for Compilation
+=====================================
We recommend installing the following GNU tools before attempting to
build the GNU C library:
@@ -296,18 +302,11 @@ build the GNU C library:
recommend GNU `make' version 3.79. All earlier versions have
severe bugs or lack features.
- * GCC 3.4 or newer, GCC 4.1 recommended
+ * GCC 3.2 or newer
The GNU C library can only be compiled with the GNU C compiler
- family. For the 2.3 releases, GCC 3.2 or higher is required; GCC
- 3.4 is the compiler we advise to use for 2.3 versions. For the
- 2.4 release, GCC 3.4 or higher is required; as of this writing,
- GCC 4.1 is the compiler we advise to use for current versions. On
- certain machines including `powerpc64', compilers prior to GCC 4.0
- have bugs that prevent them compiling the C library code in the
- 2.4 release. On other machines, GCC 4.1 is required to build the C
- library with support for the correct `long double' type format;
- these include `powerpc' (32 bit), `s390' and `s390x'.
+ family. As of the 2.3 release, GCC 3.2 or higher is required. As
+ of this writing, GCC 3.2 is the compiler we advise to use.
You can use whatever compiler you like to compile programs that
use GNU libc, but be aware that both GCC 2.7 and 2.8 have bugs in
@@ -317,7 +316,7 @@ build the GNU C library:
Check the FAQ for any special compiler issues on particular
platforms.
- * GNU `binutils' 2.15 or later
+ * GNU `binutils' 2.13 or later
You must use GNU `binutils' (as and ld) to build the GNU C library.
No other assembler or linker has the necessary functionality at the
@@ -331,10 +330,11 @@ build the GNU C library:
installation mechanism for the info files is not present or works
differently.
- * GNU `awk' 3.0, or higher
+ * GNU `awk' 3.0, or some other POSIX awk
- `Awk' is used in several places to generate files. `gawk' 3.0 is
- known to work.
+ `Awk' is used in several places to generate files. The scripts
+ should work with any POSIX-compliant `awk' implementation; `gawk'
+ 3.0 and `mawk' 1.3 are known to work.
* Perl 5
@@ -362,8 +362,80 @@ and if you change any of the message translation files you will need
You may also need these packages if you upgrade your source tree using
patches, although we try to avoid this.
-Specific advice for GNU/Linux systems
-=====================================
+A.4 Supported Configurations
+============================
+
+The GNU C Library currently supports configurations that match the
+following patterns:
+
+ alpha*-*-linux
+ arm-*-linux
+ cris-*-linux
+ hppa-*-linux
+ iX86-*-gnu
+ iX86-*-linux
+ ia64-*-linux
+ m68k-*-linux
+ mips*-*-linux
+ powerpc-*-linux
+ s390-*-linux
+ s390x-*-linux
+ sparc-*-linux
+ sparc64-*-linux
+ x86_64-*-linux
+
+ Former releases of this library (version 2.1 and/or 2.0) used to run
+on the following configurations:
+
+ arm-*-linuxaout
+ arm-*-none
+
+ Very early releases (version 1.09.1 and perhaps earlier versions)
+used to run on the following configurations:
+
+ alpha-dec-osf1
+ alpha-*-linuxecoff
+ iX86-*-bsd4.3
+ iX86-*-isc2.2
+ iX86-*-isc3.N
+ iX86-*-sco3.2
+ iX86-*-sco3.2v4
+ iX86-*-sysv
+ iX86-*-sysv4
+ iX86-force_cpu386-none
+ iX86-sequent-bsd
+ i960-nindy960-none
+ m68k-hp-bsd4.3
+ m68k-mvme135-none
+ m68k-mvme136-none
+ m68k-sony-newsos3
+ m68k-sony-newsos4
+ m68k-sun-sunos4.N
+ mips-dec-ultrix4.N
+ mips-sgi-irix4.N
+ sparc-sun-solaris2.N
+ sparc-sun-sunos4.N
+
+ Since no one has volunteered to test and fix these configurations,
+they are not supported at the moment. They probably don't compile;
+they definitely don't work anymore. Porting the library is not hard.
+If you are interested in doing a port, please contact the glibc
+maintainers. Start at `http://www.gnu.org/software/libc/' and read the
+references there on how to go about getting involved and contacting the
+developers.
+
+ Valid cases of `iX86' include `i386', `i486', `i586', and `i686'.
+All of those configurations produce a library that can run on this
+processor and newer processors. The GCC compiler by default generates
+code that's optimized for the machine it's configured for and will use
+the instructions available on that machine. For example if your GCC is
+configured for `i686', gcc will optimize for `i686' and might issue
+some `i686' specific instructions. To generate code for other models,
+you have to configure for that model and give GCC the appropriate
+`-march=' and `-mcpu=' compiler switches via CFLAGS.
+
+A.5 Specific advice for GNU/Linux systems
+=========================================
If you are installing GNU libc on a GNU/Linux system, you need to have
the header files from a 2.2 or newer kernel around for reference. For
@@ -417,8 +489,8 @@ kernel-side thread support. `nscd' happens to hit these bugs
particularly hard, but you might have problems with any threaded
program.
-Reporting Bugs
-==============
+A.6 Reporting Bugs
+==================
There are probably bugs in the GNU C library. There are certainly
errors and omissions in this manual. If you report them, they will get
View
1,508 INTERFACE
1,508 additions, 0 deletions not shown because the diff is too large. Please use a local Git client to view these changes.
View
189 MakeTAGS
@@ -0,0 +1,189 @@
+# Make the TAGS files.
+# Copyright (C) 1992,1994,1995,1996,1998,2002,2003
+# Free Software Foundation, Inc.
+# This file is part of the GNU C Library.
+
+# The GNU C Library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+
+# The GNU C Library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+
+# You should have received a copy of the GNU Lesser General Public
+# License along with the GNU C Library; if not, write to the Free
+# Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+# 02111-1307 USA.
+
+# Make this the default goal.
+TAGS:
+
+ifdef subdir
+.. := ../
+endif
+
+include $(..)Makeconfig
+
+# Pass these to $(MAKE) calls to avoid source generation and such.
+sub-make-vars = generating=t no_deps=t
+
+ifndef tags_sources
+ifeq ($(subdir),ctype)
+# In most cases, we want the C source files to come before
+# the header files so tags for optimizing #define's in the
+# headers won't be put in the tags files, but for ctype,
+# the functions are just backup for the #define's in the header.
+tags_sources = $(all-headers) $(all-sources) $(all-dist)
+else # Not ctype.
+tags_sources = $(all-sources) $(all-headers) $(all-dist)
+endif # ctype
+endif # No tags_sources
+
+sysdep-dirs := $(full_config_sysdirs)
+
+ifndef sysdep_dirs
+# Find all sysdep directories.
+sysdep_dirs := $(shell find $(..)sysdeps \
+ $(wildcard \
+ $(patsubst %,$(..)%/sysdeps,$(add-ons))) \
+ -type d ! -name RCS ! -name CVS \
+ ! -name SCCS -print)
+endif
+
+# Find all sysdep dirs there are, but putting the ones
+# we are configured to use first and preserving their order.
+all-dirs := $(subdir-dirs) \
+ $(objdir) \
+ $(sysdep-dirs) \
+ $(source_dirs) \
+ $(filter-out $(sysdep-dirs),$(sysdep_dirs))
+
+# Find all the subdirs there are, but putting the ones
+# we are configured to use first and preserving their order.
+ifndef subdir
+subdirs := $(subdirs) \
+ $(filter-out $(subdirs),\
+ $(sort \
+ $(shell sed -e 's/\#.*$$//' \
+ $(wildcard $(addsuffix /Subdirs,\
+ $(all-dirs)))\
+ /dev/null)))
+all-dist = $(foreach Dist,$(wildcard $(all-dirs:%=%/Dist)),\
+ $(addprefix $(Dist:%/Dist=%)/,\
+ $(filter %.c %.h %.S %.s,\
+ $(shell cat $(Dist)))))
+tags_sources = $(all-sources) $(all-headers) $(all-dist)
+else
+all-dist = $(distribute)
+endif
+
+# sources and headers must be simply expanded variables
+sources := $(sources) $(filter %.c %.s %.S,$(all-dist))
+headers := $(headers) $(filter %.h,$(all-dist))
+all-dist := $(filter-out %.h %.c %.s %.S,$(all-dist))
+
+sources += $(foreach lib,$(extra-libs),$($(lib)-routines:=.c))
+
+# All different versions of $(sources), preserving the configured sysdep
+# directory order.
+# Files that are found in the current directory cannot occur in
+# sysdep directories, so don't bother searching them.
+sysdep-sources := $(filter-out $(wildcard $(sources)), $(sources))
+all-sources = $(wildcard $(sort $(sources) $(sources:.c=.S) $(sources:.c=.s) \
+ $(others:=.c) $(tests:=.c) $(xtests:=.c) \
+ $(test-srcs:=.c))) \
+ $(foreach dir,$(all-dirs),\
+ $(wildcard \
+ $(addprefix $(dir)/,\
+ $(sort $(sysdep-sources) \
+ $(sysdep-sources:.c=.S) \
+ $(sysdep-sources:.c=.s)))))
+
+sysdep-headers := $(filter-out $(wildcard $(headers)), $(headers))
+all-headers = $(wildcard $(headers)) \
+ $(foreach dir,$(all-dirs),\
+ $(wildcard $(addprefix $(dir)/,$(sysdep-headers))))
+
+tags_sources := $(strip $(tags_sources))
+
+TAGS: $(tags_sources)
+ifdef subdir
+ifdef tags_sources
+ $(ETAGS) -o $@ $^
+else
+# No sources. Create a dummy file.
+ touch $@
+endif # tags_sources
+else # parent
+TAGS: subdir_TAGS
+# Note that this uses the -i switch, and thus requires v19 etags.
+ $(ETAGS) -o $@ \
+ $(subdirs:%=-i %/TAGS) \
+ $(filter-out subdir_TAGS,$^)
+
+.PHONY: subdir_TAGS $(subdirs:%=%/TAGS)
+subdir_TAGS: $(subdirs:%=%/TAGS)
+$(subdirs:%=%/TAGS):
+ $(MAKE) -C $(@D) $(sub-make-vars) $(@F)
+
+endif # subdir
+
+ifndef XGETTEXT
+XGETTEXT = xgettext
+endif
+
+P = $(..)po
+
+ifdef subdir
+domain = $(subdir)
+else
+domain = libc-top
+endif
+
+define extract
+@rm -f $@.new
+$(XGETTEXT) --keyword=_ --keyword=N_ --add-comments=TRANS --sort-by-file \
+ --omit-header -E -n -d - $(XGETTEXTFLAGS-$(@F)) > $@.new $^
+mv -f $@.new $@
+endef
+
+text-srcs := $(filter %.c %.h %.cc %.C,$(tags_sources))
+$P/$(domain).pot: $(text-srcs)
+ifeq (,$(text-srcs))
+ cp /dev/null $@
+else
+ $(extract)
+endif
+
+all-pot = $P/libc-top.pot $P/subdirs.pot
+
+ifndef subdir
+# Collect all the subdir messages, massaging the file names in comments
+# to include the subdir name.
+$P/subdirs.pot: $(subdirs:%=$P/%.pot)
+ @rm -f $@.new
+ (for d in $(subdirs); \
+ do sed "/^#:/s% % $$d/%g" $P/$$d.pot; done) > $@.new
+ mv -f $@.new $@
+
+# Combine all the messages into the final sorted template translation file.
+# The following code requires GNU date.
+$P/libc.pot: $(all-pot)
+ @rm -f $@.new
+ set `date -R`; disp="$$6"; \
+ sed -e 's/VERSION/$(version)/' \
+ -e "s/DATE/`date +'%Y-%m-%d %H:%M'$$disp`/" \
+ po/header.pot > $@.new
+ $(XGETTEXT) -d - --omit-header -E -n $^ >> $@.new
+ mv -f $@.new $@
+ifeq ($(with-cvs),yes)
+ test ! -d CVS || cvs $(CVSOPTS) ci -m'Regenerated from source files' $@
+endif
+
+$(subdirs:%=$P/%.pot): $P/%.pot: FORCE
+ $(MAKE) -C $* $(sub-make-vars) ../$@
+FORCE:
+endif
View
234 Makeconfig
@@ -1,4 +1,4 @@
-# Copyright (C) 1991-2003,2004,2005,2006 Free Software Foundation, Inc.
+# Copyright (C) 1991-2003, 2004 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
@@ -99,21 +99,7 @@ binfmt-subdir = aout
endif
# Complete path to sysdep dirs.
-# `configure' writes a definition of `config-sysdirs' in `config.make'.
-sysdirs := $(foreach D,$(config-sysdirs),$(firstword $(filter /%,$D) $(..)$D))
-
-# Add-ons that contribute sysdeps trees get added to the include list
-# after sysdeps/generic. This makes #include <sysdeps/...> work right
-# to find specific add-on files without assuming the add-on directory name.
-# It also means that headers can go into an add-on's base directory
-# instead of the add-on needing a sysdeps/generic of its own.
-sysdeps-srcdirs := $(foreach add-on,$(sysdeps-add-ons),\
- $(firstword $(filter /%,$(add-on)) \
- $(..)$(add-on)))
-+sysdep_dirs = $(sysdirs) $(sysdeps-srcdirs)
-ifdef objdir
-+sysdep_dirs := $(objdir) $(+sysdep_dirs)
-endif
+export full_config_sysdirs := $(addprefix $(..),$(config-sysdirs))
# Run config.status to update config.make and config.h. We don't show the
# dependence of config.h to Make, because it is only touched when it
@@ -127,16 +113,16 @@ $(common-objpfx)config.make: $(common-objpfx)config.status \
# Find all the add-on and sysdeps configure fragments, to make sure we
# re-run configure when any of them changes.
$(common-objpfx)config.status: $(..)version.h $(..)configure \
- $(foreach dir,$(sysdirs),\
- $(wildcard $(dir)/Implies) \
+ $(foreach dir,$(full_config_sysdirs),\
+ $(wildcard \
+ $(dir)/Implies) \
$(patsubst %.in,%,\
$(firstword $(wildcard \
$(addprefix $(dir)/,configure configure.in))))) \
$(patsubst %.in,%,\
- $(foreach add-on,$(add-ons),\
+ $(foreach dir,$(add-ons),\
$(firstword $(wildcard \
- $(addprefix $(firstword $(filter /%,$(add-on)) $(..)$(add-on))/,\
- configure configure.in)))))
+ $(addprefix $(..)$(dir)/,configure configure.in)))))
@cd $(@D); if test -f $(@F); then exec $(SHELL) $(@F) --recheck; else \
echo The GNU C library has not been configured. >&2; \
echo Run \`configure\' to configure it before building. >&2; \
@@ -413,20 +399,11 @@ LDFLAGS.so += $(relro-LDFLAGS)
LDFLAGS-rtld += $(relro-LDFLAGS)
endif
-ifeq (yes,$(have-hash-style))
-# For the time being we unconditionally use 'both'. At some time we
-# should declare statically linked code as 'out of luck' and compile
-# with --hash-style=gnu only.
-hashstyle-LDFLAGS = -Wl,--hash-style=both
-LDFLAGS.so += $(hashstyle-LDFLAGS)
-LDFLAGS-rtld += $(hashstyle-LDFLAGS)
-endif
-
# Command for linking programs with the C library.
ifndef +link
+link = $(CC) -nostdlib -nostartfiles -o $@ \
$(sysdep-LDFLAGS) $(config-LDFLAGS) $(LDFLAGS) $(LDFLAGS-$(@F)) \
- $(combreloc-LDFLAGS) $(relro-LDFLAGS) $(hashstyle-LDFLAGS) \
+ $(combreloc-LDFLAGS) $(relro-LDFLAGS) \
$(addprefix $(csu-objpfx),$(start-installed-name)) \
$(+preinit) $(+prector) \
$(filter-out $(addprefix $(csu-objpfx),start.o \
@@ -438,7 +415,7 @@ endif
# Command for statically linking programs with the C library.
ifndef +link-static
+link-static = $(CC) -nostdlib -nostartfiles -static -o $@ \
- $(sysdep-LDFLAGS) $(LDFLAGS) $(LDFLAGS-$(@F)) \
+ $(sysdep-LDFLAGS) $(LDFLAGS) \
$(addprefix $(csu-objpfx),$(static-start-installed-name)) \
$(+preinit) $(+prector) \
$(filter-out $(addprefix $(csu-objpfx),start.o \
@@ -503,21 +480,32 @@ default-rpath = $(libdir)
endif
ifndef link-extra-libs
-link-extra-libs = $(LDLIBS-$(@F))
-link-extra-libs-static = $(link-extra-libs)
-link-extra-libs-bounded = $(link-extra-libs)
+ifeq (yes,$(build-shared))
+ifneq ($(common-objpfx),$(objpfx))
+link-extra-libs = $(foreach lib,$(LDLIBS-$(@F)),\
+ $(wildcard $(common-objpfx)$(lib).so$($(notdir $(lib)).so-version) \
+ $(objpfx)$(lib).so$($(notdir $(lib)).so-version)))
+else
+link-extra-libs = $(foreach lib,$(LDLIBS-$(@F)),$(common-objpfx)$(lib).so$($(notdir $(lib)).so-version))
+endif
+else
+link-extra-libs = $(foreach lib,$(LDLIBS-$(@F)),$(common-objpfx)$(lib).a)
+endif
endif
# The static libraries.
ifeq (yes,$(build-static))
link-libc-static = $(common-objpfx)libc.a $(static-gnulib) $(common-objpfx)libc.a
+link-extra-libs-static = $(foreach lib,$(LDLIBS-$(@F)),$(common-objpfx)$(lib).a)
else
ifeq (yes,$(build-shared))
# We can try to link the programs with lib*_pic.a...
link-libc-static = $(static-gnulib) $(common-objpfx)libc_pic.a
+link-extra-libs-static = $(link-extra-libs)
endif
endif
link-libc-bounded = $(common-objpfx)libc_b.a $(gnulib) $(common-objpfx)libc_b.a
+link-extra-libs-bounded = $(foreach lib,$(LDLIBS-$(@F:%-bp=%)),$(common-objpfx)$(lib)_b.a)
ifndef gnulib
ifneq ($(have-cc-with-libunwind),yes)
@@ -575,15 +563,10 @@ endif
# Extra flags to pass to GCC.
ifeq ($(all-warnings),yes)
-+gccwarn := -Wall -Wwrite-strings -Winline -Wcast-qual -Wbad-function-cast -Wmissing-noreturn -Wmissing-prototypes -Wmissing-declarations -Wcomment -Wcomments -Wtrigraphs -Wsign-compare -Wfloat-equal -Wmultichar
++gccwarn := -Wall -Wwrite-strings -Winline -Wstrict-prototypes -Wcast-qual -Wbad-function-cast -Wmissing-noreturn -Wmissing-prototypes -Wmissing-declarations -Wcomment -Wcomments -Wtrigraphs -Wsign-compare -Wfloat-equal -Wmultichar
else
-+gccwarn := -Wall -Wwrite-strings -Winline
++gccwarn := -Wall -Wwrite-strings -Winline -Wstrict-prototypes
endif
-+gccwarn-c = -Wstrict-prototypes
-
-# We do not depend on the address of constants in different files to be
-# actually different, so allow the compiler to merge them all.
-+merge-constants = -fmerge-all-constants
# This is the program that generates makefile dependencies from C source files.
# The -MP flag tells GCC >= 3.2 (which we now require) to produce dummy
@@ -595,11 +578,6 @@ endif
# The program that makes Emacs-style TAGS files.
ETAGS := etags
-# The `xgettext' program for producing .pot files from sources.
-ifndef XGETTEXT
-XGETTEXT = xgettext
-endif
-
# The `m4' macro processor; this is used by sysdeps/sparc/Makefile (and
# perhaps others) to preprocess assembly code in some cases.
M4 = m4
@@ -644,21 +622,21 @@ ifeq "$(strip $(+cflags))" ""
+cflags := $(default_cflags)
endif # $(+cflags) == ""
-+cflags += $(addprefix -mcpu=,$(with-cpu)) $(+gccwarn) $(+merge-constants)
++cflags := $(+cflags) $(+gccwarn)
+gcc-nowarn := -w
# Don't duplicate options if we inherited variables from the parent.
+cflags := $(sort $(+cflags))
-# These are flags given to the C compiler to tell it to look for
-# include files (including ones given in angle brackets) in the parent
-# library source directory, in the include directory, and in the
-# current directory.
-+sysdep-includes = $(addprefix -I,$(+sysdep_dirs))
-+includes = -I$(..)include $(if $(subdir),$(objpfx:%/=-I%)) \
- $(+sysdep-includes) $(includes) \
- $(patsubst %/,-I%,$(..)) $(libio-include) -I. $(sysincludes)
+# These are flags given to the C compiler to tell it to look for include
+# files (including ones given in angle brackets) in the current directory,
+# in the parent library source directory and in the include directory.
+# `+sysdep-includes' will be defined by Makerules.
++includes = -I$(..)include -I. \
+ $(patsubst %/,-I%,$(objpfx)) $(patsubst %/,-I%,$(..)) \
+ $(libio-include) $(includes) \
+ $(+sysdep-includes) $(sysincludes)
# Since libio has several internal header files, we use a -I instead
# of many little headers in the include directory.
@@ -675,12 +653,8 @@ CPPFLAGS = $($(subdir)-CPPFLAGS) $(+includes) $(defines) \
$(libof-$(<F)) $(libof-$(@F)),$(CPPFLAGS-$(lib))) \
$(CPPFLAGS-$(<F)) $(CPPFLAGS-$(@F)) $(CPPFLAGS-$(basename $(@F)))
override CFLAGS = -std=gnu99 \
- $(filter-out %frame-pointer,$(+cflags)) $(+gccwarn-c) \
- $(sysdep-CFLAGS) $(CFLAGS-$(suffix $@)) $(CFLAGS-$(<F)) \
- $(CFLAGS-$(@F))
-override CXXFLAGS = $(c++-sysincludes) \
- $(filter-out %frame-pointer,$(+cflags)) $(sysdep-CFLAGS) \
- $(CFLAGS-$(suffix $@)) $(CFLAGS-$(<F)) $(CFLAGS-$(@F))
+ $(filter-out %frame-pointer,$(+cflags)) $(sysdep-CFLAGS) \
+ $(CFLAGS-$(suffix $@)) $(CFLAGS-$(<F)) $(CFLAGS-$(@F))
# If everything is compiled with -fPIC (implicitly) we must tell this by
# defining the PIC symbol.
@@ -769,16 +743,20 @@ endif
endif
ASFLAGS += $(ASFLAGS-config)
++gnu-stabs = $(shell echo>&2 '*** BARF ON ME')
+
ifndef BUILD_CC
BUILD_CC = $(CC)
endif
move-if-change = $(SHELL) $(..)scripts/move-if-change
+-include $(common-objpfx)sysd-dirs
+
+ifeq ($(sysd-dirs-done),t)
-include $(common-objpfx)sysd-sorted
subdirs = $(sorted-subdirs)
-subdir-srcdirs = $(foreach dir,$(subdirs),\
- $(firstword $($(dir)-srcdir) $(..)$(dir)))
+endif
ifeq (yes, $(build-shared))
@@ -792,7 +770,8 @@ ifeq (yes, $(build-shared))
# (but no commands).
%.v.i: $(common-objpfx)config.h
sed '/^[ ]*#/d;s/^[ ]*%/#/' $(filter-out FORCE %.h,$^) \
- | $(CC) -E -undef $(CPPFLAGS) -x assembler-with-cpp - \
+ | $(CC) -E -undef $(CPPFLAGS) \
+ -DASSEMBLER -x assembler-with-cpp - \
> $@T
mv -f $@T $@
%.v: %.v.i
@@ -808,8 +787,9 @@ ifndef avoid-generated
# This lets add-ons give more-specific matches that override defaults
# in the top-level file.
$(common-objpfx)shlib-versions.v.i: \
- $(wildcard $(+sysdep_dirs:=/shlib-versions) \
- $(subdir-srcdirs:=/shlib-versions)) \
+ $(wildcard $(patsubst %, $(..)%/shlib-versions,$(add-ons) \
+ $(config-sysdirs) \
+ $(subdirs))) \
$(..)shlib-versions
soversions-default-setname = $(patsubst %, %,\
@@ -818,29 +798,18 @@ soversions-default-setname = $(patsubst %, %,\
$(common-objpfx)soversions.i: $(..)scripts/soversions.awk \
$(common-objpfx)shlib-versions.v
$(AWK) -v default_setname='$(soversions-default-setname)' \
- -v cpu='$(config-machine)' \
- -v vendor='$(config-vendor)' \
- -v os='$(config-os)' \
+ -v config='$(config-machine)-$(config-vendor)-$(config-os)' \
-f $^ > $@T
mv -f $@T $@
-$(common-objpfx)soversions.mk: $(common-objpfx)soversions.i $(..)Makeconfig
- (seen_DEFAULT=0; seen_WORDSIZE32=0; seen_WORDSIZE64=0; \
- while read which lib number setname; do \
- eval seen_$$which=1; \
- test x"$$which" = xDEFAULT || continue; \
+$(common-objpfx)soversions.mk: $(common-objpfx)soversions.i
+ (while read lib number setname; do \
case $$number in \
[0-9]*) echo "$$lib.so-version=.$$number"; \
echo "all-sonames+=$$lib=$$lib.so\$$($$lib.so-version)";;\
*) echo "$$lib.so-version=$$number"; \
echo "all-sonames+=$$lib=\$$($$lib.so-version)";;\
esac; \
done; \
- case "$$seen_DEFAULT$$seen_WORDSIZE32$$seen_WORDSIZE64" in \
- 100) echo biarch = no;; \
- 101) echo biarch = 32;; \
- ?1?) echo biarch = 64;; \
- *) echo >&2 BUG; exit 2;; \
- esac; \
echo soversions.mk-done = t;) < $< > $@T; exit 0
mv -f $@T $@
endif
@@ -854,11 +823,31 @@ postclean-generated += soversions.mk soversions.i \
before-compile += $(common-objpfx)gnu/lib-names.h
ifeq ($(soversions.mk-done),t)
$(common-objpfx)gnu/lib-names.h: $(common-objpfx)gnu/lib-names.stmp; @:
-$(common-objpfx)gnu/lib-names.stmp: $(..)scripts/lib-names.awk \
- $(common-objpfx)soversions.i
+$(common-objpfx)gnu/lib-names.stmp: $(common-objpfx)soversions.mk
$(make-target-directory)
@rm -f ${@:stmp=T} $@
- $(AWK) -f $^ > ${@:stmp=T}
+ (echo '/* This file is automatically generated.';\
+ echo ' It defines macros to allow user program to find the shared';\
+ echo ' library files which come as part of GNU libc. */';\
+ echo '#ifndef __GNU_LIB_NAMES_H'; \
+ echo '#define __GNU_LIB_NAMES_H 1'; \
+ echo; \
+ (libs='$(all-sonames)';\
+ for l in $$libs; do \
+ name=`echo $$l | sed 's/.*=//'`; \
+ upname=`echo $$l | sed 's/=.*//' | \
+ tr 'abcdefghijklmnopqrstuvwxyz-' \
+ 'ABCDEFGHIJKLMNOPQRSTUVWXYZ_'`; \
+ upname2=`echo $$name | sed 's/[.]so.*//' | \
+ tr 'abcdefghijklmnopqrstuvwxyz-' \
+ 'ABCDEFGHIJKLMNOPQRSTUVWXYZ_'`; \
+ echo "#define $${upname}_SO \"$$name\""; \
+ if test $$upname != $$upname2; then \
+ echo "#define $${upname2}_SO \"$$name\""; \
+ fi; \
+ done;) | sort; \
+ echo; \
+ echo '#endif /* gnu/lib-names.h */';) > ${@:stmp=T}
$(move-if-change) ${@:stmp=T} ${@:stmp=h}
touch $@
endif
@@ -909,39 +898,80 @@ endif
# These are the subdirectories containing the library source. The order
# is more or less arbitrary. The sorting step will take care of the
-# dependencies.
+# dependencies. Only the $(binfmt-subdir) should always be kept at the
+# end of the list.
all-subdirs = csu assert ctype locale intl catgets math setjmp signal \
- stdlib stdio-common libio malloc string wcsmbs time dirent \
+ stdlib stdio-common libio malloc string wcsmbs time dirent \
grp pwd posix io termios resource misc socket sysvipc gmon \
gnulib iconv iconvdata wctype manual shadow po argp \
- crypt nss localedata timezone rt conform debug \
- $(add-on-subdirs) $(dlfcn) $(binfmt-subdir)
+ crypt $(add-ons) nss localedata timezone rt conform debug \
+ $(sysdep-subdirs) $(dlfcn) $(binfmt-subdir)
+all-subdirs := $(filter-out $(sysdep-inhibit-subdirs),$(all-subdirs))
+
+# The mach and hurd subdirectories have many generated header files which
+# much of the rest of the library depends on, so it is best to build them
+# first (and mach before hurd, at that). The before-compile additions in
+# sysdeps/{mach,hurd}/Makefile should make it reliably work for these files
+# not to exist when making in other directories, but it will be slower that
+# way with more somewhat expensive `make' invocations.
+subdirs := $(filter mach,$(subdirs)) $(filter hurd,$(subdirs)) \
+ $(filter-out mach hurd,$(subdirs))
ifndef avoid-generated
-all-Depend-files := $(wildcard $(foreach dir,$(all-subdirs),\
- $(firstword $($(dir)-srcdir) \
- $(..)$(dir))/Depend))
-$(common-objpfx)sysd-sorted: $(..)scripts/gen-sorted.awk \
- $(common-objpfx)config.make $(..)Makeconfig \
- $(wildcard $(sysdirs:=/Subdirs)) \
- $(all-Depend-files)
- $(AWK) -f $< \
- -v subdirs='$(all-subdirs)' \
- -v srcpfx='$(..)' \
- $(filter %/Subdirs %/Depend,$^) > $@-tmp
+all-Subdirs-files = $(wildcard $(config-sysdirs:%=$(..)%/Subdirs))
+$(common-objpfx)sysd-dirs: $(common-objpfx)config.make $(all-Subdirs-files)
+ $(AWK) 'BEGIN { subdirs = ""; inhibit = "" }; \
+ /^#/ { next }; \
+ /^[^-]/ { subdirs = subdirs " " $$0 }; \
+ /^-/ { inhibit = inhibit " " substr($$0, 2) }; \
+ END { printf "sysdep-subdirs =%s\n", subdirs; \
+ printf "sysdep-inhibit-subdirs =%s\n", inhibit; \
+ print "sysd-dirs-done = t" }' \
+ $(patsubst $<,/dev/null,$^) > $@-tmp
+ mv -f $@-tmp $@
+
+all-Depend-files = $(wildcard $(..)*/Depend)
+$(common-objpfx)sysd-sorted: $(..)scripts/gen-sorted.awk $(all-Depend-files) \
+ $(common-objpfx)sysd-dirs $(..)Makeconfig
+ { { dirs='$(patsubst $(..)%/Depend,%,$(filter %/Depend,$^))'; \
+ for d in $$dirs; do \
+ while read on; do \
+ echo "depend $$d $$on"; \
+ done < $(..)$$d/Depend; \
+ done; \
+ for f in $(all-subdirs); do \
+ echo $$f; \
+ done; \
+ } | $(AWK) -f $< && \
+ echo sysd-sorted-done = t; \
+ } > $@-tmp
mv -f $@-tmp $@
-$(all-Depend-files): ;
endif
# Let sysdeps/ subdirs contain a Makeconfig fragment for us to include here.
-sysdep-makeconfigs := $(wildcard $(+sysdep_dirs:=/Makeconfig))
+sysdep-makeconfigs := $(wildcard $(patsubst %,$(..)%/Makeconfig,\
+ $(config-sysdirs) $(add-ons)))
+
ifneq (,$(sysdep-makeconfigs))
-include $(sysdep-makeconfigs)
+Makeconfig-doing-sysdep := $(sysdep-makeconfigs)
+# Before each one, include ourselves again to do the bit below that
+# will set `Makeconfig-add-on' in an add-on's Makeconfig fragment.
+include $(foreach M,$(sysdep-makeconfigs),$(..)Makeconfig $M)
endif
endif # Makeconfig not yet included
+# The whole body above didn't run when we are included as a subroutine
+# of ourselves in the sysdep-makeconfigs include line. This bit runs.
+ifneq (,$(Makeconfig-doing-sysdep))
+sysdep-Makeconfig := $(firstword $(Makeconfig-doing-sysdep))
+Makeconfig-doing-sysdep := $(filter-out $(sysdep-Makeconfig),\
+ $(Makeconfig-doing-sysdep))
+Makeconfig-add-on := $(filter $(add-ons),$(patsubst $(..)%/Makeconfig,%,\
+ $(sysdep-Makeconfig)))
+endif
+
# Local Variables:
# mode: makefile
# End:
View
120 Makefile
@@ -1,4 +1,4 @@
-# Copyright (C) 1991-2002,2003,2004,2005,2006 Free Software Foundation, Inc.
+# Copyright (C) 1991-2002, 2003, 2004 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
@@ -50,7 +50,6 @@ endef
configure: configure.in aclocal.m4; $(autoconf-it)
%/configure: %/configure.in aclocal.m4; $(autoconf-it)
-%/preconfigure: %/preconfigure.in aclocal.m4; $(autoconf-it)
endif # $(AUTOCONF) = no
@@ -65,7 +64,7 @@ endif # $(AUTOCONF) = no
subdir_update-abi subdir_check-abi \
subdir_echo-headers \
subdir_install \
- subdir_objs subdir_stubs subdir_testclean \
+ subdir_testclean \
$(addprefix install-, no-libc.a bin lib data headers others)
headers := limits.h values.h features.h gnu-versions.h bits/libc-lock.h \
@@ -158,26 +157,13 @@ others: $(common-objpfx)testrun.sh
subdir-stubs := $(foreach dir,$(subdirs),$(common-objpfx)$(dir)/stubs)
-ifeq ($(biarch),no)
-installed-stubs = $(inst_includedir)/gnu/stubs.h
-else
-installed-stubs = $(inst_includedir)/gnu/stubs-$(biarch).h
-
-$(inst_includedir)/gnu/stubs.h: include/stubs-biarch.h $(+force)
- $(make-target-directory)
- $(INSTALL_DATA) $< $@
-
-install-others-nosubdir: $(installed-stubs)
-endif
-
-
# Since stubs.h is never needed when building the library, we simplify the
# hairy installation process by producing it in place only as the last part
# of the top-level `make install'. It depends on subdir_install, which
# iterates over all the subdirs; subdir_install in each subdir depends on
# the subdir's stubs file. Having more direct dependencies would result in
# extra iterations over the list for subdirs and many recursive makes.
-$(installed-stubs): include/stubs-prologue.h subdir_install
+$(inst_includedir)/gnu/stubs.h: include/stubs-prologue.h subdir_install
$(make-target-directory)
@rm -f $(objpfx)stubs.h
(sed '/^@/d' $<; LC_ALL=C sort $(subdir-stubs)) > $(objpfx)stubs.h
@@ -203,13 +189,7 @@ all-subdirs-targets := $(foreach dir,$(subdirs),\
# The action for each of those is to cd into the directory and make the
# target there.
$(all-subdirs-targets):
- $(MAKE) $(PARALLELMFLAGS) $(subdir-target-args) $(@F)
-
-define subdir-target-args
-subdir=$(@D)$(if $($(@D)-srcdir),\
--C $($(@D)-srcdir) ..=`pwd`/,\
--C $(@D) ..=../)
-endef
+ $(MAKE) $(PARALLELMFLAGS) -C $(@D) $(@F)
.PHONY: $(+subdir_targets) $(all-subdirs-targets)
@@ -243,74 +223,21 @@ mostlyclean: parent-mostlyclean
tests-clean:
@$(MAKE) subdir_testclean no_deps=t
-tests: $(objpfx)c++-types-check.out $(objpfx)check-local-headers.out
+tests: $(objpfx)c++-types-check.out
ifneq ($(CXX),no)
check-data := $(firstword $(wildcard \
$(foreach M,$(config-machine) $(base-machine),\
scripts/data/c++-types-$M-$(config-os).data)))
ifneq (,$(check-data))
-$(objpfx)c++-types-check.out: $(check-data) scripts/check-c++-types.sh
- scripts/check-c++-types.sh $< $(CXX) $(filter-out -std=gnu99 -Wstrict-prototypes,$(CFLAGS)) $(CPPFLAGS) > $@
+$(objpfx)c++-types-check.out: $(check-data)
+ scripts/check-c++-types.sh $^ $(CXX) $(filter-out -std=gnu99 -Wstrict-prototypes,$(CFLAGS)) $(CPPFLAGS) > $@
else
$(objpfx)c++-types-check.out:
@echo 'WARNING C++ tests not run; create a c++-types-XXX file'
@echo "not run" > $@
endif
endif
-$(objpfx)check-local-headers.out: scripts/check-local-headers.sh
- scripts/check-local-headers.sh "$(includedir)" "$(objpfx)" > $@
-
-ifneq ($(PERL),no)
-installed-headers = argp/argp.h assert/assert.h catgets/nl_types.h \
- crypt/crypt.h ctype/ctype.h debug/execinfo.h \
- dirent/dirent.h dlfcn/dlfcn.h elf/elf.h elf/link.h \
- gmon/sys/gmon.h gmon/sys/gmon_out.h gmon/sys/profil.h \
- grp/grp.h iconv/iconv.h iconv/gconv.h \
- $(wildcard inet/netinet/*.h) \
- $(wildcard inet/arpa/*.h inet/protocols/*.h) \
- inet/aliases.h inet/ifaddrs.h inet/netinet/ip6.h \
- inet/netinet/icmp6.h intl/libintl.h io/sys/stat.h \
- io/sys/statfs.h io/sys/vfs.h io/sys/statvfs.h \
- io/fcntl.h io/sys/fcntl.h io/poll.h io/sys/poll.h \
- io/utime.h io/ftw.h io/fts.h io/sys/sendfile.h \
- libio/stdio.h libio/libio.h locale/locale.h \
- locale/langinfo.h locale/xlocale.h login/utmp.h \
- login/lastlog.h login/pty.h malloc/malloc.h \
- malloc/obstack.h malloc/mcheck.h math/math.h \
- math/complex.h math/fenv.h math/tgmath.h misc/sys/uio.h \
- $(wildcard nis/rpcsvc/*.h) nptl_db/thread_db.h \
- nptl/sysdeps/pthread/pthread.h nptl/semaphore.h \
- nss/nss.h posix/sys/utsname.h posix/sys/times.h \
- posix/sys/wait.h posix/sys/types.h posix/unistd.h \
- posix/glob.h posix/regex.h posix/wordexp.h posix/fnmatch.h\
- posix/getopt.h posix/tar.h posix/sys/unistd.h \
- posix/sched.h posix/re_comp.h posix/wait.h \
- posix/cpio.h posix/spawn.h pwd/pwd.h resolv/resolv.h \
- resolv/netdb.h $(wildcard resolv/arpa/*.h) \
- resource/sys/resource.h resource/sys/vlimit.h \
- resource/sys/vtimes.h resource/ulimit.h rt/aio.h \
- rt/mqueue.h setjmp/setjmp.h shadow/shadow.h \
- signal/signal.h signal/sys/signal.h socket/sys/socket.h \
- socket/sys/un.h stdio-common/printf.h \
- stdio-common/stdio_ext.h stdlib/stdlib.h stdlib/alloca.h \
- stdlib/monetary.h stdlib/fmtmsg.h stdlib/ucontext.h \
- sysdeps/generic/inttypes.h sysdeps/generic/stdint.h \
- stdlib/errno.h stdlib/sys/errno.h string/string.h \
- string/strings.h string/memory.h string/endian.h \
- string/argz.h string/envz.h string/byteswap.h \
- $(wildcard sunrpc/rpc/*.h sunrpc/rpcsvc/*.h) \
- sysvipc/sys/ipc.h sysvipc/sys/msg.h sysvipc/sys/sem.h \
- sysvipc/sys/shm.h termios/termios.h \
- termios/sys/termios.h termios/sys/ttychars.h time/time.h \
- time/sys/time.h time/sys/timeb.h wcsmbs/wchar.h \
- wctype/wctype.h
-
-tests: $(objpfx)begin-end-check.out
-$(objpfx)begin-end-check.out: scripts/begin-end-check.pl
- $(PERL) scripts/begin-end-check.pl $(installed-headers) > $@
-endif
-
# The realclean target is just like distclean for the parent, but we want
# the subdirs to know the difference in case they care.
realclean distclean: parent-clean
@@ -332,15 +259,6 @@ ifdef objdir
endif
-rm -f $(sysdep-$(distclean-1))
-# Make the TAGS file for Emacs users.
-
-.PHONY: TAGS
-TAGS:
- scripts/list-sources.sh | sed -n '/Makefile/p;\
- $(foreach S,[chsSyl] cxx sh bash pl,\
- $(subst .,\.,/.$S\(.in\)*$$/p;))' \
- | $(ETAGS) -o $@ -
-
# Make the distribution tarfile.
.PHONY: dist tag-for-dist
@@ -358,30 +276,26 @@ endif
files-for-dist := README FAQ INSTALL NOTES configure
tag-of-stem = glibc-$(subst .,_,$*)
-dist-selector = -r $(tag-of-stem)
# Add-ons in the main repository but distributed in their own tar files.
-dist-separate = libidn
+dist-separate = libidn linuxthreads
+
+# Directories in each add-on.
+dist-separate-libidn = libidn
+dist-separate-linuxthreads = linuxthreads linuxthreads_db
glibc-%.tar $(dist-separate:%=glibc-%-%.tar): $(files-for-dist) \
$(foreach D,$(dist-separate),\
$D/configure)
@rm -fr glibc-$*
- $(MAKE) -q `find sysdeps $(addsuffix /sysdeps,$(sysdeps-add-ons)) \
- -name configure`
- cvs $(CVSOPTS) -Q export -d glibc-$* $(dist-selector) libc
-# Touch all the configure scripts going into the tarball since cvs export
-# might have delivered configure.in newer than configure.
- find glibc-$* -name configure -print | xargs touch
+ cvs $(CVSOPTS) -Q export -d glibc-$* -r $(tag-of-stem) libc
$(dist-do-separate-dirs)
tar cf glibc-$*.tar glibc-$*
rm -fr glibc-$*
define dist-do-separate-dirs
$(foreach dir,$(dist-separate),
- @rm -fr glibc-$(dir)-$*
- mv glibc-$*/$(dir) glibc-$(dir)-$*
- tar cf glibc-$(dir)-$*.tar glibc-$(dir)-$*
- rm -fr glibc-$(dir)-$*
+ tar cf glibc-$(dir)-$*.tar -C glibc-$* $(dist-separate-$(dir))
+ rm -rf $(addprefix glibc-$*/,$(dist-separate-$(dir)))
)
endef
@@ -399,7 +313,7 @@ tag-%: $(files-for-dist)
define format-me
@rm -f $@
-makeinfo --no-validate --plaintext --no-number-sections $< -o $@
+makeinfo --no-validate --no-warn --no-headers $< -o $@
-chmod a-w $@
endef
INSTALL: manual/install.texi; $(format-me)
@@ -413,7 +327,7 @@ ifeq ($(with-cvs),yes)
endif
FORCE:
-iconvdata/% localedata/% po/% manual/%: FORCE
+iconvdata/% localedata/% po/% manual/%:
$(MAKE) $(PARALLELMFLAGS) -C $(@D) $(@F)
# glibc 2.0 contains some header files which aren't used with glibc 2.1
View
2 Makefile.in
@@ -1,3 +1,5 @@
+# Generated from $Id$.
+
srcdir = @srcdir@
# Uncomment the line below if you want to do parallel build.
View
287 Makerules
@@ -1,4 +1,4 @@
-# Copyright (C) 1991-2002,2003,2004,2005,2006 Free Software Foundation, Inc.
+# Copyright (C) 1991-2002, 2003, 2004 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
@@ -56,6 +56,22 @@ ifndef +included-Makeconfig
include $(..)Makeconfig
endif
+# `configure' writes a definition of `config-sysdirs' in `config.make'.
+sysdirs = $(strip $(full_config_sysdirs))
+
++sysdir_pfx = $(common-objpfx)
+
+export sysdirs := $(sysdirs)
+
++sysdep_dirs := $(full_config_sysdirs)
+ifdef objdir
++sysdep_dirs := $(objdir) $(+sysdep_dirs)
+endif
+
+# Add -I switches to get the right sysdep directories.
+# `+includes' in Makeconfig references $(+sysdep-includes).
++sysdep-includes := $(addprefix -I,$(+sysdep_dirs))
+
# This variable is used in ``include $(o-iterator)'' after defining
# $(o-iterator-doit) to produce some desired rule using $o for the object
# suffix, and setting $(object-suffixes-left) to $(object-suffixes); a copy
@@ -78,7 +94,7 @@ vpath %.x $(subst $(empty) ,:,$(strip $(common-objpfx) $(objpfx) \
# being included individually by a subdir makefile (hurd/Makefile needs this).
in-Makerules := yes
-sysdep-makefiles := $(wildcard $(sysdirs:=/Makefile))
+sysdep-makefiles := $(wildcard $(full_config_sysdirs:=/Makefile))
ifneq (,$(sysdep-makefiles))
include $(sysdep-makefiles)
endif
@@ -149,7 +165,7 @@ ifndef subdir
$(common-objpfx)%.make: $(..)%.make.c $(..)Makerules $(common-before-compile)
rm -f $@T $@.dT
(echo '# Generated from $*.make.c by Makerules.'; \
- $(CC) $(CFLAGS) $(CPPFLAGS) -E -DASSEMBLER $< \
+ $(CC) $(CFLAGS) $(CPPFLAGS) -E $< \
-MD -MP -MT '$$(common-objpfx)$*.make' -MF $@.dT \
| sed -n '/@@@/{s/@@@[ ]*\(.*\)@@@/\1/;s/[ ]*$$//p;}'; \
echo 'common-generated += $(@F)'; \
@@ -167,7 +183,6 @@ sed-remove-dotdot := -e 's@ *\([^ \/$$][^ \]*\)@ $$(..)\1@g' \
endif
-ifdef gen-as-const-headers
# Generating headers for assembly constants.
# We need this defined early to get into before-compile before
# it's used in sysd-rules, below.
@@ -186,23 +201,60 @@ $(common-objpfx)%.h $(common-objpfx)%.h.d: $(..)scripts/gen-as-const.awk \
mv -f $(@:.h.d=.h)T $(@:.h.d=.h)
vpath %.sym $(sysdirs)
before-compile += $(gen-as-const-headers:%.sym=$(common-objpfx)%.h)
-
-tests += $(gen-as-const-headers:%.sym=test-as-const-%)
-generated += $(gen-as-const-headers:%.sym=test-as-const-%.c)
-$(objpfx)test-as-const-%.c: $(..)scripts/gen-as-const.awk $(..)Makerules \
- %.sym $(common-objpfx)%.h
- ($(AWK) '{ sub(/^/, "asconst_", $$2); print; }' $(filter %.h,$^); \
- $(AWK) -v test=1 -f $< $(filter %.sym,$^); \
- echo '#include "$(..)test-skeleton.c"') > $@T
- mv -f $@T $@
-endif
# Generate an ordered list of implicit rules which find the source files in
# each sysdep directory. The old method was to use vpath to search all the
# sysdep directories. However, that had the problem that a .S file in a
# later directory would be chosen over a .c file in an earlier directory,
# which does not preserve the desired sysdeps ordering behavior.
+# It matters that this set of rules, for compiling from sources in
+# the current directory (the $srcdir/$subdir) come before the
+# generated sysdep rules in included from sysd-rules below. When
+# compiling in the source tree, generated sources go into the current
+# directory, and those should be chosen before any sources in sysdeps.
+define o-iterator-doit
+$(objpfx)%$o: %.S $(before-compile); $$(compile-command.S)
+endef
+object-suffixes-left := $(all-object-suffixes)
+include $(o-iterator)
+
+define o-iterator-doit
+$(objpfx)%$o: %.s $(before-compile); $$(compile-command.s)
+endef
+object-suffixes-left := $(all-object-suffixes)
+include $(o-iterator)
+
+define o-iterator-doit
+$(objpfx)%$o: %.c $(before-compile); $$(compile-command.c)
+endef
+object-suffixes-left := $(all-object-suffixes)
+include $(o-iterator)
+
+# Omit the objpfx rules when building in the source tree, because
+# objpfx is empty and so these rules just override the ones above.
+ifdef objpfx
+# Define first rules to find the source files in $(objpfx).
+# Generated source files will end up there.
+define o-iterator-doit
+$(objpfx)%$o: $(objpfx)%.S $(before-compile); $$(compile-command.S)
+endef
+object-suffixes-left := $(all-object-suffixes)
+include $(o-iterator)
+
+define o-iterator-doit
+$(objpfx)%$o: $(objpfx)%.s $(before-compile); $$(compile-command.s)
+endef
+object-suffixes-left := $(all-object-suffixes)
+include $(o-iterator)
+
+define o-iterator-doit
+$(objpfx)%$o: $(objpfx)%.c $(before-compile); $$(compile-command.c)
+endef
+object-suffixes-left := $(all-object-suffixes)
+include $(o-iterator)
+endif
+
# System-dependent makefiles can put in `inhibit-sysdep-asm' wildcard
# patterns matching sysdep directories whose assembly source files should
# be suppressed.
@@ -213,22 +265,20 @@ endef
close-check-inhibit-asm = ;; esac ;
endif
--include $(common-objpfx)sysd-rules
+-include $(+sysdir_pfx)sysd-rules
ifneq ($(sysd-rules-sysdirs),$(config-sysdirs))
# The value of $(+sysdep_dirs) the sysd-rules was computed for
# differs from the one we are using now. So force a rebuild of sysd-rules.
sysd-rules-force = FORCE
FORCE:
endif
-$(common-objpfx)sysd-rules: $(common-objpfx)config.make $(..)Makerules \
- $(sysdep-makefiles) $(sysd-rules-force)
+$(+sysdir_pfx)sysd-rules: $(+sysdir_pfx)config.make $(..)Makerules \
+ $(wildcard $(foreach dir,$(sysdirs),\
+ $(dir)/Makefile))\
+ $(sysd-rules-force)
-@rm -f $@T
(echo 'sysd-rules-sysdirs := $(config-sysdirs)'; \
- for dir in $(config-sysdirs); do \
- case "$$dir" in \
- /*) ;; \
- *) dir="\$$(..)$$dir" ;; \
- esac; \
+ for dir in $(config-sysdirs:%='$$(..)%'); do \
for o in $(all-object-suffixes); do \
$(open-check-inhibit-asm) \
echo "\$$(objpfx)%$$o: $$dir/%.S \$$(before-compile); \
@@ -243,22 +293,16 @@ $(common-objpfx)sysd-rules: $(common-objpfx)config.make $(..)Makerules \
\$$(compile-command.S)"; \
echo "\$$(objpfx)ptw-%$$o: $$dir/%.s \$$(before-compile); \
\$$(compile-command.s)"; \
- echo "\$$(objpfx)m_%$$o: $$dir/s_%.S \$$(before-compile); \
- \$$(compile-command.S)"; \
- echo "\$$(objpfx)m_%$$o: $$dir/s_%.s \$$(before-compile); \
- \$$(compile-command.s)"; \
$(close-check-inhibit-asm) \
echo "\$$(objpfx)%$$o: $$dir/%.c \$$(before-compile); \
\$$(compile-command.c)"; \
echo "\$$(objpfx)rtld-%$$o: $$dir/%.c \$$(before-compile); \
\$$(compile-command.c)"; \
echo "\$$(objpfx)ptw-%$$o: $$dir/%.c \$$(before-compile); \
\$$(compile-command.c)"; \
- echo "\$$(objpfx)m_%$$o: $$dir/s_%.c \$$(before-compile); \
- \$$(compile-command.c)"; \
done; \
- echo "\$$(inst_includedir)/%.h: $$dir/%.h \$$(+force); \
- \$$(do-install)"; \
+ echo "\$$(objpfx)m_%.S: $$dir/s_%.S; \$$(+make-include-of-dep)"; \
+ echo "\$$(objpfx)m_%.c: $$dir/s_%.c; \$$(+make-include-of-dep)"; \
done; \
echo 'sysd-rules-done = t') > $@T
mv -f $@T $@
@@ -268,53 +312,11 @@ ifndef sysd-rules-done
no_deps=t
endif
-define o-iterator-doit
-$(objpfx)%$o: %.S $(before-compile); $$(compile-command.S)
-endef
-object-suffixes-left := $(all-object-suffixes)
-include $(o-iterator)
-
-define o-iterator-doit
-$(objpfx)%$o: %.s $(before-compile); $$(compile-command.s)
-endef
-object-suffixes-left := $(all-object-suffixes)
-include $(o-iterator)
-
-define o-iterator-doit
-$(objpfx)%$o: %.c $(before-compile); $$(compile-command.c)
-endef
-object-suffixes-left := $(all-object-suffixes)
-include $(o-iterator)
-
-define o-iterator-doit
-$(objpfx)%$o: %.cc $(before-compile); $$(compile-command.cc)
-endef
-object-suffixes-left := $(all-object-suffixes)
-include $(o-iterator)
-
-# Omit the objpfx rules when building in the source tree, because
-# objpfx is empty and so these rules just override the ones above.
-ifdef objpfx
-# Define first rules to find the source files in $(objpfx).
-# Generated source files will end up there.
-define o-iterator-doit
-$(objpfx)%$o: $(objpfx)%.S $(before-compile); $$(compile-command.S)
-endef
-object-suffixes-left := $(all-object-suffixes)
-include $(o-iterator)
-
-define o-iterator-doit
-$(objpfx)%$o: $(objpfx)%.s $(before-compile); $$(compile-command.s)
-endef
-object-suffixes-left := $(all-object-suffixes)
-include $(o-iterator)
-
-define o-iterator-doit
-$(objpfx)%$o: $(objpfx)%.c $(before-compile); $$(compile-command.c)
+# This is used by the m_%.[Sc] pattern rules in sysd-rules.
+define +make-include-of-dep
+echo '#include <$<>' > $@T
+mv -f $@T $@
endef
-object-suffixes-left := $(all-object-suffixes)
-include $(o-iterator)
-endif
# Generate version maps, but wait until sysdep-subdirs is known
ifeq ($(sysd-sorted-done),t)
@@ -326,7 +328,7 @@ postclean-generated += sysd-versions Versions.all abi-versions.h \
Versions.def.v.i Versions.def.v Versions.v.i Versions.v
ifndef avoid-generated
-ifneq ($(sysd-versions-subdirs),$(sorted-subdirs) $(config-sysdirs))
+ifneq ($(sysd-versions-subdirs),$(all-subdirs) $(config-sysdirs))
sysd-versions-force = FORCE
FORCE:
endif
@@ -336,22 +338,21 @@ $(common-objpfx)Versions.def.v.i: $(..)Versions.def \
$(common-objpfx)Versions.all: $(..)scripts/firstversions.awk \
$(common-objpfx)soversions.i \
$(common-objpfx)Versions.def.v
- { while read which lib version setname; do \
- test x"$$which" = xDEFAULT || continue; \
+ { while read lib version setname; do \
test -z "$$setname" || echo "$$lib : $$setname"; \
done < $(word 2,$^); \
cat $(word 3,$^); \
} | LC_ALL=C $(AWK) -f $< > $@T
mv -f $@T $@
# See %.v/%.v.i implicit rules in Makeconfig.
-$(common-objpfx)Versions.v.i: $(wildcard $(subdirs:%=$(..)%/Versions)) \
+$(common-objpfx)Versions.v.i: $(wildcard $(all-subdirs:%=$(..)%/Versions)) \
$(wildcard $(sysdirs:%=%/Versions)) \
$(common-objpfx)abi-versions.h \
$(sysd-versions-force)
$(common-objpfx)sysd-versions: $(common-objpfx)Versions.all \
$(common-objpfx)Versions.v \
$(..)scripts/versions.awk
- ( echo 'sysd-versions-subdirs = $(subdirs) $(config-sysdirs)' ; \
+ ( echo 'sysd-versions-subdirs = $(all-subdirs) $(config-sysdirs)' ; \
cat $(word 2,$^) \
| LC_ALL=C $(AWK) -v buildroot=$(common-objpfx) -v defsfile=$< \
-v move_if_change='$(move-if-change)' \
@@ -367,11 +368,9 @@ compile-mkdep-flags = -MD -MP -MF $@.dt -MT $@
compile-command.S = $(compile.S) $(OUTPUT_OPTION) $(compile-mkdep-flags)
compile-command.s = $(COMPILE.s) $< $(OUTPUT_OPTION) $(compile-mkdep-flags)
compile-command.c = $(compile.c) $(OUTPUT_OPTION) $(compile-mkdep-flags)
-compile-command.cc = $(compile.cc) $(OUTPUT_OPTION) $(compile-mkdep-flags)
# GCC can grok options after the file name, and it looks nicer that way.
compile.c = $(CC) $< -c $(CFLAGS) $(CPPFLAGS)
-compile.cc = $(CXX) $< -c $(CXXFLAGS) $(CPPFLAGS)
compile.S = $(CC) $< -c $(CPPFLAGS) $(S-CPPFLAGS) \
$(ASFLAGS) $(ASFLAGS-$(suffix $@))
COMPILE.S = $(CC) -c $(CPPFLAGS) $(S-CPPFLAGS) \
@@ -487,18 +486,12 @@ $(common-objpfx)shlib.lds: $(common-objpfx)config.make $(..)Makerules
-Wl,--verbose 2>&1 | \
sed > $@T \
-e '/^=========/,/^=========/!d;/^=========/d' \
- $(if $(filter yes,$(have-hash-style)), \
- -e 's/^.*\.gnu\.hash[ ]*:.*$$/ .note.ABI-tag : { *(.note.ABI-tag) } &/' \
- -e '/^[ ]*\.hash[ ]*:.*$$/{h;d;}' \
- -e '/DATA_SEGMENT_ALIGN/{H;g}' \
- , \
- -e 's/^.*\.hash[ ]*:.*$$/ .note.ABI-tag : { *(.note.ABI-tag) } &/' \
- ) \
+ -e 's/^.*\.hash[ ]*:.*$$/ .note.ABI-tag : { *(.note.ABI-tag) } &/' \
-e 's/^.*\*(\.dynbss).*$$/& \
PROVIDE(__start___libc_freeres_ptrs = .); \
*(__libc_freeres_ptrs) \
PROVIDE(__stop___libc_freeres_ptrs = .);/'\
- -e 's@^.*\*(\.jcr).*$$@& \
+ -e 's/^.*\*(\.jcr).*$$/& \
PROVIDE(__start___libc_subfreeres = .);\
__libc_subfreeres : { *(__libc_subfreeres) }\
PROVIDE(__stop___libc_subfreeres = .);\
@@ -507,8 +500,7 @@ $(common-objpfx)shlib.lds: $(common-objpfx)config.make $(..)Makerules
PROVIDE(__stop___libc_atexit = .);\
PROVIDE(__start___libc_thread_subfreeres = .);\
__libc_thread_subfreeres : { *(__libc_thread_subfreeres) }\
- PROVIDE(__stop___libc_thread_subfreeres = .);\
- /DISCARD/ : { *(.gnu.glibc-stub.*) }@'
+ PROVIDE(__stop___libc_thread_subfreeres = .);/'
mv -f $@T $@
common-generated += shlib.lds
@@ -558,11 +550,6 @@ define build-module
$(build-module-helper) -o $@ -T $(common-objpfx)shlib.lds \
$(csu-objpfx)abi-note.o $(build-module-objlist)
endef
-define build-module-asneeded
-$(build-module-helper) -o $@ -T $(common-objpfx)shlib.lds \
- $(csu-objpfx)abi-note.o \
- -Wl,--as-needed $(build-module-objlist) -Wl,--no-as-needed
-endef
else
ifneq (,$(findstring aix,$(config-os)))
define build-module
@@ -676,25 +663,18 @@ include $(patsubst %,$(..)extra-lib.mk,$(extra-libs))
endif
-# The makefile may define $(modules-names) to build additional modules.
-# These are built with $(build-module), except any in $(modules-names-nobuild).
+# The makefile may define $(modules-names) # to build additional
+# modules.
ifdef modules-names
# extra-lib.mk is included once for each extra lib to define rules
# to build it, and to add its objects to the various variables.
# During its evaluation, $(lib) is set to the name of the library.
extra-modules-left := $(modules-names)
include $(patsubst %,$(..)extra-modules.mk,$(modules-names))
-
-extra-modules-build := $(filter-out $(modules-names-nobuild),$(modules-names))
-$(extra-modules-build:%=$(objpfx)%.so): $(objpfx)%.so: \
- $(objpfx)%.os $(common-objpfx)shlib.lds \
- $(common-objpfx)libc.so $(common-objpfx)libc_nonshared.a
- $(build-module)
endif
+depfiles := $(sources:.c=.d) \
$(patsubst %.o,%.d,$(filter %.o,$(extra-objs:.os=.o))) \
- $(patsubst %.o,%.d,$(filter %.o,$(extra-test-objs:.os=.o))) \
$(addsuffix .d,$(tests) $(xtests) $(test-srcs))
ifeq ($(build-programs),yes)
+depfiles += $(addsuffix .d,$(others) $(sysdep-others))
@@ -990,7 +970,7 @@ $(inst_libdir)/libc.so: $(common-objpfx)format.lds \
cat $<; \
echo 'GROUP ( $(slibdir)/libc.so$(libc.so-version)' \
'$(libdir)/$(patsubst %,$(libtype.oS),$(libprefix)$(libc-name))'\
- ' AS_NEEDED (' $(slibdir)/$(rtld-installed-name) ') )' \
+ ')' \
) > $@.new
mv -f $@.new $@
@@ -1113,21 +1093,8 @@ $(addprefix $(inst_datadir)/,$(install-data)): $(inst_datadir)/%: % $(+force)
endif
headers := $(strip $(headers))
ifdef headers
-# This implicit rule installs headers from the source directory.
-# It may be ignored in preference to rules from sysd-rules to find
-# headers in the sysdeps tree.
-$(inst_includedir)/%.h: $(objpfx)%.h $(+force)
+$(addprefix $(inst_includedir)/,$(headers)): $(inst_includedir)/%: % $(+force)
$(do-install)
-$(inst_includedir)/%.h: %.h $(+force)
- $(do-install)
-$(inst_includedir)/%.h: $(..)include/%.h $(+force)
- $(do-install)
-headers-nonh := $(filter-out %.h,$(headers))
-ifdef headers-nonh
-$(addprefix $(inst_includedir)/,$(headers-nonh)): $(inst_includedir)/%: \
- % $(+force)
- $(do-install)
-endif # headers-nonh
endif # headers
.PHONY: install-bin-nosubdir install-bin-script-nosubdir \
@@ -1193,9 +1160,9 @@ xcheck: xtests
all-nonlib = $(strip $(tests) $(xtests) $(test-srcs) $(test-extras) $(others))
ifneq (,$(all-nonlib))
-cpp-srcs-left = $(all-nonlib:=.c) $(all-nonlib:=.cc)
+cpp-srcs-left = $(all-nonlib:=.c)
lib := nonlib
-include $(patsubst %,$(..)cppflags-iterator.mk,$(cpp-srcs-left))
+include $(patsubst %,$(..)cppflags-iterator.mk,$(all-nonlib))
endif
# The include magic above causes those files to use this variable for flags.
@@ -1294,12 +1261,18 @@ endif
endif
-# These will have been set by sysdeps/posix/Makefile.
-L_tmpnam ?= 1
-TMP_MAX ?= 0
-L_ctermid ?= 1
-L_cuserid ?= 1
-
+# There's no good place to put this - here will do.
+ifeq ($(filter %posix, $(sysdirs)),)
+L_tmpnam = 1
+TMP_MAX = 0
+L_ctermid = 1
+L_cuserid = 1
+else
+L_tmpnam = 20
+TMP_MAX = 238328
+L_ctermid = 9
+L_cuserid = 9
+endif
stdio_lim = $(common-objpfx)bits/stdio_lim.h
$(stdio_lim:lim.h=%.h) $(stdio_lim:lim.h=%.d): $(stdio_lim:lim.h=%.st); @:
@@ -1342,8 +1315,15 @@ ifndef no_deps
endif
common-generated += bits/stdio_lim.h bits/stdio_lim.d bits/stdio_lim.st
+.PHONY: TAGS
+TAGS: $(objpfx)distinfo $(..)MakeTAGS
+ $(MAKE) $(addprefix -f ,$^) $@
+
+$(..)po/%.pot: $(objpfx)distinfo $(..)MakeTAGS FORCE
+ $(MAKE) $(addprefix -f ,$(filter-out FORCE,$^)) $@
FORCE:
+
.PHONY: echo-headers
echo-headers:
@echo $(headers)
@@ -1376,8 +1356,8 @@ common-mostlyclean:
$(test-srcs)) \
$(addsuffix -bp.out,$(tests) $(xtests) \
$(test-srcs)))
- -rm -f $(addprefix $(objpfx),$(extra-objs) $(extra-test-objs) \
- $(install-lib) $(install-lib.so) \
+ -rm -f $(addprefix $(objpfx),$(extra-objs) $(install-lib) \
+ $(install-lib.so) \
$(install-lib.so:%.so=%_pic.a))
-rm -f core
-rm -f $(objpfx)rtld-*.os
@@ -1393,6 +1373,7 @@ common-clean: common-mostlyclean
-rm -f $(objpfx)*.d $(objpfx)*.dt
-rm -fr $(addprefix $(objpfx),$(generated-dirs))
-rm -f $(addprefix $(common-objpfx),$(common-generated))
+ -rm -f $(objpfx)distinfo
# Produce a file `stubs' which contains `#define __stub_FUNCTION'
# for each function which is a stub. We grovel over all the .d files
@@ -1403,20 +1384,44 @@ ifdef objpfx
.PHONY: stubs # The parent Makefile calls this target.
stubs: $(objpfx)stubs
endif
-objs-for-stubs := $(foreach o,$(object-suffixes-for-libc),$(o-objects)) \
- $(addprefix $(objpfx),$(extra-objs))
-$(objpfx)stubs: $(objs-for-stubs)
-ifneq (,$(strip $(objs-for-stubs)))
- (cd $(objpfx).; $(OBJDUMP) -h $(patsubst $(objpfx)%,%,$^)) | \
- $(AWK) '/\.gnu\.glibc-stub\./ { \
- sub(/\.gnu\.glibc-stub\./, "", $$2); \
- stubs[$$2] = 1; } \
- END { for (s in stubs) print "#define __stub_" s }' > $@T
+$(objpfx)stubs: $(+depfiles)
+ifneq (,$(strip $(+depfiles)))
+# Use /dev/null since `...` might expand to empty.
+ c=`($(patsubst %/,cd % &&,$(objpfx)) \
+ sed -n -e 's@\$$(common-objpfx)@$(common-objpfx)@g' \
+ -e 's@\$$(objpfx)@$(objpfx)@g' \
+ -e '/stub-tag\.h/{; g; s/./&/p; }' \
+ -e '/:/{x; s/^.*$$//; x; }' \
+ -e 's/^.*://;s/\\$$//;s/^ *\([^ ][^ ]*\) .*$$/\1/' \
+ -e '/^[^ ][^ ]*$$/{G;s/^.*\n\(..*\)/\1/;s/\n//;h; }' \
+ $(patsubst $(objpfx)%,%,$^)) | sort | uniq`; \
+ sed -n 's/^stub_warning *(\([^)]*\).*$$/#define __stub_\1/p' \
+ $$c /dev/null > $@T
mv -f $@T $@
else
> $@
endif
+# This information is not used for making distributions any more.
+# But it's used by MakeTAGS for making TAGS files and the .pot files.
+$(objpfx)distinfo: Makefile $(..)Makerules \
+ $(wildcard $(foreach dir,$(sysdirs),$(dir)/Makefile))
+ $(make-target-directory)
+ $(distinfo-vars)
+ mv -f $@.new $@
+
+define distinfo-vars
+rm -f $@.new
+echo > $@.new 'subdir := $(subdir)'
+$(foreach var,subdir-dirs sources elided-routines sysdep_routines \
+ headers sysdep_headers distribute dont_distribute generated \
+ others tests xtests test-srcs extra-libs versioned \
+ $(extra-libs:%=%-routines) \
+ $(addprefix install-,lib lib.so data bin bin-script sbin others),
+echo >> $@.new '$(subdir)-$(var) := $($(var))'
+echo >> $@.new '$(var) = $$($(subdir)-$(var))')
+endef
+
ifneq (,$(strip $(gpl2lgpl)))
ifneq (,$(wildcard $(..)gpl2lgpl.sed))
# Snarf from the master source and frob the copying notice.
View
111 NEWS
@@ -1,114 +1,10 @@
-GNU C Library NEWS -- history of user-visible changes. 2006-09-29
-Copyright (C) 1992-2002,2003,2004,2005,2006 Free Software Foundation, Inc.
+GNU C Library NEWS -- history of user-visible changes. 2004-12-19
+Copyright (C) 1992-2002,2003,2004 Free Software Foundation, Inc.
See the end for copying conditions.
Please send GNU C library bug reports via <http://sources.redhat.com/bugzilla/>
using `glibc' in the "product" field.
-Version 2.5
-
-* For Linux, the sorting of addresses returned by getaddrinfo now also
- handles rules 3, 4, and 7 from RFC 3484. I.e., all rules are handled.
- Implemented by Ulrich Drepper.
-
-* Allow system admin to configure getaddrinfo with the /etc/gai.conf file.
- Implemented by Ulrich Drepper.
-
-* New Linux interfaces: splice, tee, sync_file_range, vmsplice.
-
-* New iconv module for MIK. Contributed by Alexander Shopov.
-
-* For sites with broken group and/or passwd database, the auto-propagate
- option of nscd can prevent creating ID lookup entries from the results
- of a name lookup and vice versa. This usually is no problem but some
- site might have problems with the default behavior.
- Implemented by Ulrich Drepper.
-
-* Iterating over entire database in NIS can be slow. With the
- SETENT_BATCH_READ option in /etc/default/nss a system admin can decide
- to trade time for memory. The entire database will be read at once.
- Implemented by Ulrich Drepper.
-
-* The interfaces introduced in RFC 3542 have been implemented by
- Ulrich Drepper.
-
-* Support for the new ELF hash table format was added by Ulrich Drepper.
-
-* Support for priority inheritance mutexes added by Jakub Jelinek and
- Ulrich Drepper.
-
-* Support for priority protected mutexes added by Jakub Jelinek.
-
-* New locales: nr_ZA, pa_PK, ca_AD, ca_FR, ca_IT, el_CY, tr_CY, as_IN,
- or_IN, csb_PL, fy_NL, sr_ME.
-
-Version 2.4
-
-* More overflow detection functions.
-
-* New iconv converters for IBM1025, IBM1122, IBM1137, IBM1153,
- IBM1154, IBM1155, IBM1156, IBM1157, and IBM1158 contributed by Jiro Sekiba.
-
- More converters for IBM803, IBM901, IBM902, IBM921, IBM1008, IBM1097,
- IBM1112, IBM1123, IBM1130, IBM1140, IBM1141, IBM1142, IBM1143, IBM1144,
- IBM1145, IBM1146, IBM1147, IBM1148, IBM1149, IBM1166, IBM1167, IBM4517,
- IBM4899, IBM4909, IBM4971, IBM5347, IBM9030, IBM9066, IBM9448, IBM12712,
- IBM16804, IBM1364, IBM1371, IBM1388, IBM1390, and IBM1399 contributed
- by Masahide Washizawa.
-
-* It is now possible to install audit libraries for the dynamic linker using
- LD_AUDIT. Implemented by Ulrich Drepper.
-
-* The LinuxThreads add-on, providing pthreads on Linux 2.4 kernels, is no
- longer supported. The new NPTL implementation requires Linux 2.6 kernels.
- For a libc and libpthread that works well on Linux 2.4 kernels, we
- recommend using the stable 2.3 branch.
-
-* The new function open_wmemstream acts like open_memstream,
- but uses a wchar_t wide character buffer.
-
-* The new function ppoll is an improved version of poll, similar to pselect.
-
-* New interfaces: fdopendir, openat, fstatat, fchmodat, fchownat,
- futimesat, faccessat, mkdirat, mkfifoat, mknodat,
- renameat, unlinkat, linkat, symlinkat, readlinkat.
-
-* New Linux kernel system calls: unshare,
- inotify_init, inotify_add_watch, inotify_rm_watch.
-
-* The euidaccess function is now also known by the alias eaccess,
- for compatibility with some other systems.
-
-* Timezone data updated to 2006b version.
-
-Version 2.3.6
-
-* The following bugs are resolved with this release:
-
- 38, 253, 549, 622, 653, 721, 758, 851, 877, 915, 934, 955, 961,
- 1016, 1037, 1076, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086,
- 1087, 1088, 1090, 1091, 1092, 1093, 1094, 1095, 1096, 1097, 1098,
- 1099, 1100, 1101, 1102, 1103, 1104, 1105, 1106, 1107, 1108, 1109,
- 1110, 1111, 1112, 1113, 1125, 1137, 1138, 1249, 1250, 1251, 1252,
- 1253, 1254, 1350, 1358, 1394, 1438, 1498, 1534
-
- Visit <http://sources.redhat.com/bugzilla/> for the details of each bug.
-
-* As of this release, GCC 4 can be used to compile the C Library.
-
-* Timezone data updated to 2005m version.
-
-Version 2.3.5
-
-* The following bugs are resolved with this release:
-
- 284, 592, 602, 626, 633, 640, 650, 661, 671, 681, 693, 700, 710, 719,
- 722, 723, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736,
- 737, 738, 739, 740, 741, 742, 743, 744, 745, 765, 767, 768, 769, 776,
- 777, 787, 821, 822, 823, 825
-
- Visit <http://sources.redhat.com/bugzilla/> for the details of each bug.
-
Version 2.3.4
* Support for RFC 3678. Real implementations exist only for Linux so far.
@@ -1588,8 +1484,7 @@ Version 1.04
----------------------------------------------------------------------
Copyright information:
-Copyright (C) 1992-1999,2000,2001,2002,2003,2004,2005,2006
- Free Software Foundation, Inc.
+Copyright (C) 1992-1999,2000,2001,2002 Free Software Foundation, Inc.
Permission is granted to anyone to make or distribute verbatim copies
of this document as received, in any medium, provided that the
View
58 NOTES
@@ -1,8 +1,8 @@
Feature Test Macros
-------------------
-The exact set of features available when you compile a source file is
-controlled by which "feature test macros" you define.
+ The exact set of features available when you compile a source file
+is controlled by which "feature test macros" you define.
If you compile your programs using `gcc -ansi', you get only the
ISO C library features, unless you explicitly request additional
@@ -32,15 +32,15 @@ limited standard. It is insufficient for this purpose, as it will not
protect you from including header files outside the standard, or
relying on semantics undefined within the standard.
- -- Macro: _POSIX_SOURCE
+ - Macro: _POSIX_SOURCE
If you define this macro, then the functionality from the POSIX.1
standard (IEEE Standard 1003.1) is available, as well as all of the
ISO C facilities.
The state of `_POSIX_SOURCE' is irrelevant if you define the macro
`_POSIX_C_SOURCE' to a positive integer.
- -- Macro: _POSIX_C_SOURCE
+ - Macro: _POSIX_C_SOURCE
Define this macro to a positive integer to control which POSIX
functionality is made available. The greater the value of this
macro, the more functionality is made available.
@@ -65,7 +65,12 @@ relying on semantics undefined within the standard.
greater than or equal to `199506L', then the functionality from
the 1996 edition is made available.
- -- Macro: _BSD_SOURCE
+ The Single Unix Specification specify that setting this macro to
+ the value `199506L' selects all the values specified by the POSIX
+ standards plus those of the Single Unix Specification, i.e., is the
+ same as if `_XOPEN_SOURCE' is set to `500' (see below).
+
+ - Macro: _BSD_SOURCE
If you define this macro, functionality derived from 4.3 BSD Unix
is included as well as the ISO C, POSIX.1, and POSIX.2 material.
@@ -83,15 +88,15 @@ relying on semantics undefined within the standard.
must give the option `-lbsd-compat' to the compiler or linker when
linking the program, to tell it to find functions in this special
compatibility library before looking for them in the normal C
- library.
+ library.
- -- Macro: _SVID_SOURCE
+ - Macro: _SVID_SOURCE
If you define this macro, functionality derived from SVID is
included as well as the ISO C, POSIX.1, POSIX.2, and X/Open
material.
- -- Macro: _XOPEN_SOURCE
- -- Macro: _XOPEN_SOURCE_EXTENDED
+ - Macro: _XOPEN_SOURCE
+ - Macro: _XOPEN_SOURCE_EXTENDED
If you define this macro, functionality described in the X/Open
Portability Guide is included. This is a superset of the POSIX.1
and POSIX.2 functionality and in fact `_POSIX_SOURCE' and
@@ -108,19 +113,19 @@ relying on semantics undefined within the standard.
functionality described so far plus some new definitions from the
Single Unix Specification, version 2.
- -- Macro: _LARGEFILE_SOURCE
+ - Macro: _LARGEFILE_SOURCE
If this macro is defined some extra functions are available which
- rectify a few shortcomings in all previous standards.
- Specifically, the functions `fseeko' and `ftello' are available.
+ rectify a few shortcomings in all previous standards. More
+ concrete the functions `fseeko' and `ftello' are available.
Without these functions the difference between the ISO C interface
(`fseek', `ftell') and the low-level POSIX interface (`lseek')
would lead to problems.
This macro was introduced as part of the Large File Support
extension (LFS).
- -- Macro: _LARGEFILE64_SOURCE
- If you define this macro an additional set of functions is made
+ - Macro: _LARGEFILE64_SOURCE
+ If you define this macro an additional set of function is made
available which enables 32 bit systems to use files of sizes beyond
the usual limit of 2GB. This interface is not available if the
system does not support files that large. On systems where the
@@ -133,13 +138,13 @@ relying on semantics undefined within the standard.
`off64_t' and `fseeko' vs. `fseeko64'.
This macro was introduced as part of the Large File Support
- extension (LFS). It is a transition interface for the period when
- 64 bit offsets are not generally used (see `_FILE_OFFSET_BITS').
+ extension (LFS). It is a transition interface for the time 64 bit
+ offsets are not generally used (see `_FILE_OFFSET_BITS'.
- -- Macro: _FILE_OFFSET_BITS
+ - Macro: _FILE_OFFSET_BITS
This macro determines which file system interface shall be used,
- one replacing the other. Whereas `_LARGEFILE64_SOURCE' makes the
- 64 bit interface available as an additional interface,
+ one replacing the other. While `_LARGEFILE64_SOURCE' makes the
+ 64 bit interface available as an additional interface
`_FILE_OFFSET_BITS' allows the 64 bit interface to replace the old
interface.
@@ -149,10 +154,9 @@ relying on semantics undefined within the standard.
If the macro is defined to the value `64', the large file interface
replaces the old interface. I.e., the functions are not made
- available under different names (as they are with
- `_LARGEFILE64_SOURCE'). Instead the old function names now
- reference the new functions, e.g., a call to `fseeko' now indeed
- calls `fseeko64'.