]> sourceware.org Git - glibc.git/blame - FAQ.in
Update.
[glibc.git] / FAQ.in
CommitLineData
61952351
UD
1 Frequently Asked Questions about the GNU C Library
2
f12944ec
UD
3This document tries to answer questions a user might have when installing
4and using glibc. Please make sure you read this before sending questions or
5bug reports to the maintainers.
61952351 6
f12944ec 7The GNU C library is very complex. The installation process has not been
fdacb17d 8completely automated; there are too many variables. You can do substantial
f12944ec
UD
9damage to your system by installing the library incorrectly. Make sure you
10understand what you are undertaking before you begin.
61952351
UD
11
12If you have any questions you think should be answered in this document,
13please let me know.
14
15 --drepper@cygnus.com
16\f
17? Compiling glibc
18
19?? What systems does the GNU C Library run on?
20
f12944ec
UD
21{UD} This is difficult to answer. The file `README' lists the architectures
22GNU libc was known to run on *at some time*. This does not mean that it
23still can be compiled and run on them now.
61952351 24
f12944ec
UD
25The systems glibc is known to work on as of this release, and most probably
26in the future, are:
61952351
UD
27
28 *-*-gnu GNU Hurd
bd355af0
UD
29 i[3456]86-*-linux-gnu Linux-2.x on Intel
30 m68k-*-linux-gnu Linux-2.x on Motorola 680x0
2bbc70d5 31 alpha*-*-linux-gnu Linux-2.x on DEC Alpha
61952351 32 powerpc-*-linux-gnu Linux and MkLinux on PowerPC systems
bd355af0
UD
33 sparc-*-linux-gnu Linux-2.x on SPARC
34 sparc64-*-linux-gnu Linux-2.x on UltraSPARC
a35cb74d 35 arm-*-none ARM standalone systems
cb0509a8 36 arm-*-linux Linux-2.x on ARM
a35cb74d 37 arm-*-linuxaout Linux-2.x on ARM using a.out binaries
2bbc70d5
AJ
38 mips*-*-linux-gnu Linux-2.x on MIPS
39 ia64-*-linux-gnu Linux-2.x on ia64
92ec318f 40 s390-*-linux-gnu Linux-2.x on IBM S/390
61952351 41
f12944ec
UD
42Ports to other Linux platforms are in development, and may in fact work
43already, but no one has sent us success reports for them. Currently no
44ports to other operating systems are underway, although a few people have
45expressed interest.
61952351 46
f12944ec
UD
47If you have a system not listed above (or in the `README' file) and you are
48really interested in porting it, contact
61952351 49
b9b49b44 50 <bug-glibc@gnu.org>
61952351 51
57b4b78a 52??binsize What compiler do I need to build GNU libc?
61952351 53
f12944ec
UD
54{UD} You must use GNU CC to compile GNU libc. A lot of extensions of GNU CC
55are used to increase portability and speed.
61952351
UD
56
57GNU CC is found, like all other GNU packages, on
f12944ec 58
2eb45444 59 ftp://ftp.gnu.org/pub/gnu
f12944ec 60
2eb45444 61and the many mirror sites. ftp.gnu.org is always overloaded, so try to find
61952351
UD
62a local mirror first.
63
ceb27555 64You should always try to use the latest official release. Older versions
f12944ec 65may not have all the features GNU libc requires. The current releases of
7b32d065 66gcc (2.95 or newer) should work with the GNU C library (for powerpc see
92ec318f 67?powerpc; for ARM see ?arm; for MIPS see ?mips).
61952351 68
6e8afc1c 69Please note that gcc 2.95 and 2.95.x cannot compile glibc on Alpha due to
a125d9b4
UD
70problems in the complex float support.
71
61952351
UD
72?? When I try to compile glibc I get only error messages.
73 What's wrong?
74
b1418d8f 75{UD} You definitely need GNU make to build GNU libc. No other make
f12944ec 76program has the needed functionality.
61952351 77
2bbc70d5
AJ
78We recommend version GNU make version 3.79 or newer. Older versions have
79bugs and/or are missing features.
61952351 80
d89e7a96 81?? Do I need a special linker or assembler?
61952351 82
d89e7a96
UD
83{ZW} If you want a shared library, you need a linker and assembler that
84understand all the features of ELF, including weak and versioned symbols.
85The static library can be compiled with less featureful tools, but lacks key
86features such as NSS.
61952351 87
d89e7a96
UD
88For Linux or Hurd, you want binutils 2.8.1.0.23, 2.9.1, or 2.9.1.0.15 or
89higher. These are the only versions we've tested and found reliable. Other
90versions after 2.8.1.0.23 may work but we don't recommend them, especially
91not when C++ is involved. Earlier versions do not work at all.
7fd18ea2 92
d89e7a96
UD
93Other operating systems may come with system tools that have all the
94necessary features, but this is moot because glibc hasn't been ported to
95them.
61952351 96
8619129f 97??powerpc Which compiler should I use for powerpc?
4775243a 98
83f6a990
UD
99{GK} You want to use at least gcc 2.95 (together with the right versions
100of all the other tools, of course). See also question ?excpt.
4775243a 101
cb0509a8
UD
102??arm Which tools should I use for ARM?
103
104{PB} You should use egcs 1.1 or a later version. For ELF systems some
105changes are needed to the compiler; a patch against egcs-1.1.x can be found
106at:
107
108<ftp://ftp.netwinder.org/users/p/philb/egcs-1.1.1pre2-diff-981126>
109
110Binutils 2.9.1.0.16 or later is also required.
111
d89e7a96 112?? Do I need some more things to compile the GNU C Library?
61952351
UD
113
114{UD} Yes, there are some more :-).
115
116* GNU gettext. This package contains the tools needed to construct
117 `message catalog' files containing translated versions of system
2eb45444 118 messages. See ftp://ftp.gnu.org/pub/gnu or better any mirror
61952351 119 site. (We distribute compiled message catalogs, but they may not be
2f2f52f7
UD
120 updated in patches.) Please note that the required minimal version
121 (0.10.35) of gettext is alpha software and available from
122 ftp://alpha.gnu.org/gnu .
61952351 123
d89e7a96
UD
124* Some files are built with special tools. E.g., files ending in .gperf
125 need a `gperf' program. The GNU version (now available in a separate
126 package, formerly only as part of libg++) is known to work while some
127 vendor versions do not.
61952351
UD
128
129 You should not need these tools unless you change the source files.
130
d89e7a96
UD
131* Perl 5 is needed if you wish to test an installation of GNU libc
132 as the primary C library.
bd355af0 133
61952351
UD
134* When compiling for Linux, the header files of the Linux kernel must
135 be available to the compiler as <linux/*.h> and <asm/*.h>.
136
02228370 137* lots of disk space (~400MB for i?86-linux; more for RISC platforms).
61952351
UD
138
139* plenty of time. Compiling just the shared and static libraries for
d3d99893
UD
140 35mins on a 2xPIII@550Mhz w/ 512MB RAM. On a 2xUltraSPARC-II@360Mhz
141 w/ 1GB RAM it takes about 14 minutes. Multiply this by 1.5 or 2.0
142 if you build profiling and/or the highly optimized version as well.
143 For Hurd systems times are much higher.
61952351
UD
144
145 You should avoid compiling in a NFS mounted filesystem. This is
146 very slow.
147
d3d99893
UD
148 James Troup <J.J.Troup@comp.brad.ac.uk> reports a compile time for
149 an earlier (and smaller!) version of glibc of 45h34m for a full build
150 (shared, static, and profiled) on Atari Falcon (Motorola 68030 @ 16 Mhz,
151 14 Mb memory) and Jan Barte <yann@plato.uni-paderborn.de> reports
152 22h48m on Atari TT030 (Motorola 68030 @ 32 Mhz, 34 Mb memory)
61952351 153
83f6a990 154 A full build of the PowerPC library took 1h on a PowerPC 750@400Mhz w/
6e8afc1c 155 64MB of RAM, and about 9h on a 601@60Mhz w/ 72Mb.
83f6a990 156
61952351
UD
157 If you have some more measurements let me know.
158
d111572f
UD
159?? What version of the Linux kernel headers should be used?
160
f12944ec
UD
161{AJ,UD} The headers from the most recent Linux kernel should be used. The
162headers used while compiling the GNU C library and the kernel binary used
163when using the library do not need to match. The GNU C library runs without
164problems on kernels that are older than the kernel headers used. The other
165way round (compiling the GNU C library with old kernel headers and running
166on a recent kernel) does not necessarily work. For example you can't use
b1418d8f 167new kernel features if you used old kernel headers to compile the GNU C
f12944ec
UD
168library.
169
ceb27555 170{ZW} Even if you are using a 2.0 kernel on your machine, we recommend you
440d13e2
UD
171compile GNU libc with 2.2 kernel headers. That way you won't have to
172recompile libc if you ever upgrade to kernel 2.2. To tell libc which
ceb27555 173headers to use, give configure the --with-headers switch
440d13e2 174(e.g. --with-headers=/usr/src/linux-2.2.0/include).
ceb27555 175
440d13e2 176Note that you must configure the 2.2 kernel if you do this, otherwise libc
62595351 177will be unable to find <linux/version.h>. Just change the current directory
440d13e2 178to the root of the 2.2 tree and do `make include/linux/version.h'.
ceb27555 179
f12944ec
UD
180?? The compiler hangs while building iconvdata modules. What's
181 wrong?
182
7b32d065 183{} Removed. Does not apply anymore.
d111572f 184
61952351
UD
185?? When I run `nm -u libc.so' on the produced library I still
186 find unresolved symbols. Can this be ok?
187
f12944ec 188{UD} Yes, this is ok. There can be several kinds of unresolved symbols:
61952351
UD
189
190* magic symbols automatically generated by the linker. These have names
191 like __start_* and __stop_*
192
193* symbols starting with _dl_* come from the dynamic linker
194
61952351
UD
195* weak symbols, which need not be resolved at all (fabs for example)
196
197Generally, you should make sure you find a real program which produces
198errors while linking before deciding there is a problem.
199
200??addon What are these `add-ons'?
201
f12944ec 202{UD} To avoid complications with export rules or external source code some
c0f53cdd
UD
203optional parts of the libc are distributed as separate packages, e.g., the
204linuxthreads package.
61952351 205
f12944ec
UD
206To use these packages as part of GNU libc, just unpack the tarfiles in the
207libc source directory and tell the configuration script about them using the
208--enable-add-ons option. If you give just --enable-add-ons configure tries
209to find all the add-on packages in your source tree. This may not work. If
210it doesn't, or if you want to select only a subset of the add-ons, give a
211comma-separated list of the add-ons to enable:
61952351 212
c0f53cdd 213 configure --enable-add-ons=linuxthreads
61952351
UD
214
215for example.
216
f12944ec
UD
217Add-ons can add features (including entirely new shared libraries), override
218files, provide support for additional architectures, and just about anything
219else. The existing makefiles do most of the work; only some few stub rules
220must be written to get everything running.
61952351 221
5bb17dca 222Most add-ons are tightly coupled to a specific GNU libc version. Please
c0f53cdd
UD
223check that the add-ons work with the GNU libc. For example the linuxthreads
224add-on has the same numbering scheme as the libc and will in general only
225work with the corresponding libc.
226
227{AJ} With glibc 2.2 the crypt add-on and with glibc 2.1 the localedata
228add-on have been integrated into the normal glibc distribution, crypt and
229localedata are therefore not anymore add-ons.
5bb17dca 230
61952351
UD
231?? My XXX kernel emulates a floating-point coprocessor for me.
232 Should I enable --with-fp?
233
f12944ec
UD
234{ZW} An emulated FPU is just as good as a real one, as far as the C library
235is concerned. You only need to say --without-fp if your machine has no way
236to execute floating-point instructions.
61952351
UD
237
238People who are interested in squeezing the last drop of performance
239out of their machine may wish to avoid the trap overhead, but this is
240far more trouble than it's worth: you then have to compile
241*everything* this way, including the compiler's internal libraries
242(libgcc.a for GNU C), because the calling conventions change.
243
244?? When compiling GNU libc I get lots of errors saying functions
245 in glibc are duplicated in libgcc.
246
f12944ec
UD
247{EY} This is *exactly* the same problem that I was having. The problem was
248due to the fact that configure didn't correctly detect that the linker flag
249--no-whole-archive was supported in my linker. In my case it was because I
250had run ./configure with bogus CFLAGS, and the test failed.
61952351 251
f12944ec
UD
252One thing that is particularly annoying about this problem is that once this
253is misdetected, running configure again won't fix it unless you first delete
254config.cache.
61952351 255
f12944ec
UD
256{UD} Starting with glibc-2.0.3 there should be a better test to avoid some
257problems of this kind. The setting of CFLAGS is checked at the very
258beginning and if it is not usable `configure' will bark.
61952351 259
74015205 260?? Why do I get messages about missing thread functions when I use
da2d1bc5 261 librt? I don't even use threads.
74015205 262
da2d1bc5
UD
263{UD} In this case you probably mixed up your installation. librt uses
264threads internally and has implicit references to the thread library.
f12944ec
UD
265Normally these references are satisfied automatically but if the thread
266library is not in the expected place you must tell the linker where it is.
267When using GNU ld it works like this:
74015205
UD
268
269 gcc -o foo foo.c -Wl,-rpath-link=/some/other/dir -lrt
270
f12944ec
UD
271The `/some/other/dir' should contain the thread library. `ld' will use the
272given path to find the implicitly referenced library while not disturbing
273any other link path.
74015205 274
61952351
UD
275?? What's the problem with configure --enable-omitfp?
276
277{AJ} When --enable-omitfp is set the libraries are built without frame
fdacb17d 278pointers. Some compilers produce buggy code for this model and therefore we
f12944ec 279don't advise using it at the moment.
61952351 280
fdacb17d 281If you use --enable-omitfp, you're on your own. If you encounter problems
f12944ec
UD
282with a library that was build this way, we advise you to rebuild the library
283without --enable-omitfp. If the problem vanishes consider tracking the
284problem down and report it as compiler failure.
61952351 285
b1418d8f
UD
286Since a library built with --enable-omitfp is undebuggable on most systems,
287debuggable libraries are also built - you can use them by appending "_g" to
f12944ec 288the library names.
61952351 289
f12944ec
UD
290The compilation of these extra libraries and the compiler optimizations slow
291down the build process and need more disk space.
61952351 292
b1418d8f 293?? I get failures during `make check'. What should I do?
b0610668 294
b1418d8f
UD
295{AJ} The testsuite should compile and run cleanly on your system; every
296failure should be looked into. Depending on the failures, you probably
297should not install the library at all.
b0610668
UD
298
299You should consider using the `glibcbug' script to report the failure,
300providing as much detail as possible. If you run a test directly, please
301remember to set up the environment correctly. You want to test the compiled
302library - and not your installed one. The best way is to copy the exact
303command line which failed and run the test from the subdirectory for this
304test in the sources.
305
306There are some failures which are not directly related to the GNU libc:
b1418d8f
UD
307- Some compilers produce buggy code. No compiler gets single precision
308 complex numbers correct on Alpha. Otherwise, the egcs 1.1 release should be
309 ok; gcc 2.8.1 might cause some failures; gcc 2.7.2.x is so buggy that
310 explicit checks have been used so that you can't build with it.
b0610668
UD
311- The kernel might have bugs. For example on Linux/Alpha 2.0.34 the
312 floating point handling has quite a number of bugs and therefore most of
440d13e2 313 the test cases in the math subdirectory will fail. Linux 2.2 has
b1418d8f
UD
314 fixes for the floating point support on Alpha. The Linux/SPARC kernel has
315 also some bugs in the FPU emulation code (as of Linux 2.2.0).
d32a4020
UD
316- Other tools might have problems. For example bash 2.03 gives a
317 segmentation fault running the tst-rpmatch.sh test script.
b0610668 318
7fd18ea2
UD
319?? What is symbol versioning good for? Do I need it?
320
321{AJ} Symbol versioning solves problems that are related to interface
322changes. One version of an interface might have been introduced in a
323previous version of the GNU C library but the interface or the semantics of
324the function has been changed in the meantime. For binary compatibility
325with the old library, a newer library needs to still have the old interface
b1418d8f 326for old programs. On the other hand, new programs should use the new
7fd18ea2 327interface. Symbol versioning is the solution for this problem. The GNU
b1418d8f
UD
328libc version 2.1 uses symbol versioning by default if the installed binutils
329supports it.
7fd18ea2 330
b1418d8f
UD
331We don't advise building without symbol versioning, since you lose binary
332compatibility - forever! The binary compatibility you lose is not only
333against the previous version of the GNU libc (version 2.0) but also against
334all future versions.
7fd18ea2 335
bee1e289
UD
336?? How can I compile on my fast ix86 machine a working libc for my slow
337 i386? After installing libc, programs abort with "Illegal
338 Instruction".
339
340{AJ} glibc and gcc might generate some instructions on your machine that
341aren't available on i386. You've got to tell glibc that you're configuring
342for i386 with adding i386 as your machine, for example:
343
344 ../configure --prefix=/usr i386-pc-linux-gnu
345
346And you need to tell gcc to only generate i386 code, just add `-mcpu=i386'
347(just -m386 doesn't work) to your CFLAGS.
348
349{UD} This applies not only to the i386. Compiling on a i686 for any older
350model will also fail if the above methods are not used.
351
b2b28911
UD
352?? `make' complains about a missing dlfcn/libdl.so when building
353 malloc/libmemprof.so. How can I fix this?
354
355{AJ} Older make version (<= 3.78.90) have a bug which was hidden by a bug in
2bbc70d5 356glibc (<= 2.1.2). You need to upgrade make to a newer or fixed version.
b2b28911
UD
357
358After upgrading make, you should remove the file sysd-sorted in your build
359directory. The problem is that the broken make creates a wrong order for
360one list in that file. The list has to be recreated with the new make -
361which happens if you remove the file.
362
363You might encounter this bug also in other situations where make scans
2bbc70d5
AJ
364directories. I strongly advise to upgrade your make version to 3.79 or
365newer.
b2b28911 366
bee1e289 367
92ec318f
AJ
368??mips Which tools should I use for MIPS?
369
4d2adf29
AJ
370{AJ} You should use the current development version of gcc 2.97 from CVS.
371gcc 2.95.x does not work correctly on mips-linux.
92ec318f 372
4d2adf29
AJ
373You need also recent binutils, anything before and including 2.10 will not
374work correctly. Either try the Linux binutils 2.10.0.33 from HJ Lu or the
92ec318f
AJ
375current development version from CVS of binutils.
376
377For details check also my page <http://www.suse.de/~aj/glibc-mips.html>.
378
61952351
UD
379? Installation and configuration issues
380
381?? Can I replace the libc on my Linux system with GNU libc?
382
f12944ec
UD
383{UD} You cannot replace any existing libc for Linux with GNU libc. It is
384binary incompatible and therefore has a different major version. You can,
385however, install it alongside your existing libc.
61952351
UD
386
387For Linux there are three major libc versions:
388 libc-4 a.out libc
389 libc-5 original ELF libc
390 libc-6 GNU libc
391
f12944ec
UD
392You can have any combination of these three installed. For more information
393consult documentation for shared library handling. The Makefiles of GNU
394libc will automatically generate the needed symbolic links which the linker
395will use.
61952351
UD
396
397?? How do I configure GNU libc so that the essential libraries
398 like libc.so go into /lib and the other into /usr/lib?
399
400{UD,AJ} Like all other GNU packages GNU libc is designed to use a base
401directory and install all files relative to this. The default is
f12944ec
UD
402/usr/local, because this is safe (it will not damage the system if installed
403there). If you wish to install GNU libc as the primary C library on your
404system, set the base directory to /usr (i.e. run configure --prefix=/usr
405<other_options>). Note that this can damage your system; see ?safety for
406details.
407
408Some systems like Linux have a filesystem standard which makes a difference
409between essential libraries and others. Essential libraries are placed in
410/lib because this directory is required to be located on the same disk
411partition as /. The /usr subtree might be found on another
412partition/disk. If you configure for Linux with --prefix=/usr, then this
413will be done automatically.
61952351
UD
414
415To install the essential libraries which come with GNU libc in /lib on
f12944ec
UD
416systems other than Linux one must explicitly request it. Autoconf has no
417option for this so you have to use a `configparms' file (see the `INSTALL'
418file for details). It should contain:
61952351
UD
419
420slibdir=/lib
421sysconfdir=/etc
422
f12944ec
UD
423The first line specifies the directory for the essential libraries, the
424second line the directory for system configuration files.
61952351
UD
425
426??safety How should I avoid damaging my system when I install GNU libc?
427
f12944ec
UD
428{ZW} If you wish to be cautious, do not configure with --prefix=/usr. If
429you don't specify a prefix, glibc will be installed in /usr/local, where it
430will probably not break anything. (If you wish to be certain, set the
431prefix to something like /usr/local/glibc2 which is not used for anything.)
61952351
UD
432
433The dangers when installing glibc in /usr are twofold:
434
435* glibc will overwrite the headers in /usr/include. Other C libraries
27e309c1
UD
436 install a different but overlapping set of headers there, so the effect
437 will probably be that you can't compile anything. You need to rename
438 /usr/include out of the way before running `make install'. (Do not throw
439 it away; you will then lose the ability to compile programs against your
440 old libc.)
61952351
UD
441
442* None of your old libraries, static or shared, can be used with a
443 different C library major version. For shared libraries this is not a
444 problem, because the filenames are different and the dynamic linker
445 will enforce the restriction. But static libraries have no version
446 information. You have to evacuate all the static libraries in
447 /usr/lib to a safe location.
448
449The situation is rather similar to the move from a.out to ELF which
450long-time Linux users will remember.
451
452?? Do I need to use GNU CC to compile programs that will use the
453 GNU C Library?
454
f12944ec
UD
455{ZW} In theory, no; the linker does not care, and the headers are supposed
456to check for GNU CC before using its extensions to the C language.
61952351 457
f12944ec
UD
458However, there are currently no ports of glibc to systems where another
459compiler is the default, so no one has tested the headers extensively
460against another compiler. You may therefore encounter difficulties. If you
461do, please report them as bugs.
61952351
UD
462
463Also, in several places GNU extensions provide large benefits in code
464quality. For example, the library has hand-optimized, inline assembly
f12944ec
UD
465versions of some string functions. These can only be used with GCC. See
466?string for details.
61952351
UD
467
468??crypt When linking with the new libc I get unresolved symbols
469 `crypt' and `setkey'. Why aren't these functions in the
470 libc anymore?
471
61952351 472
6abca68d 473{} Removed. Does not apply anymore.
61952351
UD
474
475?? When I use GNU libc on my Linux system by linking against
476 the libc.so which comes with glibc all I get is a core dump.
477
f12944ec 478{UD} On Linux, gcc sets the dynamic linker to /lib/ld-linux.so.1 unless the
b3864d70 479user specifies a --dynamic-linker argument. This is the name of the libc5
f12944ec 480dynamic linker, which does not work with glibc.
61952351 481
a379e56a
UD
482For casual use of GNU libc you can just specify to the linker
483 --dynamic-linker=/lib/ld-linux.so.2
61952351 484
f12944ec 485which is the glibc dynamic linker, on Linux systems. On other systems the
a379e56a
UD
486name is /lib/ld.so.1. When linking via gcc, you've got to add
487 -Wl,--dynamic-linker=/lib/ld-linux.so.2
488
489to the gcc command line.
61952351 490
f12944ec
UD
491To change your environment to use GNU libc for compiling you need to change
492the `specs' file of your gcc. This file is normally found at
61952351
UD
493
494 /usr/lib/gcc-lib/<arch>/<version>/specs
495
496In this file you have to change a few things:
497
498- change `ld-linux.so.1' to `ld-linux.so.2'
499
500- remove all expression `%{...:-lgmon}'; there is no libgmon in glibc
501
502- fix a minor bug by changing %{pipe:-} to %|
503
f12944ec
UD
504Here is what the gcc-2.7.2 specs file should look like when GNU libc is
505installed at /usr:
61952351
UD
506
507-----------------------------------------------------------------------
508*asm:
509%{V} %{v:%{!V:-V}} %{Qy:} %{!Qn:-Qy} %{n} %{T} %{Ym,*} %{Yd,*} %{Wa,*:%*}
510
511*asm_final:
512%|
513
514*cpp:
515%{fPIC:-D__PIC__ -D__pic__} %{fpic:-D__PIC__ -D__pic__} %{!m386:-D__i486__} %{posix:-D_POSIX_SOURCE} %{pthread:-D_REENTRANT}
516
517*cc1:
518%{profile:-p}
519
520*cc1plus:
521
522
523*endfile:
524%{!shared:crtend.o%s} %{shared:crtendS.o%s} crtn.o%s
525
526*link:
527-m elf_i386 %{shared:-shared} %{!shared: %{!ibcs: %{!static: %{rdynamic:-export-dynamic} %{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2}} %{static:-static}}}
528
529*lib:
530%{!shared: %{pthread:-lpthread} %{profile:-lc_p} %{!profile: -lc}}
531
532*libgcc:
533-lgcc
534
535*startfile:
536%{!shared: %{pg:gcrt1.o%s} %{!pg:%{p:gcrt1.o%s} %{!p:%{profile:gcrt1.o%s} %{!profile:crt1.o%s}}}} crti.o%s %{!shared:crtbegin.o%s} %{shared:crtbeginS.o%s}
537
538*switches_need_spaces:
539
540
541*signed_char:
542%{funsigned-char:-D__CHAR_UNSIGNED__}
543
544*predefines:
545-D__ELF__ -Dunix -Di386 -Dlinux -Asystem(unix) -Asystem(posix) -Acpu(i386) -Amachine(i386)
546
547*cross_compile:
5480
549
550*multilib:
551. ;
552
553-----------------------------------------------------------------------
554
f12944ec
UD
555Things get a bit more complicated if you have GNU libc installed in some
556other place than /usr, i.e., if you do not want to use it instead of the old
557libc. In this case the needed startup files and libraries are not found in
558the regular places. So the specs file must tell the compiler and linker
559exactly what to use.
61952351
UD
560
561Version 2.7.2.3 does and future versions of GCC will automatically
562provide the correct specs.
563
564?? Looking through the shared libc file I haven't found the
565 functions `stat', `lstat', `fstat', and `mknod' and while
566 linking on my Linux system I get error messages. How is
567 this supposed to work?
568
f12944ec
UD
569{RM} Believe it or not, stat and lstat (and fstat, and mknod) are supposed
570to be undefined references in libc.so.6! Your problem is probably a missing
571or incorrect /usr/lib/libc.so file; note that this is a small text file now,
572not a symlink to libc.so.6. It should look something like this:
61952351 573
71bedb76 574GROUP ( libc.so.6 libc_nonshared.a )
61952351 575
83f6a990 576??excpt When I run an executable on one system which I compiled on
d89e7a96
UD
577 another, I get dynamic linker errors. Both systems have the same
578 version of glibc installed. What's wrong?
579
580{ZW} Glibc on one of these systems was compiled with gcc 2.7 or 2.8, the
581other with egcs (any version). Egcs has functions in its internal
582`libgcc.a' to support exception handling with C++. They are linked into
583any program or dynamic library compiled with egcs, whether it needs them or
584not. Dynamic libraries then turn around and export those functions again
585unless special steps are taken to prevent them.
586
587When you link your program, it resolves its references to the exception
588functions to the ones exported accidentally by libc.so. That works fine as
589long as libc has those functions. On the other system, libc doesn't have
590those functions because it was compiled by gcc 2.8, and you get undefined
591symbol errors. The symbols in question are named things like
592`__register_frame_info'.
593
594For glibc 2.0, the workaround is to not compile libc with egcs. We've also
595incorporated a patch which should prevent the EH functions sneaking into
596libc. It doesn't matter what compiler you use to compile your program.
597
598For glibc 2.1, we've chosen to do it the other way around: libc.so
599explicitly provides the EH functions. This is to prevent other shared
57b4b78a
UD
600libraries from doing it.
601
602{UD} Starting with glibc 2.1.1 you can compile glibc with gcc 2.8.1 or
603newer since we have explicitly add references to the functions causing the
604problem. But you nevertheless should use EGCS for other reasons
605(see ?binsize).
d89e7a96 606
83f6a990
UD
607{GK} On some Linux distributions for PowerPC, you can see this when you have
608built gcc or egcs from the Web sources (gcc versions 2.95 or earlier), then
609re-built glibc. This happens because in these versions of gcc, exception
610handling is implemented using an older method; the people making the
611distributions are a little ahead of their time.
612
613A quick solution to this is to find the libgcc.a file that came with the
6e8afc1c 614distribution (it would have been installed under /usr/lib/gcc-lib), do
83f6a990
UD
615`ar x libgcc.a frame.o' to get the frame.o file out, and add a line saying
616`LDLIBS-c.so += frame.o' to the file `configparms' in the directory you're
617building in. You can check you've got the right `frame.o' file by running
618`nm frame.o' and checking that it has the symbols defined that you're
619missing.
620
621This will let you build glibc with the C compiler. The C++ compiler
622will still be binary incompatible with any C++ shared libraries that
623you got with your distribution.
624
61952351
UD
625?? How can I compile gcc 2.7.2.1 from the gcc source code using
626 glibc 2.x?
627
f12944ec 628{AJ} There's only correct support for glibc 2.0.x in gcc 2.7.2.3 or later.
5ef50d00 629But you should get at least gcc 2.95.2.1 (or later versions) instead.
61952351
UD
630
631?? The `gencat' utility cannot process the catalog sources which
632 were used on my Linux libc5 based system. Why?
633
f12944ec
UD
634{UD} The `gencat' utility provided with glibc complies to the XPG standard.
635The older Linux version did not obey the standard, so they are not
636compatible.
61952351
UD
637
638To ease the transition from the Linux version some of the non-standard
f12944ec
UD
639features are also present in the `gencat' program of GNU libc. This mainly
640includes the use of symbols for the message number and the automatic
61952351
UD
641generation of header files which contain the needed #defines to map the
642symbols to integers.
643
f12944ec
UD
644Here is a simple SED script to convert at least some Linux specific catalog
645files to the XPG4 form:
61952351
UD
646
647-----------------------------------------------------------------------
648# Change catalog source in Linux specific format to standard XPG format.
649# Ulrich Drepper <drepper@cygnus.com>, 1996.
650#
651/^\$ #/ {
652 h
653 s/\$ #\([^ ]*\).*/\1/
654 x
655 s/\$ #[^ ]* *\(.*\)/\$ \1/
656}
657
658/^# / {
659 s/^# \(.*\)/\1/
660 G
661 s/\(.*\)\n\(.*\)/\2 \1/
662}
663-----------------------------------------------------------------------
664
da2d1bc5
UD
665?? Programs using libc have their messages translated, but other
666 behavior is not localized (e.g. collating order); why?
667
668{ZW} Translated messages are automatically installed, but the locale
f12944ec
UD
669database that controls other behaviors is not. You need to run localedef to
670install this database, after you have run `make install'. For example, to
671set up the French Canadian locale, simply issue the command
da2d1bc5
UD
672
673 localedef -i fr_CA -f ISO-8859-1 fr_CA
674
675Please see localedata/README in the source tree for further details.
676
61952351
UD
677?? I have set up /etc/nis.conf, and the Linux libc 5 with NYS
678 works great. But the glibc NIS+ doesn't seem to work.
679
f12944ec
UD
680{TK} The glibc NIS+ implementation uses a /var/nis/NIS_COLD_START file for
681storing information about the NIS+ server and their public keys, because the
682nis.conf file does not contain all the necessary information. You have to
683copy a NIS_COLD_START file from a Solaris client (the NIS_COLD_START file is
684byte order independent) or generate it with nisinit from the nis-tools
685package; available at
686
50f301a8 687 http://www.suse.de/~kukuk/linux/nisplus.html
61952351 688
da2d1bc5 689?? I have killed ypbind to stop using NIS, but glibc
3dcf8ea6 690 continues using NIS.
4d06461a 691
f12944ec
UD
692{TK} For faster NIS lookups, glibc uses the /var/yp/binding/ files from
693ypbind. ypbind 3.3 and older versions don't always remove these files, so
694glibc will continue to use them. Other BSD versions seem to work correctly.
695Until ypbind 3.4 is released, you can find a patch at
696
66f6a52b 697 <ftp://ftp.kernel.org/pub/linux/utils/net/NIS/ypbind-3.3-glibc4.diff.gz>
a788b6c2 698
3dcf8ea6
UD
699?? Under Linux/Alpha, I always get "do_ypcall: clnt_call:
700 RPC: Unable to receive; errno = Connection refused" when using NIS.
a788b6c2 701
f12944ec
UD
702{TK} You need a ypbind version which is 64bit clean. Some versions are not
70364bit clean. A 64bit clean implementation is ypbind-mt. For ypbind 3.3,
704you need the patch from ftp.kernel.org (See the previous question). I don't
705know about other versions.
a788b6c2 706
4d06461a 707
61952351
UD
708?? After installing glibc name resolving doesn't work properly.
709
f12944ec
UD
710{AJ} You probably should read the manual section describing nsswitch.conf
711(just type `info libc "NSS Configuration File"'). The NSS configuration
712file is usually the culprit.
61952351 713
3dcf8ea6
UD
714
715?? How do I create the databases for NSS?
716
717{AJ} If you have an entry "db" in /etc/nsswitch.conf you should also create
718the database files. The glibc sources contain a Makefile which does the
7fd18ea2 719necessary conversion and calls to create those files. The file is
3dcf8ea6
UD
720`db-Makefile' in the subdirectory `nss' and you can call it with `make -f
721db-Makefile'. Please note that not all services are capable of using a
722database. Currently passwd, group, ethers, protocol, rpc, services shadow
14a6b4e4 723and netgroup are implemented. See also question ?nssdb.
3dcf8ea6 724
61952351
UD
725?? I have /usr/include/net and /usr/include/scsi as symlinks
726 into my Linux source tree. Is that wrong?
727
f12944ec
UD
728{PB} This was necessary for libc5, but is not correct when using glibc.
729Including the kernel header files directly in user programs usually does not
730work (see ?kerhdr). glibc provides its own <net/*> and <scsi/*> header
731files to replace them, and you may have to remove any symlink that you have
732in place before you install glibc. However, /usr/include/asm and
733/usr/include/linux should remain as they were.
61952351
UD
734
735?? Programs like `logname', `top', `uptime' `users', `w' and
736 `who', show incorrect information about the (number of)
737 users on my system. Why?
738
739{MK} See ?getlog.
740
741?? After upgrading to glibc 2.1 with symbol versioning I get
742 errors about undefined symbols. What went wrong?
743
f12944ec
UD
744{AJ} The problem is caused either by wrong program code or tools. In the
745versioned libc a lot of symbols are now local that were global symbols in
746previous versions. It seems that programs linked against older versions
747often accidentally used libc global variables -- something that should not
748happen.
61952351 749
f12944ec
UD
750The only way to fix this is to recompile your program. Sorry, that's the
751price you might have to pay once for quite a number of advantages with
752symbol versioning.
61952351
UD
753
754?? When I start the program XXX after upgrading the library
755 I get
756 XXX: Symbol `_sys_errlist' has different size in shared
757 object, consider re-linking
758 Why? What should I do?
759
f12944ec
UD
760{UD} As the message says, relink the binary. The problem is that a few
761symbols from the library can change in size and there is no way to avoid
762this. _sys_errlist is a good example. Occasionally there are new error
763numbers added to the kernel and this must be reflected at user level,
764breaking programs that refer to them directly.
61952351 765
f12944ec
UD
766Such symbols should normally not be used at all. There are mechanisms to
767avoid using them. In the case of _sys_errlist, there is the strerror()
768function which should _always_ be used instead. So the correct fix is to
769rewrite that part of the application.
61952351 770
f12944ec
UD
771In some situations (especially when testing a new library release) it might
772be possible that a symbol changed size when that should not have happened.
773So in case of doubt report such a warning message as a problem.
61952351 774
da2d1bc5
UD
775?? What do I need for C++ development?
776
d89e7a96
UD
777{HJ,AJ} You need either egcs 1.1 which comes directly with libstdc++ or
778gcc-2.8.1 together with libstdc++ 2.8.1.1. egcs 1.1 has the better C++
779support and works directly with glibc 2.1. If you use gcc-2.8.1 with
780libstdc++ 2.8.1.1, you need to modify libstdc++ a bit. A patch is available
781as:
66f6a52b 782 <ftp://alpha.gnu.org/gnu/libstdc++-2.8.1.1-glibc2.1-diff.gz>
d89e7a96
UD
783
784Please note that libg++ 2.7.2 (and the Linux Versions 2.7.2.x) doesn't work
785very well with the GNU C library due to vtable thunks. If you're upgrading
786from glibc 2.0.x to 2.1 you have to recompile libstdc++ since the library
787compiled for 2.0 is not compatible due to the new Large File Support (LFS)
788in version 2.1.
fb98e2bf
UD
789
790{UD} But since in the case of a shared libstdc++ the version numbers should
791be different existing programs will continue to work.
da2d1bc5 792
6ca96fe2
UD
793?? Even statically linked programs need some shared libraries
794 which is not acceptable for me. What can I do?
795
f12944ec
UD
796{AJ} NSS (for details just type `info libc "Name Service Switch"') won't
797work properly without shared libraries. NSS allows using different services
798(e.g. NIS, files, db, hesiod) by just changing one configuration file
799(/etc/nsswitch.conf) without relinking any programs. The only disadvantage
800is that now static libraries need to access shared libraries. This is
801handled transparently by the GNU C library.
6ca96fe2 802
f12944ec
UD
803A solution is to configure glibc with --enable-static-nss. In this case you
804can create a static binary that will use only the services dns and files
805(change /etc/nsswitch.conf for this). You need to link explicitly against
806all these services. For example:
6ca96fe2 807
b15cb495
UD
808 gcc -static test-netdb.c -o test-netdb \
809 -Wl,--start-group -lc -lnss_files -lnss_dns -lresolv -Wl,--end-group
6ca96fe2
UD
810
811The problem with this approach is that you've got to link every static
812program that uses NSS routines with all those libraries.
813
814{UD} In fact, one cannot say anymore that a libc compiled with this
815option is using NSS. There is no switch anymore. Therefore it is
816*highly* recommended *not* to use --enable-static-nss since this makes
817the behaviour of the programs on the system inconsistent.
818
bf47fa23
UD
819?? I just upgraded my Linux system to glibc and now I get
820 errors whenever I try to link any program.
821
822{ZW} This happens when you have installed glibc as the primary C library but
823have stray symbolic links pointing at your old C library. If the first
824`libc.so' the linker finds is libc 5, it will use that. Your program
825expects to be linked with glibc, so the link fails.
826
827The most common case is that glibc put its `libc.so' in /usr/lib, but there
828was a `libc.so' from libc 5 in /lib, which gets searched first. To fix the
829problem, just delete /lib/libc.so. You may also need to delete other
830symbolic links in /lib, such as /lib/libm.so if it points to libm.so.5.
831
0e0316f4
UD
832{AJ} The perl script test-installation.pl which is run as last step during
833an installation of glibc that is configured with --prefix=/usr should help
834detect these situations. If the script reports problems, something is
835really screwed up.
836
48244d09
UD
837?? When I use nscd the machine freezes.
838
d89e7a96
UD
839{UD} You cannot use nscd with Linux 2.0.*. There is functionality missing
840in the kernel and work-arounds are not suitable. Besides, some parts of the
841kernel are too buggy when it comes to using threads.
48244d09 842
440d13e2 843If you need nscd, you have to use at least a 2.1 kernel.
48244d09
UD
844
845Note that I have at this point no information about any other platform.
846
0155a773
UD
847?? I need lots of open files. What do I have to do?
848
849{AJ} This is at first a kernel issue. The kernel defines limits with
850OPEN_MAX the number of simultaneous open files and with FD_SETSIZE the
851number of used file descriptors. You need to change these values in your
e8b1163e 852kernel and recompile the kernel so that the kernel allows more open
0155a773
UD
853files. You don't necessarily need to recompile the GNU C library since the
854only place where OPEN_MAX and FD_SETSIZE is really needed in the library
855itself is the size of fd_set which is used by select.
856
7b19af68
UD
857The GNU C library is now select free. This means it internally has no
858limits imposed by the `fd_set' type. Instead all places where the
0155a773
UD
859functionality is needed the `poll' function is used.
860
861If you increase the number of file descriptors in the kernel you don't need
6e8afc1c 862to recompile the C library.
0155a773
UD
863
864{UD} You can always get the maximum number of file descriptors a process is
865allowed to have open at any time using
866
867 number = sysconf (_SC_OPEN_MAX);
868
869This will work even if the kernel limits change.
870
d8a167a5
UD
871?? How do I get the same behavior on parsing /etc/passwd and
872 /etc/group as I have with libc5 ?
873
874{TK} The name switch setup in /etc/nsswitch.conf selected by most Linux
875distributions does not support +/- and netgroup entries in the files like
876/etc/passwd. Though this is the preferred setup some people might have
877setups coming over from the libc5 days where it was the default to recognize
878lines like this. To get back to the old behaviour one simply has to change
879the rules for passwd, group, and shadow in the nsswitch.conf file as
880follows:
881
882passwd: compat
883group: compat
884shadow: compat
885
886passwd_compat: nis
887group_compat: nis
888shadow_compat: nis
889
4f7ea427 890??libs What needs to be recompiled when upgrading from glibc 2.0 to glibc
0f6052a8
UD
891 2.1?
892
893{AJ,CG} If you just upgrade the glibc from 2.0.x (x <= 7) to 2.1, binaries
894that have been linked against glibc 2.0 will continue to work.
895
896If you compile your own binaries against glibc 2.1, you also need to
70cafe50
UD
897recompile some other libraries. The problem is that libio had to be changed
898and therefore libraries that are based or depend on the libio of glibc,
899e.g. ncurses, slang and most C++ libraries, need to be recompiled. If you
900experience strange segmentation faults in your programs linked against glibc
9012.1, you might need to recompile your libraries.
0f6052a8
UD
902
903Another problem is that older binaries that were linked statically against
904glibc 2.0 will reference the older nss modules (libnss_files.so.1 instead of
905libnss_files.so.2), so don't remove them. Also, the old glibc-2.0 compiled
906static libraries (libfoo.a) which happen to depend on the older libio
50b65db1
UD
907behavior will be broken by the glibc 2.1 upgrade. We plan to produce a
908compatibility library that people will be able to link in if they want
909to compile a static library generated against glibc 2.0 into a program
910on a glibc 2.1 system. You just add -lcompat and you should be fine.
911
912The glibc-compat add-on will provide the libcompat.a library, the older
913nss modules, and a few other files. Together, they should make it
914possible to do development with old static libraries on a glibc 2.1
8d8c6efa 915system. This add-on is still in development. You can get it from
df08cc56 916 <ftp://alpha.gnu.org/gnu/glibc/glibc-compat-2.1.tar.gz>
50b65db1 917but please keep in mind that it is experimental.
0155a773 918
b7398be5
UD
919?? Why is extracting files via tar so slow?
920
921{AJ} Extracting of tar archives might be quite slow since tar has to look up
922userid and groupids and doesn't cache negative results. If you have nis or
923nisplus in your /etc/nsswitch.conf for the passwd and/or group database,
924each file extractions needs a network connection. There are two possible
925solutions:
926
927- do you really need NIS/NIS+ (some Linux distributions add by default
928 nis/nisplus even if it's not needed)? If not, just remove the entries.
929
930- if you need NIS/NIS+, use the Name Service Cache Daemon nscd that comes
931 with glibc 2.1.
932
2ee511d9
UD
933?? Compiling programs I get parse errors in libio.h (e.g. "parse error
934 before `_IO_seekoff'"). How should I fix this?
935
936{AJ} You might get the following errors when upgrading to glibc 2.1:
937
938 In file included from /usr/include/stdio.h:57,
939 from ...
940 /usr/include/libio.h:335: parse error before `_IO_seekoff'
941 /usr/include/libio.h:335: parse error before `_G_off64_t'
942 /usr/include/libio.h:336: parse error before `_IO_seekpos'
943 /usr/include/libio.h:336: parse error before `_G_fpos64_t'
944
945The problem is a wrong _G_config.h file in your include path. The
946_G_config.h file that comes with glibc 2.1 should be used and not one from
947libc5 or from a compiler directory. To check which _G_config.h file the
948compiler uses, compile your program with `gcc -E ...|grep G_config.h' and
949remove that file. Your compiler should pick up the file that has been
950installed by glibc 2.1 in your include directory.
951
4f7ea427
UD
952?? After upgrading to glibc 2.1, libraries that were compiled against
953 glibc 2.0.x don't work anymore.
954
955{AJ} See ?libs.
956
14a6b4e4
UD
957??nssdb What happened to the Berkeley DB libraries? Can I still use db
958 in /etc/nsswitch.conf?
959
960{AJ} Due to too many incompatible changes in disk layout and API of Berkeley
961DB and a too tight coupling of libc and libdb, the db library has been
962removed completely from glibc 2.2. The only place that really used the
963Berkeley DB was the NSS db module.
964
965The NSS db module has been rewritten to support a number of different
966versions of Berkeley DB for the NSS db module. Currently the releases 2.x
967and 3.x of Berkeley DB are supported. The older db 1.85 library is not
968supported. You can use the version from glibc 2.1.x or download a version
969from Sleepycat Software (http://www.sleepycat.com). The library has to be
970compiled as shared library and installed in the system lib directory
971(normally /lib). The library needs to have a special soname to be found by
972the NSS module.
973
974If public structures change in a new Berkeley db release, this needs to be
975reflected in glibc.
976
977Currently the code searches for libraries with a soname of "libdb.so.3"
978(that's the name from db 2.4.14 which comes with glibc 2.1.x) and
979"libdb-3.0.so" (the name used by db 3.0.55 as default).
980
be5dc44c
AJ
981The nss_db module is now in a separate package since it requires a database
982library being available.
983
984?? What has do be done when upgrading to glibc 2.2?
985
986{AJ} The upgrade to glibc 2.2 should run smoothly, there's in general no
987need to recompile programs or libraries. Nevertheless, some changes might
988be needed after upgrading:
989- The utmp daemon has been removed and is not supported by glibc anymore.
990 If it has been in use, it should be switched off.
991- Programs using IPv6 have to be recompiled due to incompatible changes in
992 sockaddr_in6 by the IPv6 working group.
64c07817 993- The Berkeley db libraries have been removed (for details see ?nssdb).
be5dc44c
AJ
994- The format of the locale files has changed, all locales should be
995 regenerated with localedef. All statically linked applications which use
996 i18n should be recompiled, otherwise they'll not be localized.
997- glibc comes with a number of new applications. For example ldconfig has
998 been implemented for glibc, the libc5 version of ldconfig is not needed
999 anymore.
1000- There's no more K&R compatibility in the glibc headers. The GNU C library
1001 requires a C compiler that handles especially prototypes correctly.
e090caee 1002 Especially gcc -traditional will not work with glibc headers.
be5dc44c
AJ
1003
1004Please read also the NEWS file which is the authoritative source for this
1005and gives more details for some topics.
1006
4442d7e8
UD
1007?? The makefiles want to do a CVS commit.
1008
1009{UD} Only if you are not specifying the --without-cvs flag at configure
1010time. This is what you always have to use if you are checking sources
1011directly out of the public CVS repository or you have your own private
1012repository.
1013
1324affa
UD
1014?? When compiling C++ programs, I get a compilation error in streambuf.h.
1015
1016{BH} You are using g++ 2.95.2? After upgrading to glibc 2.2, you need to
1017apply a patch to the include files in /usr/include/g++, because the fpos_t
1018type has changed in glibc 2.2. The patch is at
1019http://clisp.cons.org/~haible/gccinclude-glibc-2.2-compat.diff
1020
1021?? When recompiling GCC, I get compilation errors in libio.
1022
5ef50d00
UD
1023{BH} You are trying to recompile gcc 2.95.2? Use gcc 2.95.2.1 instead.
1024This version is needed because the fpos_t type and a few libio internals
1025have changed in glibc 2.2, and gcc 2.95.2.1 contains a corresponding patch.
1324affa 1026
4442d7e8 1027
61952351
UD
1028? Source and binary incompatibilities, and what to do about them
1029
1030?? I expect GNU libc to be 100% source code compatible with
1031 the old Linux based GNU libc. Why isn't it like this?
1032
f12944ec
UD
1033{DMT,UD} Not every extension in Linux libc's history was well thought-out.
1034In fact it had a lot of problems with standards compliance and with
1035cleanliness. With the introduction of a new version number these errors can
1036now be corrected. Here is a list of the known source code
61952351
UD
1037incompatibilities:
1038
1039* _GNU_SOURCE: glibc does not make the GNU extensions available
1040 automatically. If a program depends on GNU extensions or some
1041 other non-standard functionality, it is necessary to compile it
1042 with the C compiler option -D_GNU_SOURCE, or better, to put
1043 `#define _GNU_SOURCE' at the beginning of your source files, before
1044 any C library header files are included. This difference normally
1045 manifests itself in the form of missing prototypes and/or data type
1046 definitions. Thus, if you get such errors, the first thing you
1047 should do is try defining _GNU_SOURCE and see if that makes the
1048 problem go away.
1049
1050 For more information consult the file `NOTES' in the GNU C library
1051 sources.
1052
1053* reboot(): GNU libc sanitizes the interface of reboot() to be more
1054 compatible with the interface used on other OSes. reboot() as
1055 implemented in glibc takes just one argument. This argument
1056 corresponds to the third argument of the Linux reboot system call.
1057 That is, a call of the form reboot(a, b, c) needs to be changed into
1058 reboot(c). Beside this the header <sys/reboot.h> defines the needed
1059 constants for the argument. These RB_* constants should be used
1060 instead of the cryptic magic numbers.
1061
1062* swapon(): the interface of this function didn't change, but the
1063 prototype is in a separate header file <sys/swap.h>. This header
1064 file also provides the SWAP_* constants defined by <linux/swap.h>;
1065 you should use them for the second argument to swapon().
1066
1067* errno: If a program uses the variable "errno", then it _must_
1068 include <errno.h>. The old libc often (erroneously) declared this
1069 variable implicitly as a side-effect of including other libc header
1070 files. glibc is careful to avoid such namespace pollution, which,
1071 in turn, means that you really need to include the header files that
1072 you depend on. This difference normally manifests itself in the
1073 form of the compiler complaining about references to an undeclared
1074 symbol "errno".
1075
1076* Linux-specific syscalls: All Linux system calls now have appropriate
1077 library wrappers and corresponding declarations in various header files.
1078 This is because the syscall() macro that was traditionally used to
1079 work around missing syscall wrappers are inherently non-portable and
1080 error-prone. The following table lists all the new syscall stubs,
1081 the header-file declaring their interface and the system call name.
1082
1083 syscall name: wrapper name: declaring header file:
1084 ------------- ------------- ----------------------
1085 bdflush bdflush <sys/kdaemon.h>
1086 syslog ksyslog_ctl <sys/klog.h>
1087
1088* lpd: Older versions of lpd depend on a routine called _validuser().
1089 The library does not provide this function, but instead provides
1090 __ivaliduser() which has a slightly different interface. Simply
1091 upgrading to a newer lpd should fix this problem (e.g., the 4.4BSD
1092 lpd is known to be working).
1093
1094* resolver functions/BIND: like on many other systems the functions of
1095 the resolver library are not included in libc itself. There is a
1096 separate library libresolv. If you get undefined symbol errors for
1097 symbols starting with `res_*' simply add -lresolv to your linker
1098 command line.
1099
1100* the `signal' function's behavior corresponds to the BSD semantic and
1101 not the SysV semantic as it was in libc-5. The interface on all GNU
1102 systems shall be the same and BSD is the semantic of choice. To use
1103 the SysV behavior simply use `sysv_signal', or define _XOPEN_SOURCE.
1104 See ?signal for details.
1105
1106??getlog Why does getlogin() always return NULL on my Linux box?
1107
f12944ec
UD
1108{UD} The GNU C library has a format for the UTMP and WTMP file which differs
1109from what your system currently has. It was extended to fulfill the needs
1110of the next years when IPv6 is introduced. The record size is different and
1111some fields have different positions. The files written by functions from
1112the one library cannot be read by functions from the other library. Sorry,
1113but this is what a major release is for. It's better to have a cut now than
1114having no means to support the new techniques later.
61952351 1115
61952351
UD
1116?? Where are the DST_* constants found in <sys/time.h> on many
1117 systems?
1118
f12944ec
UD
1119{UD} These constants come from the old BSD days and are not used anymore
1120(libc5 does not actually implement the handling although the constants are
1121defined).
61952351 1122
f12944ec 1123Instead GNU libc contains zone database support and compatibility code for
8b4a4715
UD
1124POSIX TZ environment variable handling. For former is very much preferred
1125(see ?tzdb).
61952351
UD
1126
1127?? The prototypes for `connect', `accept', `getsockopt',
1128 `setsockopt', `getsockname', `getpeername', `send',
1129 `sendto', and `recvfrom' are different in GNU libc from
1130 any other system I saw. This is a bug, isn't it?
1131
f12944ec
UD
1132{UD} No, this is no bug. This version of GNU libc already follows the new
1133Single Unix specifications (and I think the POSIX.1g draft which adopted the
1134solution). The type for a parameter describing a size is now `socklen_t', a
1135new type.
61952351
UD
1136
1137??kerhdr On Linux I've got problems with the declarations in Linux
1138 kernel headers.
1139
f12944ec
UD
1140{UD,AJ} On Linux, the use of kernel headers is reduced to the minimum. This
1141gives Linus the ability to change the headers more freely. Also, user
a9ddb793 1142programs are now insulated from changes in the size of kernel data
f12944ec 1143structures.
61952351 1144
f12944ec
UD
1145For example, the sigset_t type is 32 or 64 bits wide in the kernel. In
1146glibc it is 1024 bits wide. This guarantees that when the kernel gets a
1147bigger sigset_t (for POSIX.1e realtime support, say) user programs will not
1148have to be recompiled. Consult the header files for more information about
1149the changes.
61952351 1150
f12944ec
UD
1151Therefore you shouldn't include Linux kernel header files directly if glibc
1152has defined a replacement. Otherwise you might get undefined results because
1153of type conflicts.
61952351
UD
1154
1155?? I don't include any kernel headers myself but the compiler
1156 still complains about redeclarations of types in the kernel
1157 headers.
1158
f12944ec
UD
1159{UD} The kernel headers before Linux 2.1.61 and 2.0.32 don't work correctly
1160with glibc. Compiling C programs is possible in most cases but C++ programs
1161have (due to the change of the name lookups for `struct's) problems. One
1162prominent example is `struct fd_set'.
61952351 1163
f12944ec
UD
1164There might be some problems left but 2.1.61/2.0.32 fix most of the known
1165ones. See the BUGS file for other known problems.
61952351
UD
1166
1167??signal Why don't signals interrupt system calls anymore?
1168
f12944ec
UD
1169{ZW} By default GNU libc uses the BSD semantics for signal(), unlike Linux
1170libc 5 which used System V semantics. This is partially for compatibility
1171with other systems and partially because the BSD semantics tend to make
1172programming with signals easier.
61952351
UD
1173
1174There are three differences:
1175
1176* BSD-style signals that occur in the middle of a system call do not
1177 affect the system call; System V signals cause the system call to
1178 fail and set errno to EINTR.
1179
1180* BSD signal handlers remain installed once triggered. System V signal
1181 handlers work only once, so one must reinstall them each time.
1182
1183* A BSD signal is blocked during the execution of its handler. In other
1184 words, a handler for SIGCHLD (for example) does not need to worry about
1185 being interrupted by another SIGCHLD. It may, however, be interrupted
1186 by other signals.
1187
1188There is general consensus that for `casual' programming with signals, the
1189BSD semantics are preferable. You don't need to worry about system calls
1190returning EINTR, and you don't need to worry about the race conditions
1191associated with one-shot signal handlers.
1192
1193If you are porting an old program that relies on the old semantics, you can
1194quickly fix the problem by changing signal() to sysv_signal() throughout.
1195Alternatively, define _XOPEN_SOURCE before including <signal.h>.
1196
1197For new programs, the sigaction() function allows you to specify precisely
1198how you want your signals to behave. All three differences listed above are
1199individually switchable on a per-signal basis with this function.
1200
f12944ec
UD
1201If all you want is for one specific signal to cause system calls to fail and
1202return EINTR (for example, to implement a timeout) you can do this with
61952351
UD
1203siginterrupt().
1204
1205
1206??string I've got errors compiling code that uses certain string
1207 functions. Why?
1208
f12944ec 1209{AJ} glibc 2.1 has special string functions that are faster than the normal
fdacb17d 1210library functions. Some of the functions are additionally implemented as
a9d75566
UD
1211inline functions and others as macros. This might lead to problems with
1212existing codes but it is explicitly allowed by ISO C.
61952351
UD
1213
1214The optimized string functions are only used when compiling with
fdacb17d 1215optimizations (-O1 or higher). The behavior can be changed with two feature
f12944ec 1216macros:
61952351
UD
1217
1218* __NO_STRING_INLINES: Don't do any string optimizations.
1219* __USE_STRING_INLINES: Use assembly language inline functions (might
1220 increase code size dramatically).
1221
f12944ec
UD
1222Since some of these string functions are now additionally defined as macros,
1223code like "char *strncpy();" doesn't work anymore (and is unnecessary, since
fdacb17d 1224<string.h> has the necessary declarations). Either change your code or
f12944ec 1225define __NO_STRING_INLINES.
61952351 1226
f12944ec
UD
1227{UD} Another problem in this area is that gcc still has problems on machines
1228with very few registers (e.g., ix86). The inline assembler code can require
1229almost all the registers and the register allocator cannot always handle
1230this situation.
61952351
UD
1231
1232One can disable the string optimizations selectively. Instead of writing
1233
1234 cp = strcpy (foo, "lkj");
1235
1236one can write
1237
1238 cp = (strcpy) (foo, "lkj");
1239
1240This disables the optimization for that specific call.
1241
4775243a
UD
1242?? I get compiler messages "Initializer element not constant" with
1243 stdin/stdout/stderr. Why?
1244
1245{RM,AJ} Constructs like:
66f6a52b 1246 static FILE *InPtr = stdin;
4775243a 1247
fdacb17d
UD
1248lead to this message. This is correct behaviour with glibc since stdin is
1249not a constant expression. Please note that a strict reading of ISO C does
f12944ec 1250not allow above constructs.
4775243a 1251
f12944ec
UD
1252One of the advantages of this is that you can assign to stdin, stdout, and
1253stderr just like any other global variable (e.g. `stdout = my_stream;'),
1254which can be very useful with custom streams that you can write with libio
fdacb17d 1255(but beware this is not necessarily portable). The reason to implement it
f12944ec 1256this way were versioning problems with the size of the FILE structure.
4775243a 1257
fdacb17d
UD
1258To fix those programs you've got to initialize the variable at run time.
1259This can be done, e.g. in main, like:
1260
66f6a52b
UD
1261 static FILE *InPtr;
1262 int main(void)
1263 {
1264 InPtr = stdin;
1265 }
fdacb17d
UD
1266
1267or by constructors (beware this is gcc specific):
1268
66f6a52b
UD
1269 static FILE *InPtr;
1270 static void inPtr_construct (void) __attribute__((constructor));
1271 static void inPtr_construct (void) { InPtr = stdin; }
fdacb17d 1272
4775243a
UD
1273
1274?? I can't compile with gcc -traditional (or
1275 -traditional-cpp). Why?
1276
1277{AJ} glibc2 does break -traditional and -traditonal-cpp - and will continue
fdacb17d 1278to do so. For example constructs of the form:
f12944ec 1279
66f6a52b
UD
1280 enum {foo
1281 #define foo foo
1282 }
f12944ec
UD
1283
1284are useful for debugging purposes (you can use foo with your debugger that's
1285why we need the enum) and for compatibility (other systems use defines and
1286check with #ifdef).
4775243a
UD
1287
1288?? I get some errors with `gcc -ansi'. Isn't glibc ANSI compatible?
1289
1290{AJ} The GNU C library is compatible with the ANSI/ISO C standard. If
f12944ec 1291you're using `gcc -ansi', the glibc includes which are specified in the
fdacb17d 1292standard follow the standard. The ANSI/ISO C standard defines what has to be
f12944ec
UD
1293in the include files - and also states that nothing else should be in the
1294include files (btw. you can still enable additional standards with feature
1295flags).
4775243a 1296
f12944ec
UD
1297The GNU C library is conforming to ANSI/ISO C - if and only if you're only
1298using the headers and library functions defined in the standard.
4775243a 1299
4d42000c
UD
1300?? I can't access some functions anymore. nm shows that they do
1301 exist but linking fails nevertheless.
1302
f12944ec
UD
1303{AJ} With the introduction of versioning in glibc 2.1 it is possible to
1304export only those identifiers (functions, variables) that are really needed
1305by application programs and by other parts of glibc. This way a lot of
1306internal interfaces are now hidden. nm will still show those identifiers
1307but marking them as internal. ISO C states that identifiers beginning with
1308an underscore are internal to the libc. An application program normally
1309shouldn't use those internal interfaces (there are exceptions,
1310e.g. __ivaliduser). If a program uses these interfaces, it's broken. These
1311internal interfaces might change between glibc releases or dropped
1312completely.
4d42000c 1313
9de4e203
UD
1314?? When using the db-2 library which comes with glibc is used in
1315 the Perl db modules the testsuite is not passed. This did not
1316 happen with db-1, gdbm, or ndbm.
1317
6abca68d 1318{} Removed. Does not apply anymore.
9de4e203 1319
5148d49f
UD
1320?? The pow() inline function I get when including <math.h> is broken.
1321 I get segmentation faults when I run the program.
1322
1323{UD} Nope, the implementation is correct. The problem is with egcs version
1324prior to 1.1. I.e., egcs 1.0 to 1.0.3 are all broken (at least on Intel).
1325If you have to use this compiler you must define __NO_MATH_INLINES before
1326including <math.h> to prevent the inline functions from being used. egcs 1.1
1327fixes the problem. I don't know about gcc 2.8 and 2.8.1.
1328
05f732b3
UD
1329?? The sys/sem.h file lacks the definition of `union semun'.
1330
1331{UD} Nope. This union has to be provided by the user program. Former glibc
1332versions defined this but it was an error since it does not make much sense
1333when thinking about it. The standards describing the System V IPC functions
1334define it this way and therefore programs must be adopted.
1335
a42134a7
UD
1336?? Why has <netinet/ip_fw.h> disappeared?
1337
1338{AJ} The corresponding Linux kernel data structures and constants are
440d13e2 1339totally different in Linux 2.0 and Linux 2.2. This situation has to be
a42134a7
UD
1340taken care in user programs using the firewall structures and therefore
1341those programs (ipfw is AFAIK the only one) should deal with this problem
1342themselves.
1343
ee586e0e
UD
1344?? I get floods of warnings when I use -Wconversion and include
1345 <string.h> or <math.h>.
1346
1347{ZW} <string.h> and <math.h> intentionally use prototypes to override
1348argument promotion. -Wconversion warns about all these. You can safely
1349ignore the warnings.
1350
1351-Wconversion isn't really intended for production use, only for shakedown
1352compiles after converting an old program to standard C.
1353
4d42000c 1354
49b75f5e
UD
1355?? After upgrading to glibc 2.1, I receive errors about
1356 unresolved symbols, like `_dl_initial_searchlist' and can not
1357 execute any binaries. What went wrong?
1358
1359{AJ} This normally happens if your libc and ld (dynamic linker) are from
1360different releases of glibc. For example, the dynamic linker
1361/lib/ld-linux.so.2 comes from glibc 2.0.x, but the version of libc.so.6 is
1362from glibc 2.1.
1363
1364The path /lib/ld-linux.so.2 is hardcoded in every glibc2 binary but
1365libc.so.6 is searched via /etc/ld.so.cache and in some special directories
1366like /lib and /usr/lib. If you run configure with another prefix than /usr
1367and put this prefix before /lib in /etc/ld.so.conf, your system will break.
1368
1369So what can you do? Either of the following should work:
1370
1371* Run `configure' with the same prefix argument you've used for glibc 2.0.x
1372 so that the same paths are used.
1373* Replace /lib/ld-linux.so.2 with a link to the dynamic linker from glibc
1374 2.1.
1375
1376You can even call the dynamic linker by hand if everything fails. You've
1377got to set LD_LIBRARY_PATH so that the corresponding libc is found and also
1378need to provide an absolute path to your binary:
1379
1380 LD_LIBRARY_PATH=<path-where-libc.so.6-lives> \
1381 <path-where-corresponding-dynamic-linker-lives>/ld-linux.so.2 \
1382 <path-to-binary>/binary
1383
1384For example `LD_LIBRARY_PATH=/libold /libold/ld-linux.so.2 /bin/mv ...'
1385might be useful in fixing a broken system (if /libold contains dynamic
1386linker and corresponding libc).
1387
1388With that command line no path is used. To further debug problems with the
1389dynamic linker, use the LD_DEBUG environment variable, e.g.
1390`LD_DEBUG=help echo' for the help text.
1391
1392If you just want to test this release, don't put the lib directory in
1393/etc/ld.so.conf. You can call programs directly with full paths (as above).
1394When compiling new programs against glibc 2.1, you've got to specify the
1395correct paths to the compiler (option -I with gcc) and linker (options
1396--dynamic-linker, -L and --rpath).
1397
b74656f9 1398?? bonnie reports that char i/o with glibc 2 is much slower than with
9f6b6d8d
UD
1399 libc5. What can be done?
1400
1401{AJ} The GNU C library uses thread safe functions by default and libc5 used
1402non thread safe versions. The non thread safe functions have in glibc the
1403suffix `_unlocked', for details check <stdio.h>. Using `putc_unlocked' etc.
1404instead of `putc' should give nearly the same speed with bonnie (bonnie is a
1405benchmark program for measuring disk access).
1406
9de4e203
UD
1407?? Programs compiled with glibc 2.1 can't read db files made with glibc
1408 2.0. What has changed that programs like rpm break?
1409
6abca68d 1410{} Removed. Does not apply anymore.
9de4e203 1411
8a40ed68
UD
1412?? Autoconf's AC_CHECK_FUNC macro reports that a function exists, but
1413 when I try to use it, it always returns -1 and sets errno to ENOSYS.
1414
1415{ZW} You are using a 2.0 Linux kernel, and the function you are trying to
1416use is only implemented in 2.1/2.2. Libc considers this to be a function
1417which exists, because if you upgrade to a 2.2 kernel, it will work. One
1418such function is sigaltstack.
1419
1420Your program should check at runtime whether the function works, and
1421implement a fallback. Note that Autoconf cannot detect unimplemented
1422functions in other systems' C libraries, so you need to do this anyway.
1423
b5a9efcd
UD
1424?? My program segfaults when I call fclose() on the FILE* returned
1425 from setmntent(). Is this a glibc bug?
1426
1427{GK} No. Don't do this. Use endmntent(), that's what it's for.
1428
1429In general, you should use the correct deallocation routine. For instance,
1430if you open a file using fopen(), you should deallocate the FILE * using
1431fclose(), not free(), even though the FILE * is also a pointer.
1432
1433In the case of setmntent(), it may appear to work in most cases, but it
1434won't always work. Unfortunately, for compatibility reasons, we can't
1435change the return type of setmntent() to something other than FILE *.
1436
49b75f5e 1437
61952351
UD
1438? Miscellaneous
1439
1440?? After I changed configure.in I get `Autoconf version X.Y.
1441 or higher is required for this script'. What can I do?
1442
1443{UD} You have to get the specified autoconf version (or a later one)
2eb45444 1444from your favorite mirror of ftp.gnu.org.
61952351
UD
1445
1446?? When I try to compile code which uses IPv6 headers and
1447 definitions on my Linux 2.x.y system I am in trouble.
1448 Nothing seems to work.
1449
f12944ec
UD
1450{UD} The problem is that IPv6 development still has not reached a point
1451where the headers are stable. There are still lots of incompatible changes
1452made and the libc headers have to follow.
61952351 1453
cb0509a8
UD
1454{PB} The 2.1 release of GNU libc aims to comply with the current versions of
1455all the relevant standards. The IPv6 support libraries for older Linux
1456systems used a different naming convention and so code written to work with
1457them may need to be modified. If the standards make incompatible changes in
1458the future then the libc may need to change again.
1459
1460IPv6 will not work with a 2.0.x kernel. When kernel 2.2 is released it
1461should contain all the necessary support; until then you should use the
3f7b3d9b 1462latest 2.1.x release you can find. As of 98/11/26 the currently recommended
cb0509a8
UD
1463kernel for IPv6 is 2.1.129.
1464
1465Also, as of the 2.1 release the IPv6 API provided by GNU libc is not
b669ab02 1466100% complete.
61952351 1467
8b4a4715 1468??tzdb When I set the timezone by setting the TZ environment variable
73237de3
UD
1469 to EST5EDT things go wrong since glibc computes the wrong time
1470 from this information.
1471
f12944ec
UD
1472{UD} The problem is that people still use the braindamaged POSIX method to
1473select the timezone using the TZ environment variable with a format EST5EDT
8b4a4715
UD
1474or whatever. People, if you insist on using TZ instead of the timezone
1475database (see below), read the POSIX standard, the implemented behaviour is
f12944ec
UD
1476correct! What you see is in fact the result of the decisions made while
1477POSIX.1 was created. We've only implemented the handling of TZ this way to
1478be POSIX compliant. It is not really meant to be used.
1479
1480The alternative approach to handle timezones which is implemented is the
1481correct one to use: use the timezone database. This avoids all the problems
1482the POSIX method has plus it is much easier to use. Simply run the tzselect
1483shell script, answer the question and use the name printed in the end by
8b4a4715
UD
1484making a symlink /etc/localtime pointing to /usr/share/zoneinfo/NAME (NAME
1485is the returned value from tzselect). That's all. You never again have to
1486worry.
f12944ec
UD
1487
1488So, please avoid sending bug reports about time related problems if you use
1489the POSIX method and you have not verified something is really broken by
1490reading the POSIX standards.
73237de3 1491
fdacb17d
UD
1492?? What other sources of documentation about glibc are available?
1493
1494{AJ} The FSF has a page about the GNU C library at
1495<http://www.gnu.org/software/libc/>. The problem data base of open and
1496solved bugs in GNU libc is available at
1497<http://www-gnats.gnu.org:8080/cgi-bin/wwwgnats.pl>. Eric Green has written
14a6b4e4 1498a HowTo for converting from Linux libc5 to glibc2. The HowTo is accessible
fdacb17d
UD
1499via the FSF page and at <http://www.imaxx.net/~thrytis/glibc>. Frodo
1500Looijaard describes a different way installing glibc2 as secondary libc at
1501<http://huizen.dds.nl/~frodol/glibc>.
1502
1503Please note that this is not a complete list.
1504
3f7b3d9b
UD
1505?? The timezone string for Sydney/Australia is wrong since even when
1506 daylight saving time is in effect the timezone string is EST.
1507
1508{UD} The problem for some timezones is that the local authorities decided
1509to use the term "summer time" instead of "daylight saving time". In this
1510case the abbreviation character `S' is the same as the standard one. So,
1511for Sydney we have
1512
1513 Eastern Standard Time = EST
1514 Eastern Summer Time = EST
1515
1516Great! To get this bug fixed convince the authorities to change the laws
1517and regulations of the country this effects. glibc behaves correctly.
1518
eeabe877
UD
1519??make I've build make 3.77 against glibc 2.1 and now make gets
1520 segmentation faults.
1521
6abca68d 1522{} Removed. Does not apply anymore, use make 3.79 or newer.
eeabe877 1523
c63598bf
UD
1524?? Why do so many programs using math functions fail on my AlphaStation?
1525
1526{AO} The functions floor() and floorf() use an instruction that is not
1527implemented in some old PALcodes of AlphaStations. This may cause
1528`Illegal Instruction' core dumps or endless loops in programs that
1529catch these signals. Updating the firmware to a 1999 release has
1530fixed the problem on an AlphaStation 200 4/166.
1531
8892c471
UD
1532?? The conversion table for character set XX does not match with
1533what I expect.
1534
1535{UD} I don't doubt for a minute that some of the conversion tables contain
1536errors. We tried the best we can and relied on automatic generation of the
1537data to prevent human-introduced errors but this still is no guarantee. If
1538you think you found a problem please send a bug report describing it and
1539give an authoritive reference. The latter is important since otherwise
1540the current behaviour is as good as the proposed one.
1541
1542Before doing this look through the list of known problem first:
1543
1544- the GBK (simplified Chinese) encoding is based on Unicode tables. This
1545 is good. These tables, however, differ slightly from the tables used
1546 by the M$ people. The differences are these [+ Unicode, - M$]:
1547
1548 +0xA1AA 0x2015
1549 +0xA844 0x2014
1550 -0xA1AA 0x2014
1551 -0xA844 0x2015
1552
1553 In addition the Unicode tables contain mappings for the GBK characters
1554 0xA8BC, 0xA8BF, 0xA989 to 0xA995, and 0xFE50 to 0xFEA0.
1555
ffa156af
UD
1556- when mapping from EUC-CN to GBK and vice versa we ignore the fact that
1557 the coded character at position 0xA1A4 maps to different Unicode
1558 characters. Since the iconv() implementation can do whatever it wants
1559 if it cannot directly map a character this is a perfectly good solution
1560 since the semantics and appearance of the character does not change.
8892c471 1561
be76803a
UD
1562?? How can I find out which version of glibc I am using in the moment?
1563
1564{UD} If you want to find out about the version from the command line simply
1565run the libc binary. This is probably not possible on all platforms but
1566where it is simply locate the libc DSO and start it as an application. On
1567Linux like
1568
1569 /lib/libc.so.6
1570
1571This will produce all the information you need.
1572
1573What always will work is to use the API glibc provides. Compile and run the
1574following little program to get the version information:
1575
1576~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1577#include <stdio.h>
1578#include <gnu/libc-version.h>
1579int main (void) { puts (gnu_get_libc_version ()); return 0; }
1580~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1581
1582This interface can also obviously be used to perform tests at runtime if
1583this should be necessary.
1584
61952351
UD
1585\f
1586Answers were given by:
1587{UD} Ulrich Drepper, <drepper@cygnus.com>
1588{DMT} David Mosberger-Tang, <davidm@AZStarNet.com>
1589{RM} Roland McGrath, <roland@gnu.org>
14a6b4e4 1590{AJ} Andreas Jaeger, <aj@suse.de>
61952351
UD
1591{EY} Eric Youngdale, <eric@andante.jic.com>
1592{PB} Phil Blundell, <Philip.Blundell@pobox.com>
1593{MK} Mark Kettenis, <kettenis@phys.uva.nl>
1594{ZW} Zack Weinberg, <zack@rabi.phys.columbia.edu>
50f301a8 1595{TK} Thorsten Kukuk, <kukuk@suse.de>
8619129f 1596{GK} Geoffrey Keating, <geoffk@ozemail.com.au>
da2d1bc5 1597{HJ} H.J. Lu, <hjl@gnu.org>
0f6052a8 1598{CG} Cristian Gafton, <gafton@redhat.com>
c63598bf 1599{AO} Alexandre Oliva, <oliva@lsd.ic.unicamp.br>
1324affa 1600{BH} Bruno Haible, <haible@clisp.cons.org>
61952351
UD
1601\f
1602Local Variables:
1603 mode:outline
1604 outline-regexp:"\\?"
f12944ec 1605 fill-column:76
61952351 1606End:
This page took 0.291769 seconds and 5 git commands to generate.