diff --git a/ChangeLog b/ChangeLog index af0de5aadf..de1327b57d 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,48 @@ +1998-03-26 Andreas Jaeger + + * manual/install.texi (Supported Configurations): Add + arm-linuxaout and arm-none. + +1998-03-26 Ulrich Drepper + + * version.h (VERSION): Bump to 2.0.93. + +1998-03-25 07:30 H.J. Lu + + * configure.in (libc_cv_ar_S): New to indicate if ar S works. + + * config.make.in (have-ar-S): New, substituted by libc_cv_ar_S. + + * Makerules (CREATE_ARFLAGS): New determined by $(have-ar-S). + (do-ar, build-extra-lib): Use $(CREATE_ARFLAGS) for $(AR). + +1998-03-26 Ulrich Drepper + + * Makeconfig (link-libc): Add missing use of libc_nonshared.a. + +1998-03-26 Andreas Schwab + + Put the static-only routines in a separate library. + * Makeconfig (libtype.oS, CFLAGS-.oS, CPPFLAGS-.oS): New + variables. + (all-object-suffixes): Add .oS. + * Makerules (libc_static-name): New variable. + (installed-libcs): Add libc_nonshared.a. + ($(inst_libdir)/libc.so): Use libc_nonshared.a instead of libc.a. + (object-suffixes-for-rules): New variable. Use it instead of + object-suffixes for generating compilation rules. + (rmobjs): Also remove *.oS. + * Rules (subdir_lib): Depend on $(objpfx)stamp.oS. + ($(objpfx)stamp.oS): New target. + +1998-03-26 Ulrich Drepper + + * Makefile (FAQ): Automatically check in regenerated FAQ. + +1998-03-26 10:16 Zack Weinberg + + * Makefile (INSTALL): Depend on install.texi, not maint.texi. + 1998-03-25 Ulrich Drepper * sysdeps/unix/sysv/linux/sparc/sparc64/Dist: Add sizes.h. diff --git a/FAQ b/FAQ index a54db102da..e2b9f0d5ea 100644 --- a/FAQ +++ b/FAQ @@ -26,16 +26,17 @@ please let me know. 1.4. Do I need a special linker or archiver? 1.5. What tools do I need for powerpc? 1.6. Do I need some more things to compile GNU C Library? -1.7. When I run `nm -u libc.so' on the produced library I still +1.7. What version of the Linux kernel headers should be used? +1.8. When I run `nm -u libc.so' on the produced library I still find unresolved symbols. Can this be ok? -1.8. What are these `add-ons'? -1.9. My XXX kernel emulates a floating-point coprocessor for me. +1.9. What are these `add-ons'? +1.10. My XXX kernel emulates a floating-point coprocessor for me. Should I enable --with-fp? -1.10. When compiling GNU libc I get lots of errors saying functions +1.11. When compiling GNU libc I get lots of errors saying functions in glibc are duplicated in libgcc. -1.11. Why do I get messages about missing thread functions when I use - the librt? I don't even use threads. -1.12. What's the problem with configure --enable-omitfp? +1.12. Why do I get messages about missing thread functions when I use + librt? I don't even use threads. +1.13. What's the problem with configure --enable-omitfp? 2. Installation and configuration issues @@ -58,23 +59,28 @@ please let me know. glibc 2.x? 2.9. The `gencat' utility cannot process the catalog sources which were used on my Linux libc5 based system. Why? -2.10. I have set up /etc/nis.conf, and the Linux libc 5 with NYS +2.10. Programs using libc have their messages translated, but other + behavior is not localized (e.g. collating order); why? +2.11. I have set up /etc/nis.conf, and the Linux libc 5 with NYS works great. But the glibc NIS+ doesn't seem to work. -2.11. I have killed ypbind to stop using NIS, but glibc will - continue using NIS. -2.12. After installing glibc name resolving doesn't work properly. -2.13. I have /usr/include/net and /usr/include/scsi as symlinks +2.12. I have killed ypbind to stop using NIS, but glibc + continues using NIS. +2.13. Under Linux/Alpha, I always get "do_ypcall: clnt_call: + RPC: Unable to receive; errno = Connection refused" when using NIS. +2.14. After installing glibc name resolving doesn't work properly. +2.15. I have /usr/include/net and /usr/include/scsi as symlinks into my Linux source tree. Is that wrong? -2.14. Programs like `logname', `top', `uptime' `users', `w' and +2.16. Programs like `logname', `top', `uptime' `users', `w' and `who', show incorrect information about the (number of) users on my system. Why? -2.15. After upgrading to glibc 2.1 with symbol versioning I get +2.17. After upgrading to glibc 2.1 with symbol versioning I get errors about undefined symbols. What went wrong? -2.16. When I start the program XXX after upgrading the library +2.18. When I start the program XXX after upgrading the library I get XXX: Symbol `_sys_errlist' has different size in shared object, consider re-linking Why? What should I do? +2.19. What do I need for C++ development? 3. Source and binary incompatibilities, and what to do about them @@ -100,6 +106,8 @@ please let me know. 3.10. I can't compile with gcc -traditional (or -traditional-cpp). Why? 3.11. I get some errors with `gcc -ansi'. Isn't glibc ANSI compatible? +3.12. I can't access some functions anymore. nm shows that they do + exist but linking fails nevertheless. 4. Miscellaneous @@ -148,14 +156,14 @@ you are really interested in porting it, contact GNU CC are used to increase portability and speed. GNU CC is found, like all other GNU packages, on - ftp://prep.ai.mit.edu/pub/gnu -and the many mirror sites. prep is always overloaded, so try to find + ftp://ftp.gnu.org/pub/gnu +and the many mirror sites. ftp.gnu.org is always overloaded, so try to find a local mirror first. You always should try to use the latest official release. Older -versions may not have all the features GNU libc requires. On most -supported platforms (for powerpc see question question 1.5), 2.7.2.3 is -the earliest version that works at all. +versions may not have all the features GNU libc requires. The current +releases of egcs (1.0.2) and GNU CC (2.8.1) should work with the GNU C +library (for powerpc see question question 1.5). 1.3. When I try to compile glibc I get only error messages. @@ -183,7 +191,7 @@ Always get the newest release of GNU binutils available. Older releases are known to have bugs that prevent a successful compilation. {ZW} As of release 2.1 a linker supporting symbol versions is -required. For Linux, get binutils-2.8.1.0.17 or later. Other systems +required. For Linux, get binutils-2.8.1.0.23 or later. Other systems may have native linker support, but it's moot right now, because glibc has not been ported to them. @@ -215,7 +223,7 @@ in configparms. Later versions of egcs may fix these problems. * GNU gettext. This package contains the tools needed to construct `message catalog' files containing translated versions of system - messages. See ftp://prep.ai.mit.edu/pub/gnu or better any mirror + messages. See ftp://ftp.gnu.org/pub/gnu or better any mirror site. (We distribute compiled message catalogs, but they may not be updated in patches.) @@ -252,7 +260,19 @@ in configparms. Later versions of egcs may fix these problems. If you have some more measurements let me know. -1.7. When I run `nm -u libc.so' on the produced library I still +1.7. What version of the Linux kernel headers should be used? + +{AJ,UD} The headers from the most recent Linux kernel should be used. +The headers used while compiling the GNU C library and the kernel +binary used when using the library do not need to match. The GNU C +library runs without problems on kernels that are older than the +kernel headers used. The other way round (compiling the GNU C library +with old kernel headers and running on a recent kernel) does not +necessarily work. For example you can't use new kernel features when +using old kernel headers for compiling the GNU C library. + + +1.8. When I run `nm -u libc.so' on the produced library I still find unresolved symbols. Can this be ok? {UD} Yes, this is ok. There can be several kinds of unresolved @@ -272,7 +292,7 @@ Generally, you should make sure you find a real program which produces errors while linking before deciding there is a problem. -1.8. What are these `add-ons'? +1.9. What are these `add-ons'? {UD} To avoid complications with export rules or external source code some optional parts of the libc are distributed as separate @@ -296,7 +316,7 @@ just about anything else. The existing makefiles do most of the work; only some few stub rules must be written to get everything running. -1.9. My XXX kernel emulates a floating-point coprocessor for me. +1.10. My XXX kernel emulates a floating-point coprocessor for me. Should I enable --with-fp? {ZW} An emulated FPU is just as good as a real one, as far as the C @@ -310,7 +330,7 @@ far more trouble than it's worth: you then have to compile (libgcc.a for GNU C), because the calling conventions change. -1.10. When compiling GNU libc I get lots of errors saying functions +1.11. When compiling GNU libc I get lots of errors saying functions in glibc are duplicated in libgcc. {EY} This is *exactly* the same problem that I was having. The @@ -328,24 +348,23 @@ some problems of this kind. The setting of CFLAGS is checked at the very beginning and if it is not usable `configure' will bark. -1.11. Why do I get messages about missing thread functions when I use - the librt? I don't even use threads. +1.12. Why do I get messages about missing thread functions when I use + librt? I don't even use threads. -{UD} In this case you probably mixed up your installation of the libc. -The librt internally uses threads and it has implicit references to -the thread library. Normally these references are satisfied -automatically but if the thread library belonging to the librt is not -in the expected place one has to specify this place. When using GNU -ld it works like this: +{UD} In this case you probably mixed up your installation. librt uses +threads internally and has implicit references to the thread library. +Normally these references are satisfied automatically but if the +thread library is not in the expected place you must tell the linker +where it is. When using GNU ld it works like this: gcc -o foo foo.c -Wl,-rpath-link=/some/other/dir -lrt -The `/some/other/dir' should contain the matching thread library and -`ld' will use the given path to find the implicitly referenced library -while not disturbing any other link path order. +The `/some/other/dir' should contain the thread library. `ld' will +use the given path to find the implicitly referenced library while not +disturbing any other link path. -1.12. What's the problem with configure --enable-omitfp? +1.13. What's the problem with configure --enable-omitfp? {AJ} When --enable-omitfp is set the libraries are built without frame pointers. Some compilers produce buggy code for this model and @@ -468,7 +487,7 @@ See question 3.8 for details. and source code. Until this law gets abolished we cannot ship the cryptographic functions together with glibc. -The functions are available, as an add-on (see question 1.8). People in the +The functions are available, as an add-on (see question 1.9). People in the US may get it from the same place they got GNU libc from. People outside the US should get the code from ftp://ftp.ifi.uio.no/pub/gnu, or another archive site outside the USA. The README explains how to @@ -588,9 +607,9 @@ GROUP ( libc.so.6 ld-linux.so.2 libc.a ) 2.8. How can I compile gcc 2.7.2.1 from the gcc source code using glibc 2.x? -{AJ} There's only correct support for glibc 2.0.x in gcc 2.7.2.3 -or later. You should get at least gcc 2.7.2.3. All previous versions -had problems with glibc support. +{AJ} There's only correct support for glibc 2.0.x in gcc 2.7.2.3 or +later. But you should get at least gcc 2.8.1 or egcs 1.0.2 (or later +versions) instead. 2.9. The `gencat' utility cannot process the catalog sources which @@ -628,7 +647,21 @@ catalog files to the XPG4 form: ----------------------------------------------------------------------- -2.10. I have set up /etc/nis.conf, and the Linux libc 5 with NYS +2.10. Programs using libc have their messages translated, but other + behavior is not localized (e.g. collating order); why? + +{ZW} Translated messages are automatically installed, but the locale +database that controls other behaviors is not. You need to run +localedef to install this database, after you have run `make +install'. For example, to set up the French Canadian locale, simply +issue the command + + localedef -i fr_CA -f ISO-8859-1 fr_CA + +Please see localedata/README in the source tree for further details. + + +2.11. I have set up /etc/nis.conf, and the Linux libc 5 with NYS works great. But the glibc NIS+ doesn't seem to work. {TK} The glibc NIS+ implementation uses a /var/nis/NIS_COLD_START @@ -640,24 +673,33 @@ it with nisinit from the nis-tools package (available at http://www-vt.uni-paderborn.de/~kukuk/linux/nisplus.html). -2.11. I have killed ypbind to stop using NIS, but glibc will - continue using NIS. +2.12. I have killed ypbind to stop using NIS, but glibc + continues using NIS. {TK} For faster NIS lookups, glibc uses the /var/yp/binding/ files from ypbind. ypbind 3.3 and older versions don't always remove these -files, so glibc will use them furthermore. Other BSD versions seem to -work correct. Until ypbind 3.4 is released, you can find a patch at -ftp://ftp.kernel.org/pub/linux/utils/net/NIS/ypbind-3.3-glibc2.diff. +files, so glibc will continue to use them. Other BSD versions seem to +work correctly. Until ypbind 3.4 is released, you can find a patch at +ftp://ftp.kernel.org/pub/linux/utils/net/NIS/ypbind-3.3-glibc3.diff. -2.12. After installing glibc name resolving doesn't work properly. +2.13. Under Linux/Alpha, I always get "do_ypcall: clnt_call: + RPC: Unable to receive; errno = Connection refused" when using NIS. + +{TK} You need a ypbind version which is 64bit clean. Some versions +are not 64bit clean. A 64bit clean implementation is ypbind-mt. For +ypbind 3.3, you need the patch from ftp.kernel.org (See the previous +question). I don't know about other versions. + + +2.14. After installing glibc name resolving doesn't work properly. {AJ} You probably should read the manual section describing nsswitch.conf (just type `info libc "NSS Configuration File"'). The NSS configuration file is usually the culprit. -2.13. I have /usr/include/net and /usr/include/scsi as symlinks +2.15. I have /usr/include/net and /usr/include/scsi as symlinks into my Linux source tree. Is that wrong? {PB} This was necessary for libc5, but is not correct when using @@ -668,14 +710,14 @@ any symlink that you have in place before you install glibc. However, /usr/include/asm and /usr/include/linux should remain as they were. -2.14. Programs like `logname', `top', `uptime' `users', `w' and +2.16. Programs like `logname', `top', `uptime' `users', `w' and `who', show incorrect information about the (number of) users on my system. Why? {MK} See question 3.2. -2.15. After upgrading to glibc 2.1 with symbol versioning I get +2.17. After upgrading to glibc 2.1 with symbol versioning I get errors about undefined symbols. What went wrong? {AJ} The problem is caused either by wrong program code or tools. In @@ -689,7 +731,7 @@ the price you might have to pay once for quite a number of advantages with symbol versioning. -2.16. When I start the program XXX after upgrading the library +2.18. When I start the program XXX after upgrading the library I get XXX: Symbol `_sys_errlist' has different size in shared object, consider re-linking @@ -711,6 +753,16 @@ might be possible that a symbol changed size when that should not have happened. So in case of doubt report such a warning message as a problem. + +2.19. What do I need for C++ development? + +{HJ,AJ} You need either egcs 1.0.2 or gcc-2.8.1 with libstdc++ +2.8.1 (or more recent versions). libg++ 2.7.2 (and the Linux Versions +2.7.2.x) doesn't work very well with the GNU C library due to vtable thunks. +If you're upgrading from glibc 2.0.x to 2.1 you have to recompile +libstdc++ since the library compiled for 2.0 is not compatible due to the new +Large File Support (LFS) in version 2.1. + . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . @@ -963,7 +1015,7 @@ to do so. For example constructs of the form: enum {foo #define foo foo } -are useful for debugging purpuses (you can use foo with your debugger +are useful for debugging purposes (you can use foo with your debugger that's why we need the enum) and for compatibility (other systems use defines and check with #ifdef). @@ -980,6 +1032,21 @@ standards with feature flags). The GNU C library is conforming to ANSI/ISO C - if and only if you're only using the headers and library functions defined in the standard. + +3.12. I can't access some functions anymore. nm shows that they do + exist but linking fails nevertheless. + +{AJ} With the introduction of versioning in glibc 2.1 it is possible +to export only those identifiers (functions, variables) that are +really needed by application programs and by other parts of glibc. +This way a lot of internal interfaces are now hidden. nm will still +show those identifiers but marking them as internal. ISO C states +that identifiers beginning with an underscore are internal to the +libc. An application program normally shouldn't use those internal +interfaces (there are exceptions, e.g. __ivaliduser). If a program +uses these interfaces, it's broken. These internal interfaces might +change between glibc releases or dropped completely. + . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . @@ -989,7 +1056,7 @@ only using the headers and library functions defined in the standard. or higher is required for this script'. What can I do? {UD} You have to get the specified autoconf version (or a later one) -from your favorite mirror of prep.ai.mit.edu. +from your favorite mirror of ftp.gnu.org. 4.2. When I try to compile code which uses IPv6 headers and @@ -1018,6 +1085,7 @@ Answers were given by: {ZW} Zack Weinberg, {TK} Thorsten Kukuk, {GK} Geoffrey Keating, +{HJ} H.J. Lu, Local Variables: mode:outline diff --git a/FAQ.in b/FAQ.in index 18ef19854b..b6cc529e80 100644 --- a/FAQ.in +++ b/FAQ.in @@ -33,6 +33,8 @@ probably in the future, are: powerpc-*-linux-gnu Linux and MkLinux on PowerPC systems sparc-*-linux-gnu Linux-2.x on SPARC sparc64-*-linux-gnu Linux-2.x on UltraSPARC + arm-*-none ARM standalone systems + arm-*-linuxaout Linux-2.x on ARM using a.out binaries Ports to other Linux platforms are in development, and may in fact work already, but no one has sent us success reports for them. diff --git a/Makeconfig b/Makeconfig index db62f8edb0..17967abda0 100644 --- a/Makeconfig +++ b/Makeconfig @@ -405,7 +405,7 @@ ifeq (yes,$(build-shared)) link-libc = -Wl,-rpath-link=$(rpath-link) \ $(common-objpfx)libc.so$(libc.so-version) \ $(elfobjdir)/$(rtld-installed-name) \ - $(common-objpfx)libc.a $(gnulib) + $(common-objpfx)libc_nonshared.a $(gnulib) # Choose the default search path for the dynamic linker based on # where we will install libraries. ifneq ($(libdir),$(slibdir)) @@ -573,7 +573,7 @@ endif # The compilation rules use $(CPPFLAGS-${SUFFIX}) and $(CFLAGS-${SUFFIX}) # to pass different flags for each flavor. libtypes = $(foreach o,$(object-suffixes),$(libtype$o)) -all-object-suffixes := .o .os .op .og .ob +all-object-suffixes := .o .os .op .og .ob .oS object-suffixes := ifeq (yes,$(build-static)) CPPFLAGS-.o = $(pic-default) @@ -619,6 +619,13 @@ CFLAGS-.ob = -g -fbounded-pointers libtype.ob = lib%_b.a endif +# Special library that contains the static-only routines for libc. +libtype.oS = lib%_nonshared.a +# Must build the routines as PIC, though, because they can end up in (users') +# shared objects. We don't want to use CFLAGS-os because users may, for +# example, make that processor-specific. +CFLAGS-.oS = $(CFLAGS-.o) $(pic-ccflag) +CPPFLAGS-.oS = $(CPPFLAGS-.o) +gnu-stabs = $(shell echo>&2 '*** BARF ON ME') diff --git a/Makefile b/Makefile index cac9bbc43e..813ffc4ef0 100644 --- a/Makefile +++ b/Makefile @@ -336,12 +336,15 @@ define format-me makeinfo --no-validate --no-warn --no-headers $< -o $@ -chmod a-w $@ endef -INSTALL: manual/maint.texi; $(format-me) +INSTALL: manual/install.texi; $(format-me) NOTES: manual/creature.texi; $(format-me) manual/dir-add.texi manual/dir-add.info: FORCE $(MAKE) $(PARALLELMFLAGS) -C $(@D) $(@F) FAQ: gen-FAQ.pl FAQ.in $(PERL) $^ > $@.new && rm -f $@ && mv $@.new $@ && chmod a-w $@ +ifeq ($(with-cvs),yes) + test ! -d CVS || cvs $(CVSOPTS) commit -m'Regenerated: $(PERL) $^' $@ +endif FORCE: rpm/%: subdir_distinfo diff --git a/README.template b/README.template index 0850475f7c..37b01e7947 100644 --- a/README.template +++ b/README.template @@ -12,6 +12,8 @@ configurations: powerpc-*-linux-gnu Linux and MkLinux on PowerPC systems sparc-*-linux-gnu Linux-2.x on SPARC sparc64-*-linux-gnu Linux-2.x on UltraSPARC + arm-*-none ARM standalone systems + arm-*-linuxaout Linux-2.x on ARM using a.out binaries Former releases of this library (version 1.09.1 and perhaps earlier diff --git a/manual/install.texi b/manual/install.texi index 3313bf0f38..0efffde2b5 100644 --- a/manual/install.texi +++ b/manual/install.texi @@ -260,6 +260,8 @@ following patterns: @smallexample alpha-@var{anything}-linux +arm-@var{anything}-linuxaout +arm-@var{anything}-none i@var{x}86-@var{anything}-gnu i@var{x}86-@var{anything}-linux m68k-@var{anything}-linux diff --git a/version.h b/version.h index aabd0693d4..0e75f148f8 100644 --- a/version.h +++ b/version.h @@ -1,4 +1,4 @@ /* This file just defines the current version number of libc. */ #define RELEASE "experimental" -#define VERSION "2.0.92" +#define VERSION "2.0.93"