1996-05-11 06:55:26 +08:00
|
|
|
|
Frequently Asked Question on GNU C Library
|
|
|
|
|
|
1996-05-25 05:42:06 +08:00
|
|
|
|
As every FAQ this one also tries to answer questions the user might have
|
|
|
|
|
when using the pacakge. Please make sure you read this before sending
|
|
|
|
|
questions or bug reports to the maintainers.
|
1996-05-11 06:55:26 +08:00
|
|
|
|
|
|
|
|
|
The GNU C Library is very complex. The building process exploits the
|
|
|
|
|
features available in tools generally available. But many things can
|
|
|
|
|
only be done using GNU tools. Also the code is sometimes hard to
|
|
|
|
|
understand because it has to be portable but on the other hand must be
|
|
|
|
|
fast. But you need not understand the details to use GNU C Library.
|
|
|
|
|
This will only be necessary if you intend to contribute or change it.
|
|
|
|
|
|
1996-05-25 05:42:06 +08:00
|
|
|
|
If you have any questions you think should be answered in this document,
|
|
|
|
|
please let me know.
|
1996-05-11 06:55:26 +08:00
|
|
|
|
|
|
|
|
|
--drepper@cygnus.com
|
|
|
|
|
|
|
|
|
|
~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
|
1996-05-25 05:42:06 +08:00
|
|
|
|
[Q1] ``What systems does the GNU C Library run on?''
|
1996-05-11 06:55:26 +08:00
|
|
|
|
|
1996-05-25 05:42:06 +08:00
|
|
|
|
[Q2] ``What compiler do I need to build GNU libc?''
|
1996-05-25 04:16:39 +08:00
|
|
|
|
|
1996-05-25 05:42:06 +08:00
|
|
|
|
[Q3] ``When starting make I get only error messages.
|
1996-05-25 04:16:39 +08:00
|
|
|
|
What's wrong?''
|
|
|
|
|
|
|
|
|
|
[Q4] ``After I changed configure.in I get `Autoconf version X.Y.
|
|
|
|
|
or higher is required for this script'. What can I do?''
|
|
|
|
|
|
|
|
|
|
[Q5] ``Do I need a special linker or archiver?''
|
|
|
|
|
|
|
|
|
|
[Q6] ``Do I need some more things to compile GNU C Library?''
|
|
|
|
|
|
|
|
|
|
[Q7] ``When I run `nm libc.so|grep " U "' on the produced library
|
|
|
|
|
I still find unresolved symbols? Can this be ok?''
|
|
|
|
|
|
|
|
|
|
[Q8] ``I expect GNU libc to be 100% source code compatible with
|
|
|
|
|
the old Linux based GNU libc. Why isn't it like this?''
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
|
1996-05-25 05:42:06 +08:00
|
|
|
|
[Q1] ``What systems does the GNU C Library run on?''
|
1996-05-25 04:16:39 +08:00
|
|
|
|
|
1996-05-11 06:55:26 +08:00
|
|
|
|
[A1] {UD} This is difficult to answer. The file `README' lists the
|
|
|
|
|
architectures GNU libc is known to run *at some time*. This does not
|
|
|
|
|
mean that it still can be compiled and run on them in the moment.
|
|
|
|
|
|
|
|
|
|
The systems glibc is known to work on in the moment and most probably
|
|
|
|
|
in the future are:
|
|
|
|
|
|
|
|
|
|
*-*-gnu GNU Hurd
|
|
|
|
|
i[3456]86-*-linux Linux-2.0 on Intel
|
|
|
|
|
|
|
|
|
|
Other Linux platforms are also on the way to be supported but I need
|
|
|
|
|
some success reports first.
|
|
|
|
|
|
|
|
|
|
If you have a system not listed above (or in the `README' file) and
|
|
|
|
|
you are really interested in porting it, contact
|
|
|
|
|
|
1996-05-25 05:42:06 +08:00
|
|
|
|
<bug-glibc@prep.ai.mit.edu>
|
1996-05-11 06:55:26 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
|
1996-05-25 05:42:06 +08:00
|
|
|
|
[Q2] ``What compiler do I need to build GNU libc?''
|
1996-05-11 06:55:26 +08:00
|
|
|
|
|
|
|
|
|
[A2] {UD} It is (almost) impossible to compile GNU C Library using a
|
|
|
|
|
different compiler than GNU CC. A lot of extensions of GNU CC are
|
|
|
|
|
used to increase the portability and speed.
|
|
|
|
|
|
|
|
|
|
But this does not mean you have to use GNU CC for using the GNU C
|
|
|
|
|
Library. In fact you should be able to use the native C compiler
|
|
|
|
|
because the success only depends on the binutils: the linker and
|
|
|
|
|
archiver.
|
|
|
|
|
|
|
|
|
|
The GNU CC is found like all other GNU packages on
|
|
|
|
|
ftp://prep.ai.mit.edu/pub/gnu
|
|
|
|
|
or better one of the many mirrors.
|
|
|
|
|
|
|
|
|
|
You always should try to use the latest official release. Older
|
|
|
|
|
versions might not have all the features GNU libc could use.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
|
|
|
|
|
[Q3] ``When starting make I get only errors messages.
|
|
|
|
|
What's wrong?''
|
|
|
|
|
|
|
|
|
|
[A3] {UD} You definitely need GNU make to translate GNU libc. No
|
|
|
|
|
other make program has the needed functionality.
|
|
|
|
|
|
|
|
|
|
Versions before 3.74 have bugs which prevent correct execution so you
|
|
|
|
|
should upgrade to the latest version before starting the compilation.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
|
|
|
|
|
[Q4] ``After I changed configure.in I get `Autoconf version X.Y.
|
|
|
|
|
or higher is required for this script'. What can I do?''
|
|
|
|
|
|
|
|
|
|
[A4] {UD} You have to get the specified autoconf version (or a later)
|
|
|
|
|
from your favourite mirror of prep.ai.mit.edu.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
|
|
|
|
|
[Q5] ``Do I need a special linker or archiver?''
|
|
|
|
|
|
Tue May 28 04:38:10 1996 Ulrich Drepper <drepper@cygnus.com>
* limits.h: Change MB_LEN_MAX to 6. A 31-bit ISO 10646
character in UTF-8 encoding has that many bytes.
* locale/langinfo.h: New element _NL_CTYPE_MB_CUR_MAX.
* locale/categories.def: Add description of field _NL_CTYPE_MB_CUR_MAX.
* locale/Makefile (routines): Add mb_cur_max.
* locale/mb_cur_max.c: New file. This function gets called
when the macro MB_CUR_MAX is used.
* locale/C-ctype.c: Initialize new mb_cur_max field.
* locale/localeinfo.h: Change magic value because of incompatible
change.
* locale/programs/ld-ctype.c: Determine value of mb_cur_max
according to current character set and write it out with the rest.
* stdlib/stdlib.h (MB_CUR_MAX): Not constant anymore. Get value
according to currently used locale for catefory LC_CTYPE by
calling the function __ctype_get_mb_cur_max.
Tue May 28 03:27:46 1996 Ulrich Drepper <drepper@cygnus.com>
* FAQ: Fix some typos.
Tell that for Linux the kernel header files are necessary.
* PROJECTS: New file. List of open jobs for glibc.
* Makefile (distribute): Add PROJECTS.
* crypt/GNUmakefile (headers): New variable. Mention crypt.h.
* crypt/crypt.h: Header for crypt functions.
* elf/elf.h: Add some new constants from recent Cygnus ELF
header files.
* login/getutid_r.c: Test for correct type.
Don't depend on ut_type and ut_id unless _HAVE_UT_TYPE and
_HAVE_UT_ID resp. are defined.
Make really compliant with specification.
* login/getutline_r.c, login/pututline_r.c: Don't depend on
ut_type and ut_id unless _HAVE_UT_TYPE and _HAVE_UT_ID resp. are
defined.
Make really compliant with specification.
* login/setutent_r.c: Don't depend on ut_type and ut_id unless
_HAVE_UT_TYPE and _HAVE_UT_ID resp. are defined.
* login/login.c, login/logout.c, login/logwtmp.c: Complete
rewrite. Now based on getut*/setut* functions.
* stdlib/strtol.c: Undo changes of Wed May 22 01:48:54 1996.
This prevented using this file in other GNU packages.
* sysdeps/gnu/utmpbits.h: Define _HAVE_UT_TYPE, _HAVE_UT_ID,
and _HAVE_UT_TV because struct utmp has these members.
* sysdeps/libm-i387/e_exp.S: Correct exp(+-Inf) case.
* utmp.h: New file. Wrapper around login/utmp.h.
* elf/dl-error.c (struct catch): New type.
(catch): New static variable, struct catch *.
(catch_env, signalled_errstring, signalled_objname): Variables removed.
(_dl_signal_error): If CATCH is non-null, set its errstring and
objname members and jump to CATCH->env. If it is null, call
_dl_sysdep_fatal with a standard message.
* elf/rtld.c (dl_main): Explode `doit' function into dl_main's body.
No longer use _dl_catch_error.
1996-05-29 12:48:04 +08:00
|
|
|
|
[A5] {UD} If your native versions are not too buggy you can probably
|
|
|
|
|
work with them. But GNU libc works best with GNU binutils.
|
1996-05-11 06:55:26 +08:00
|
|
|
|
|
|
|
|
|
On systems where the native linker does not support weak symbols you
|
|
|
|
|
will not get a really ISO C compliant C library. Generally speaking
|
|
|
|
|
you should use the GNU binutils if they provide at least the same
|
|
|
|
|
functionality as your system's tools.
|
|
|
|
|
|
1996-05-25 05:42:06 +08:00
|
|
|
|
Always get the newest release of GNU binutils available.
|
|
|
|
|
Older releases are known to have bugs that affect building the GNU C library.
|
|
|
|
|
|
1996-05-11 06:55:26 +08:00
|
|
|
|
|
|
|
|
|
~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
|
|
|
|
|
[Q6] ``Do I need some more things to compile GNU C Library?''
|
|
|
|
|
|
|
|
|
|
[A6] {UD} Yes, there are some more :-).
|
|
|
|
|
|
Tue May 28 04:38:10 1996 Ulrich Drepper <drepper@cygnus.com>
* limits.h: Change MB_LEN_MAX to 6. A 31-bit ISO 10646
character in UTF-8 encoding has that many bytes.
* locale/langinfo.h: New element _NL_CTYPE_MB_CUR_MAX.
* locale/categories.def: Add description of field _NL_CTYPE_MB_CUR_MAX.
* locale/Makefile (routines): Add mb_cur_max.
* locale/mb_cur_max.c: New file. This function gets called
when the macro MB_CUR_MAX is used.
* locale/C-ctype.c: Initialize new mb_cur_max field.
* locale/localeinfo.h: Change magic value because of incompatible
change.
* locale/programs/ld-ctype.c: Determine value of mb_cur_max
according to current character set and write it out with the rest.
* stdlib/stdlib.h (MB_CUR_MAX): Not constant anymore. Get value
according to currently used locale for catefory LC_CTYPE by
calling the function __ctype_get_mb_cur_max.
Tue May 28 03:27:46 1996 Ulrich Drepper <drepper@cygnus.com>
* FAQ: Fix some typos.
Tell that for Linux the kernel header files are necessary.
* PROJECTS: New file. List of open jobs for glibc.
* Makefile (distribute): Add PROJECTS.
* crypt/GNUmakefile (headers): New variable. Mention crypt.h.
* crypt/crypt.h: Header for crypt functions.
* elf/elf.h: Add some new constants from recent Cygnus ELF
header files.
* login/getutid_r.c: Test for correct type.
Don't depend on ut_type and ut_id unless _HAVE_UT_TYPE and
_HAVE_UT_ID resp. are defined.
Make really compliant with specification.
* login/getutline_r.c, login/pututline_r.c: Don't depend on
ut_type and ut_id unless _HAVE_UT_TYPE and _HAVE_UT_ID resp. are
defined.
Make really compliant with specification.
* login/setutent_r.c: Don't depend on ut_type and ut_id unless
_HAVE_UT_TYPE and _HAVE_UT_ID resp. are defined.
* login/login.c, login/logout.c, login/logwtmp.c: Complete
rewrite. Now based on getut*/setut* functions.
* stdlib/strtol.c: Undo changes of Wed May 22 01:48:54 1996.
This prevented using this file in other GNU packages.
* sysdeps/gnu/utmpbits.h: Define _HAVE_UT_TYPE, _HAVE_UT_ID,
and _HAVE_UT_TV because struct utmp has these members.
* sysdeps/libm-i387/e_exp.S: Correct exp(+-Inf) case.
* utmp.h: New file. Wrapper around login/utmp.h.
* elf/dl-error.c (struct catch): New type.
(catch): New static variable, struct catch *.
(catch_env, signalled_errstring, signalled_objname): Variables removed.
(_dl_signal_error): If CATCH is non-null, set its errstring and
objname members and jump to CATCH->env. If it is null, call
_dl_sysdep_fatal with a standard message.
* elf/rtld.c (dl_main): Explode `doit' function into dl_main's body.
No longer use _dl_catch_error.
1996-05-29 12:48:04 +08:00
|
|
|
|
* lots of diskspace (for i386-linux this means, e.g., ~70MB).
|
1996-05-11 06:55:26 +08:00
|
|
|
|
|
|
|
|
|
You should avoid compiling on a NFS mounted device. This is very
|
|
|
|
|
slow.
|
|
|
|
|
|
|
|
|
|
* plenty of time (approx 1h for i386-linux on i586@133 or 2.5h or
|
|
|
|
|
i486@66).
|
|
|
|
|
|
1996-05-25 05:42:06 +08:00
|
|
|
|
If you are interested in some more measurements let me know.
|
1996-05-11 06:55:26 +08:00
|
|
|
|
|
Thu May 30 11:24:05 1996 Roland McGrath <roland@delasyd.gnu.ai.mit.edu>
* po/header.pot: Replace with exact boilerplate pinard dictates.
* sysdeps/i386/strtok.S (Lillegal_argument): Remove this code to set
errno and the check that jumped to it.
* sysdeps/mach/hurd/Makefile (errnos.d): Use $(sed-remove-objpfx).
Thu May 30 03:21:57 1996 Ulrich Drepper <drepper@cygnus.com>
* FAQ: Document need of gperf program for developers.
* elf/elf.h: Fix typos in comments.
* libio/stdio.h [!__STRICT_ANSI__ || _POSIX_SOURCE]: Add
prototypes for `ctermid' and `cuserid'.
* locale/programs/locale.c: Switch to user selected locale
before printing variables.
* math/Makefile [$(long-double-fcts)==yes]: Define long-m-routines
and long-c-routines. Only if the `long double' data type is
available we need to compile the functions.
(libm-routines): Add $(long-m-routines).
(routines): Remove isinfl, isnanl. Use new file s_isinfl and
s_isnanl instead if `long double' is available.
* math/math.h: Include <mathcalls.h> again to define `long double'
functions.
* math/math_private.h: Define data types, prototypes and access
macros for `long double'.
* stdlib/stdlib.h: Add prototypes for `strtoll' and `strtoull'.
[GCC2 && OPTIMIZE]: Define strto{,u}ll as inline function which
calls __strto{,u}q_internal.
* stdlib/strfmon.c: Replace PTR by `void *'.
* stdlib/strtoq.c: Define strtoll as weak alias.
* stdlib/strtouq.c: Define strtoull as weak alias.
* string/tester.c: Correct `strsep' test.
* sysdeps/generic/strsep.c: Make compatible with BSD version.
Trailing characters of skip set are not skipped. In this case
empty tokens are returned.
* sysdeps/i386/isinfl.c, sysdeps/i386/isnanl.c,
sysdeps/ieee754/isinf.c, sysdeps/ieee754/isinfl.c,
sysdeps/ieee754/isnan.c, sysdeps/ieee754/isnanl.c: Removed. We
now use the versions part of libm.
* sysdeps/i386/strsep.S: Removed. Generic C version is of
similar speed.
* sysdeps/i386/strtok.S: Remove support for `strsep'.
* sysdeps/libm-i387/e_acosl.S, sysdeps/libm-i387/s_ceill.S,
sysdeps/libm-i387/s_copysignl.S, sysdeps/libm-i387/s_finitel.S,
sysdeps/libm-i387/s_floorl.S, sysdeps/libm-i387/s_isinfl.c,
sysdeps/libm-i387/s_isnanl.c, sysdeps/libm-i387/s_nextafterl.c,
sysdeps/libm-i387/s_rintl.S, sysdeps/libm-i387/s_significandl.S:
New i387 specific math functions implementing `long double'
versions.
* sysdeps/libm-ieee754/s_ceill.c,
sysdeps/libm-ieee754/s_copysignl.c,
sysdeps/libm-ieee754/s_fabsl.c, sysdeps/libm-ieee754/s_finitel.c,
sysdeps/libm-ieee754/s_floorl.c, sysdeps/libm-ieee754/s_isinfl.c,
sysdeps/libm-ieee754/s_isnanl.c,
sysdeps/libm-ieee754/s_nextafterl.c,
sysdeps/libm-ieee754/s_rintl.c, sysdeps/libm-ieee754/s_scalbnl.c,
sysdeps/libm-ieee754/s_significandl.c: New generic `long double'
versions of libm functions.
* sysdeps/libm-i387/e_exp.S: Add a few comments to explain the
Intel FPU nonsense.
* sysdeps/libm-i387/s_ceil.S, sysdeps/libm-i387/s_ceilf.S,
sysdeps/libm-i387/s_floor.S, sysdeps/libm-i387/s_floorf.S: Correct
handling of local variables. The old version created a stack
frame but stored the values outside.
* sysdeps/libm-ieee754/s_isinf.c, sysdeps/libm-ieee754/s_isnan.c
[!NO_LONG_DOUBLE]: Define alias with `long double' versions name.
* login/pututline_r.c: Include sys/stat.h. Fix typos.
according to currently used locale for category LC_CTYPE by
inet_nsap_ntoa. Now in <arpa/inet.h>.
_IO_dup2 to contain complete parameter list.
1996-05-31 00:12:42 +08:00
|
|
|
|
* Some files depend on special tools. E.g., files ending in .gperf
|
|
|
|
|
need a `gperf' program. The GNU version (part of libg++) is known
|
|
|
|
|
to work while some vendor versions do not.
|
1996-05-11 06:55:26 +08:00
|
|
|
|
|
Tue May 28 04:38:10 1996 Ulrich Drepper <drepper@cygnus.com>
* limits.h: Change MB_LEN_MAX to 6. A 31-bit ISO 10646
character in UTF-8 encoding has that many bytes.
* locale/langinfo.h: New element _NL_CTYPE_MB_CUR_MAX.
* locale/categories.def: Add description of field _NL_CTYPE_MB_CUR_MAX.
* locale/Makefile (routines): Add mb_cur_max.
* locale/mb_cur_max.c: New file. This function gets called
when the macro MB_CUR_MAX is used.
* locale/C-ctype.c: Initialize new mb_cur_max field.
* locale/localeinfo.h: Change magic value because of incompatible
change.
* locale/programs/ld-ctype.c: Determine value of mb_cur_max
according to current character set and write it out with the rest.
* stdlib/stdlib.h (MB_CUR_MAX): Not constant anymore. Get value
according to currently used locale for catefory LC_CTYPE by
calling the function __ctype_get_mb_cur_max.
Tue May 28 03:27:46 1996 Ulrich Drepper <drepper@cygnus.com>
* FAQ: Fix some typos.
Tell that for Linux the kernel header files are necessary.
* PROJECTS: New file. List of open jobs for glibc.
* Makefile (distribute): Add PROJECTS.
* crypt/GNUmakefile (headers): New variable. Mention crypt.h.
* crypt/crypt.h: Header for crypt functions.
* elf/elf.h: Add some new constants from recent Cygnus ELF
header files.
* login/getutid_r.c: Test for correct type.
Don't depend on ut_type and ut_id unless _HAVE_UT_TYPE and
_HAVE_UT_ID resp. are defined.
Make really compliant with specification.
* login/getutline_r.c, login/pututline_r.c: Don't depend on
ut_type and ut_id unless _HAVE_UT_TYPE and _HAVE_UT_ID resp. are
defined.
Make really compliant with specification.
* login/setutent_r.c: Don't depend on ut_type and ut_id unless
_HAVE_UT_TYPE and _HAVE_UT_ID resp. are defined.
* login/login.c, login/logout.c, login/logwtmp.c: Complete
rewrite. Now based on getut*/setut* functions.
* stdlib/strtol.c: Undo changes of Wed May 22 01:48:54 1996.
This prevented using this file in other GNU packages.
* sysdeps/gnu/utmpbits.h: Define _HAVE_UT_TYPE, _HAVE_UT_ID,
and _HAVE_UT_TV because struct utmp has these members.
* sysdeps/libm-i387/e_exp.S: Correct exp(+-Inf) case.
* utmp.h: New file. Wrapper around login/utmp.h.
* elf/dl-error.c (struct catch): New type.
(catch): New static variable, struct catch *.
(catch_env, signalled_errstring, signalled_objname): Variables removed.
(_dl_signal_error): If CATCH is non-null, set its errstring and
objname members and jump to CATCH->env. If it is null, call
_dl_sysdep_fatal with a standard message.
* elf/rtld.c (dl_main): Explode `doit' function into dl_main's body.
No longer use _dl_catch_error.
1996-05-29 12:48:04 +08:00
|
|
|
|
* When compiling for Linux:
|
|
|
|
|
|
|
|
|
|
+ the header files of the Linux kernel must be available in the
|
|
|
|
|
search path of the CPP as <linux/*.h> and <asm/*.h>.
|
|
|
|
|
|
|
|
|
|
|
1996-05-11 06:55:26 +08:00
|
|
|
|
~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
|
|
|
|
|
[Q7] ``When I run `nm libc.so|grep " U "' on the produced library
|
|
|
|
|
I still find unresolved symbols? Can this be ok?''
|
|
|
|
|
|
|
|
|
|
[A7] {UD} Yes, this is ok. There can be several kinds of unresolved
|
|
|
|
|
symbols:
|
|
|
|
|
|
|
|
|
|
* magic symbols automatically generated by the linker. Names are
|
Tue May 28 04:38:10 1996 Ulrich Drepper <drepper@cygnus.com>
* limits.h: Change MB_LEN_MAX to 6. A 31-bit ISO 10646
character in UTF-8 encoding has that many bytes.
* locale/langinfo.h: New element _NL_CTYPE_MB_CUR_MAX.
* locale/categories.def: Add description of field _NL_CTYPE_MB_CUR_MAX.
* locale/Makefile (routines): Add mb_cur_max.
* locale/mb_cur_max.c: New file. This function gets called
when the macro MB_CUR_MAX is used.
* locale/C-ctype.c: Initialize new mb_cur_max field.
* locale/localeinfo.h: Change magic value because of incompatible
change.
* locale/programs/ld-ctype.c: Determine value of mb_cur_max
according to current character set and write it out with the rest.
* stdlib/stdlib.h (MB_CUR_MAX): Not constant anymore. Get value
according to currently used locale for catefory LC_CTYPE by
calling the function __ctype_get_mb_cur_max.
Tue May 28 03:27:46 1996 Ulrich Drepper <drepper@cygnus.com>
* FAQ: Fix some typos.
Tell that for Linux the kernel header files are necessary.
* PROJECTS: New file. List of open jobs for glibc.
* Makefile (distribute): Add PROJECTS.
* crypt/GNUmakefile (headers): New variable. Mention crypt.h.
* crypt/crypt.h: Header for crypt functions.
* elf/elf.h: Add some new constants from recent Cygnus ELF
header files.
* login/getutid_r.c: Test for correct type.
Don't depend on ut_type and ut_id unless _HAVE_UT_TYPE and
_HAVE_UT_ID resp. are defined.
Make really compliant with specification.
* login/getutline_r.c, login/pututline_r.c: Don't depend on
ut_type and ut_id unless _HAVE_UT_TYPE and _HAVE_UT_ID resp. are
defined.
Make really compliant with specification.
* login/setutent_r.c: Don't depend on ut_type and ut_id unless
_HAVE_UT_TYPE and _HAVE_UT_ID resp. are defined.
* login/login.c, login/logout.c, login/logwtmp.c: Complete
rewrite. Now based on getut*/setut* functions.
* stdlib/strtol.c: Undo changes of Wed May 22 01:48:54 1996.
This prevented using this file in other GNU packages.
* sysdeps/gnu/utmpbits.h: Define _HAVE_UT_TYPE, _HAVE_UT_ID,
and _HAVE_UT_TV because struct utmp has these members.
* sysdeps/libm-i387/e_exp.S: Correct exp(+-Inf) case.
* utmp.h: New file. Wrapper around login/utmp.h.
* elf/dl-error.c (struct catch): New type.
(catch): New static variable, struct catch *.
(catch_env, signalled_errstring, signalled_objname): Variables removed.
(_dl_signal_error): If CATCH is non-null, set its errstring and
objname members and jump to CATCH->env. If it is null, call
_dl_sysdep_fatal with a standard message.
* elf/rtld.c (dl_main): Explode `doit' function into dl_main's body.
No longer use _dl_catch_error.
1996-05-29 12:48:04 +08:00
|
|
|
|
often like __start_* and __stop_*
|
1996-05-11 06:55:26 +08:00
|
|
|
|
|
|
|
|
|
* symbols resolved by using libgcc.a
|
|
|
|
|
(__udivdi3, __umoddi3, or similar)
|
|
|
|
|
|
|
|
|
|
* weak symbols, which need not be resolved at all
|
|
|
|
|
(currently fabs among others; this gets resolved if the program
|
|
|
|
|
is linked against libm, too.)
|
|
|
|
|
|
|
|
|
|
Generally, you should make sure you find a real program which produces
|
1996-05-25 05:42:06 +08:00
|
|
|
|
errors while linking before deciding there is a problem.
|
1996-05-11 06:55:26 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
|
1996-05-25 04:16:39 +08:00
|
|
|
|
[Q8] ``I expect GNU libc to be 100% source code compatible with
|
|
|
|
|
the old Linux based GNU libc. Why isn't it like this?''
|
|
|
|
|
|
|
|
|
|
[A8] {DMT} Not every extension in Linux libc's history was well
|
1996-05-25 05:42:06 +08:00
|
|
|
|
thought-out. In fact it had a lot of problems with standards compliance
|
|
|
|
|
and with cleanliness. With the introduction of a new version number these
|
|
|
|
|
errors now can be corrected. Here is a list of the known source code
|
|
|
|
|
incompatibilities:
|
|
|
|
|
|
Tue May 28 04:38:10 1996 Ulrich Drepper <drepper@cygnus.com>
* limits.h: Change MB_LEN_MAX to 6. A 31-bit ISO 10646
character in UTF-8 encoding has that many bytes.
* locale/langinfo.h: New element _NL_CTYPE_MB_CUR_MAX.
* locale/categories.def: Add description of field _NL_CTYPE_MB_CUR_MAX.
* locale/Makefile (routines): Add mb_cur_max.
* locale/mb_cur_max.c: New file. This function gets called
when the macro MB_CUR_MAX is used.
* locale/C-ctype.c: Initialize new mb_cur_max field.
* locale/localeinfo.h: Change magic value because of incompatible
change.
* locale/programs/ld-ctype.c: Determine value of mb_cur_max
according to current character set and write it out with the rest.
* stdlib/stdlib.h (MB_CUR_MAX): Not constant anymore. Get value
according to currently used locale for catefory LC_CTYPE by
calling the function __ctype_get_mb_cur_max.
Tue May 28 03:27:46 1996 Ulrich Drepper <drepper@cygnus.com>
* FAQ: Fix some typos.
Tell that for Linux the kernel header files are necessary.
* PROJECTS: New file. List of open jobs for glibc.
* Makefile (distribute): Add PROJECTS.
* crypt/GNUmakefile (headers): New variable. Mention crypt.h.
* crypt/crypt.h: Header for crypt functions.
* elf/elf.h: Add some new constants from recent Cygnus ELF
header files.
* login/getutid_r.c: Test for correct type.
Don't depend on ut_type and ut_id unless _HAVE_UT_TYPE and
_HAVE_UT_ID resp. are defined.
Make really compliant with specification.
* login/getutline_r.c, login/pututline_r.c: Don't depend on
ut_type and ut_id unless _HAVE_UT_TYPE and _HAVE_UT_ID resp. are
defined.
Make really compliant with specification.
* login/setutent_r.c: Don't depend on ut_type and ut_id unless
_HAVE_UT_TYPE and _HAVE_UT_ID resp. are defined.
* login/login.c, login/logout.c, login/logwtmp.c: Complete
rewrite. Now based on getut*/setut* functions.
* stdlib/strtol.c: Undo changes of Wed May 22 01:48:54 1996.
This prevented using this file in other GNU packages.
* sysdeps/gnu/utmpbits.h: Define _HAVE_UT_TYPE, _HAVE_UT_ID,
and _HAVE_UT_TV because struct utmp has these members.
* sysdeps/libm-i387/e_exp.S: Correct exp(+-Inf) case.
* utmp.h: New file. Wrapper around login/utmp.h.
* elf/dl-error.c (struct catch): New type.
(catch): New static variable, struct catch *.
(catch_env, signalled_errstring, signalled_objname): Variables removed.
(_dl_signal_error): If CATCH is non-null, set its errstring and
objname members and jump to CATCH->env. If it is null, call
_dl_sysdep_fatal with a standard message.
* elf/rtld.c (dl_main): Explode `doit' function into dl_main's body.
No longer use _dl_catch_error.
1996-05-29 12:48:04 +08:00
|
|
|
|
* _GNU_SOURCE: glibc does not automatically define _GNU_SOURCE. Thus,
|
|
|
|
|
if a program depends on GNU extensions or some other non-standard
|
|
|
|
|
functionality, it is necessary to compile it with C compiler option
|
|
|
|
|
-D_GNU_SOURCE, or better, to put `#define _GNU_SOURCE' at the beginning
|
|
|
|
|
of your source files, before any C library header files are included.
|
|
|
|
|
This difference normally manifests itself in the form of missing
|
|
|
|
|
prototypes and/or data type definitions. Thus, if you get such errors,
|
|
|
|
|
the first thing you should do is try defining _GNU_SOURCE and see if
|
|
|
|
|
that makes the problem go away.
|
|
|
|
|
|
|
|
|
|
For more information consult the file `NOTES' part of the GNU C
|
|
|
|
|
library sources.
|
1996-05-25 04:16:39 +08:00
|
|
|
|
|
|
|
|
|
* reboot(): GNU libc sanitizes the interface of reboot() to be more
|
|
|
|
|
compatible with the interface used on other OSes. In particular,
|
|
|
|
|
reboot() as implemented in glibc takes just one argument. This argument
|
|
|
|
|
corresponds to the third argument of the Linux reboot system call.
|
|
|
|
|
That is, a call of the form reboot(a, b, c) needs to be changed into
|
|
|
|
|
reboot(c).
|
|
|
|
|
|
|
|
|
|
* errno: If a program uses variable "errno", then it _must_ include header
|
|
|
|
|
file <errno.h>. The old libc often (erroneously) declared this variable
|
|
|
|
|
implicitly as a side-effect of including other libc header files. glibc
|
|
|
|
|
is careful to avoid such namespace pollution, which, in turn, means that
|
|
|
|
|
you really need to include the header files that you depend on. This
|
|
|
|
|
difference normally manifests itself in the form of the compiler
|
|
|
|
|
complaining about the references of the undeclared symbol "errno".
|
|
|
|
|
|
|
|
|
|
* Linux-specific syscalls: All Linux system calls now have appropriate
|
|
|
|
|
library wrappers and corresponding declarations in various header files.
|
|
|
|
|
This is because the syscall() macro that was traditionally used to
|
|
|
|
|
work around missing syscall wrappers are inherently non-portable and
|
|
|
|
|
error-prone. The following tables lists all the new syscall stubs,
|
|
|
|
|
the header-file declaring their interface and the system call name.
|
|
|
|
|
|
|
|
|
|
syscall name: wrapper name: declaring header file:
|
|
|
|
|
------------- ------------- ----------------------
|
1996-06-03 03:47:36 +08:00
|
|
|
|
bdflush bdflush <sys/kdaemon.h>
|
1996-05-25 04:16:39 +08:00
|
|
|
|
create_module create_module <sys/module.h>
|
|
|
|
|
delete_module delete_module <sys/module.h>
|
|
|
|
|
get_kernel_syms get_kernel_syms <sys/module.h>
|
|
|
|
|
init_module init_module <sys/module.h>
|
1996-06-03 03:47:36 +08:00
|
|
|
|
syslog ksyslog_ctl <sys/klog.h>
|
1996-05-11 06:55:26 +08:00
|
|
|
|
|
1996-05-25 04:16:39 +08:00
|
|
|
|
~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
|
|
|
|
|
|
1996-05-11 06:55:26 +08:00
|
|
|
|
|
|
|
|
|
Answers were given by:
|
|
|
|
|
{UD} Ulrich Drepper, <drepper@cygnus.com>
|
1996-05-25 04:16:39 +08:00
|
|
|
|
{DMT} David Mosberger-Tang, <davidm@AZStarNet.com>
|
1996-05-11 06:55:26 +08:00
|
|
|
|
|
1996-05-25 05:42:06 +08:00
|
|
|
|
Amended by:
|
Tue May 28 04:38:10 1996 Ulrich Drepper <drepper@cygnus.com>
* limits.h: Change MB_LEN_MAX to 6. A 31-bit ISO 10646
character in UTF-8 encoding has that many bytes.
* locale/langinfo.h: New element _NL_CTYPE_MB_CUR_MAX.
* locale/categories.def: Add description of field _NL_CTYPE_MB_CUR_MAX.
* locale/Makefile (routines): Add mb_cur_max.
* locale/mb_cur_max.c: New file. This function gets called
when the macro MB_CUR_MAX is used.
* locale/C-ctype.c: Initialize new mb_cur_max field.
* locale/localeinfo.h: Change magic value because of incompatible
change.
* locale/programs/ld-ctype.c: Determine value of mb_cur_max
according to current character set and write it out with the rest.
* stdlib/stdlib.h (MB_CUR_MAX): Not constant anymore. Get value
according to currently used locale for catefory LC_CTYPE by
calling the function __ctype_get_mb_cur_max.
Tue May 28 03:27:46 1996 Ulrich Drepper <drepper@cygnus.com>
* FAQ: Fix some typos.
Tell that for Linux the kernel header files are necessary.
* PROJECTS: New file. List of open jobs for glibc.
* Makefile (distribute): Add PROJECTS.
* crypt/GNUmakefile (headers): New variable. Mention crypt.h.
* crypt/crypt.h: Header for crypt functions.
* elf/elf.h: Add some new constants from recent Cygnus ELF
header files.
* login/getutid_r.c: Test for correct type.
Don't depend on ut_type and ut_id unless _HAVE_UT_TYPE and
_HAVE_UT_ID resp. are defined.
Make really compliant with specification.
* login/getutline_r.c, login/pututline_r.c: Don't depend on
ut_type and ut_id unless _HAVE_UT_TYPE and _HAVE_UT_ID resp. are
defined.
Make really compliant with specification.
* login/setutent_r.c: Don't depend on ut_type and ut_id unless
_HAVE_UT_TYPE and _HAVE_UT_ID resp. are defined.
* login/login.c, login/logout.c, login/logwtmp.c: Complete
rewrite. Now based on getut*/setut* functions.
* stdlib/strtol.c: Undo changes of Wed May 22 01:48:54 1996.
This prevented using this file in other GNU packages.
* sysdeps/gnu/utmpbits.h: Define _HAVE_UT_TYPE, _HAVE_UT_ID,
and _HAVE_UT_TV because struct utmp has these members.
* sysdeps/libm-i387/e_exp.S: Correct exp(+-Inf) case.
* utmp.h: New file. Wrapper around login/utmp.h.
* elf/dl-error.c (struct catch): New type.
(catch): New static variable, struct catch *.
(catch_env, signalled_errstring, signalled_objname): Variables removed.
(_dl_signal_error): If CATCH is non-null, set its errstring and
objname members and jump to CATCH->env. If it is null, call
_dl_sysdep_fatal with a standard message.
* elf/rtld.c (dl_main): Explode `doit' function into dl_main's body.
No longer use _dl_catch_error.
1996-05-29 12:48:04 +08:00
|
|
|
|
{RM} Roland McGrath, <roland@gnu.ai.mit.edu>
|
1996-05-11 06:55:26 +08:00
|
|
|
|
|
|
|
|
|
Local Variables:
|
|
|
|
|
mode:text
|
|
|
|
|
End:
|