mirror of
https://sourceware.org/git/glibc.git
synced 2025-01-03 00:10:10 +00:00
Fri May 24 17:30:50 1996 Roland McGrath <roland@delasyd.gnu.ai.mit.edu>
* login/pututline_r.c: Use struct assignment instead of memcpy. * login/getutline_r.c: Use strncmp instead of comparing two pointers that will only be equal if you are overwriting the data and screwing yourself anyway.
This commit is contained in:
parent
613a76ff52
commit
41f27456ac
@ -1,3 +1,11 @@
|
|||||||
|
Fri May 24 17:30:50 1996 Roland McGrath <roland@delasyd.gnu.ai.mit.edu>
|
||||||
|
|
||||||
|
* login/pututline_r.c: Use struct assignment instead of memcpy.
|
||||||
|
|
||||||
|
* login/getutline_r.c: Use strncmp instead of comparing two pointers
|
||||||
|
that will only be equal if you are overwriting the data and screwing
|
||||||
|
yourself anyway.
|
||||||
|
|
||||||
Fri May 24 02:31:36 1996 Ulrich Drepper <drepper@cygnus.com>
|
Fri May 24 02:31:36 1996 Ulrich Drepper <drepper@cygnus.com>
|
||||||
|
|
||||||
* sysdeps/unix/sysv/linux/speed.c: Add new speed value 460800.
|
* sysdeps/unix/sysv/linux/speed.c: Add new speed value 460800.
|
||||||
|
66
FAQ
66
FAQ
@ -1,8 +1,8 @@
|
|||||||
Frequently Asked Question on GNU C Library
|
Frequently Asked Question on GNU C Library
|
||||||
|
|
||||||
As every FAQ this one also tries to answer the questions the user
|
As every FAQ this one also tries to answer questions the user might have
|
||||||
might when using the pacakge. Please make sure you read this before
|
when using the pacakge. Please make sure you read this before sending
|
||||||
sending questions/bug reports to the maintainers.
|
questions or bug reports to the maintainers.
|
||||||
|
|
||||||
The GNU C Library is very complex. The building process exploits the
|
The GNU C Library is very complex. The building process exploits the
|
||||||
features available in tools generally available. But many things can
|
features available in tools generally available. But many things can
|
||||||
@ -11,17 +11,17 @@ 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.
|
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.
|
This will only be necessary if you intend to contribute or change it.
|
||||||
|
|
||||||
If you have any question which you think might be worth answered in
|
If you have any questions you think should be answered in this document,
|
||||||
this document let me know.
|
please let me know.
|
||||||
|
|
||||||
--drepper@cygnus.com
|
--drepper@cygnus.com
|
||||||
|
|
||||||
~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
|
~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
|
||||||
[Q1] ``What systems the GNU C Library runs on?''
|
[Q1] ``What systems does the GNU C Library run on?''
|
||||||
|
|
||||||
[Q2] ``What compiler do I need to translate GNU libc?''
|
[Q2] ``What compiler do I need to build GNU libc?''
|
||||||
|
|
||||||
[Q3] ``When starting make I get only errors messages.
|
[Q3] ``When starting make I get only error messages.
|
||||||
What's wrong?''
|
What's wrong?''
|
||||||
|
|
||||||
[Q4] ``After I changed configure.in I get `Autoconf version X.Y.
|
[Q4] ``After I changed configure.in I get `Autoconf version X.Y.
|
||||||
@ -39,7 +39,7 @@ this document let me know.
|
|||||||
|
|
||||||
|
|
||||||
~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
|
~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
|
||||||
[Q1] ``What systems the GNU C Library runs on?''
|
[Q1] ``What systems does the GNU C Library run on?''
|
||||||
|
|
||||||
[A1] {UD} This is difficult to answer. The file `README' lists the
|
[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
|
architectures GNU libc is known to run *at some time*. This does not
|
||||||
@ -57,12 +57,11 @@ some success reports first.
|
|||||||
If you have a system not listed above (or in the `README' file) and
|
If you have a system not listed above (or in the `README' file) and
|
||||||
you are really interested in porting it, contact
|
you are really interested in porting it, contact
|
||||||
|
|
||||||
Roland McGrath <roland@gnu.ai.mit.edu>
|
<bug-glibc@prep.ai.mit.edu>
|
||||||
or Ulrich Drepper <drepper@cygnus.com>
|
|
||||||
|
|
||||||
|
|
||||||
~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
|
~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
|
||||||
[Q2] ``What compiler do I need to translate GNU libc?''
|
[Q2] ``What compiler do I need to build GNU libc?''
|
||||||
|
|
||||||
[A2] {UD} It is (almost) impossible to compile GNU C Library using a
|
[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
|
different compiler than GNU CC. A lot of extensions of GNU CC are
|
||||||
@ -111,6 +110,9 @@ 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
|
you should use the GNU binutils if they provide at least the same
|
||||||
functionality as your system's tools.
|
functionality as your system's tools.
|
||||||
|
|
||||||
|
Always get the newest release of GNU binutils available.
|
||||||
|
Older releases are known to have bugs that affect building the GNU C library.
|
||||||
|
|
||||||
|
|
||||||
~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
|
~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
|
||||||
[Q6] ``Do I need some more things to compile GNU C Library?''
|
[Q6] ``Do I need some more things to compile GNU C Library?''
|
||||||
@ -125,7 +127,7 @@ functionality as your system's tools.
|
|||||||
* plenty of time (approx 1h for i386-linux on i586@133 or 2.5h or
|
* plenty of time (approx 1h for i386-linux on i586@133 or 2.5h or
|
||||||
i486@66).
|
i486@66).
|
||||||
|
|
||||||
If you have some more interested measurements let me know.
|
If you are interested in some more measurements let me know.
|
||||||
|
|
||||||
|
|
||||||
~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
|
~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
|
||||||
@ -146,7 +148,7 @@ symbols:
|
|||||||
is linked against libm, too.)
|
is linked against libm, too.)
|
||||||
|
|
||||||
Generally, you should make sure you find a real program which produces
|
Generally, you should make sure you find a real program which produces
|
||||||
errors while linking.
|
errors while linking before deciding there is a problem.
|
||||||
|
|
||||||
|
|
||||||
~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
|
~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
|
||||||
@ -154,21 +156,19 @@ errors while linking.
|
|||||||
the old Linux based GNU libc. Why isn't it like this?''
|
the old Linux based GNU libc. Why isn't it like this?''
|
||||||
|
|
||||||
[A8] {DMT} Not every extension in Linux libc's history was well
|
[A8] {DMT} Not every extension in Linux libc's history was well
|
||||||
thought. In fact it had a lot of problems with standard compliance
|
thought-out. In fact it had a lot of problems with standards compliance
|
||||||
and cleanliness. With the introduction of a new version number these
|
and with cleanliness. With the introduction of a new version number these
|
||||||
errors now can be corrected. The following list shows a list of the
|
errors now can be corrected. Here is a list of the known source code
|
||||||
know source code incompatibilities.
|
incompatibilities:
|
||||||
|
|
||||||
* _GNU_SOURCE: glibc does not automatically define _GNU_SOURCE. Thus,
|
* _GNU_SOURCE: glibc does not automatically define _GNU_SOURCE. Thus, if a
|
||||||
if a program depends on GNU extensions, it is necessary
|
program depends on GNU extensions, it is necessary to compile it with C
|
||||||
to compile it with C compiler option -D_GNU_SOURCE. This difference
|
compiler option -D_GNU_SOURCE, or better, to put `#define _GNU_SOURCE' at
|
||||||
normally mainfests itself in the form of missing prototypes and/or
|
the beginning of your source files, before any C library header files are
|
||||||
data type definitions. Thus, if you get such errors, the first thing you
|
included. This difference normally mainfests itself in the form of
|
||||||
should do is grep the header files in /usr/include and /usr/include/sys
|
missing prototypes and/or data type definitions. Thus, if you get such
|
||||||
to check whether the functions are really missing or whether it is
|
errors, the first thing you should do is try defining _GNU_SOURCE and see
|
||||||
just necessary to add a define of _GNU_SOURCE. Similar comments apply
|
if that makes the problem go away.
|
||||||
to _BSD_SOURCE, _POSIX_SOURCE, _SVID_SOURCE etc (see
|
|
||||||
/usr/include/features.h).
|
|
||||||
|
|
||||||
* reboot(): GNU libc sanitizes the interface of reboot() to be more
|
* reboot(): GNU libc sanitizes the interface of reboot() to be more
|
||||||
compatible with the interface used on other OSes. In particular,
|
compatible with the interface used on other OSes. In particular,
|
||||||
@ -194,16 +194,12 @@ know source code incompatibilities.
|
|||||||
|
|
||||||
syscall name: wrapper name: declaring header file:
|
syscall name: wrapper name: declaring header file:
|
||||||
------------- ------------- ----------------------
|
------------- ------------- ----------------------
|
||||||
bdflush bdflush <unistd.h>
|
bdflush bdflush ???
|
||||||
create_module create_module <sys/module.h>
|
create_module create_module <sys/module.h>
|
||||||
delete_module delete_module <sys/module.h>
|
delete_module delete_module <sys/module.h>
|
||||||
get_kernel_syms get_kernel_syms <sys/module.h>
|
get_kernel_syms get_kernel_syms <sys/module.h>
|
||||||
init_module init_module <sys/module.h>
|
init_module init_module <sys/module.h>
|
||||||
syslog ksyslog_ctl <unistd.h>
|
syslog ksyslog_ctl ???
|
||||||
|
|
||||||
To get the Linux-specific declarations in <unistd.h>, you'll need
|
|
||||||
to define C pre-processor macro _LINUX_SOURCE during compilation.
|
|
||||||
|
|
||||||
|
|
||||||
~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
|
~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
|
||||||
|
|
||||||
@ -212,6 +208,8 @@ Answers were given by:
|
|||||||
{UD} Ulrich Drepper, <drepper@cygnus.com>
|
{UD} Ulrich Drepper, <drepper@cygnus.com>
|
||||||
{DMT} David Mosberger-Tang, <davidm@AZStarNet.com>
|
{DMT} David Mosberger-Tang, <davidm@AZStarNet.com>
|
||||||
|
|
||||||
|
Amended by:
|
||||||
|
{RM} Roland McGrath <roland@gnu.ai.mit.edu>
|
||||||
|
|
||||||
Local Variables:
|
Local Variables:
|
||||||
mode:text
|
mode:text
|
||||||
|
@ -53,7 +53,8 @@ getutline_r (const struct utmp *line, struct utmp **utmp,
|
|||||||
/* Update position pointer. */
|
/* Update position pointer. */
|
||||||
utmp_data->loc_utmp += sizeof (struct utmp);
|
utmp_data->loc_utmp += sizeof (struct utmp);
|
||||||
}
|
}
|
||||||
while (line->ut_line != utmp_data->ubuf.ut_line);
|
while (strncmp (line->ut_line, utmp_data->ubuf.ut_line,
|
||||||
|
sizeof line->ut_line));
|
||||||
|
|
||||||
*utmp = &utmp_data->ubuf;
|
*utmp = &utmp_data->ubuf;
|
||||||
|
|
||||||
|
@ -44,9 +44,9 @@ pututline_r (const struct utmp *utmp_ptr, struct utmp_data *utmp_data)
|
|||||||
struct utmp_data *data_tmp = alloca (sizeof (utmp_data));
|
struct utmp_data *data_tmp = alloca (sizeof (utmp_data));
|
||||||
struct utmp *dummy;
|
struct utmp *dummy;
|
||||||
|
|
||||||
memcpy (data_tmp, utmp_data, sizeof (utmp_data));
|
*data_tmp = *utmp_data;
|
||||||
utmp_data = data_tmp;
|
utmp_data = data_tmp;
|
||||||
|
|
||||||
if (getutid_r (utmp_ptr, &dummy, utmp_data) < 0)
|
if (getutid_r (utmp_ptr, &dummy, utmp_data) < 0)
|
||||||
{
|
{
|
||||||
if (errno != ESRCH)
|
if (errno != ESRCH)
|
||||||
@ -66,7 +66,7 @@ pututline_r (const struct utmp *utmp_ptr, struct utmp_data *utmp_data)
|
|||||||
|
|
||||||
/* XXX An alternative solution would be to call an SUID root program
|
/* XXX An alternative solution would be to call an SUID root program
|
||||||
which write the new value. */
|
which write the new value. */
|
||||||
|
|
||||||
/* Try to lock the file. */
|
/* Try to lock the file. */
|
||||||
if (flock (utmp_data->ut_fd, LOCK_EX | LOCK_NB) < 0 && errno != ENOSYS)
|
if (flock (utmp_data->ut_fd, LOCK_EX | LOCK_NB) < 0 && errno != ENOSYS)
|
||||||
{
|
{
|
||||||
@ -76,7 +76,7 @@ pututline_r (const struct utmp *utmp_ptr, struct utmp_data *utmp_data)
|
|||||||
/* This time we ignore the error. */
|
/* This time we ignore the error. */
|
||||||
(void) flock (utmp_data->ut_fd, LOCK_EX | LOCK_NB);
|
(void) flock (utmp_data->ut_fd, LOCK_EX | LOCK_NB);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Write the new data. */
|
/* Write the new data. */
|
||||||
if (write (utmp_data->ut_fd, &utmp_data->ubuf, sizeof (struct utmp))
|
if (write (utmp_data->ut_fd, &utmp_data->ubuf, sizeof (struct utmp))
|
||||||
!= sizeof (struct utmp))
|
!= sizeof (struct utmp))
|
||||||
|
@ -247,11 +247,11 @@ sparc-sun-solaris2.@var{n}
|
|||||||
sparc-sun-sunos4.@var{n}
|
sparc-sun-sunos4.@var{n}
|
||||||
@end smallexample
|
@end smallexample
|
||||||
|
|
||||||
Each case of @samp{i@var{x}86} can be @samp{i386}, @samp{i486}, or
|
Each case of @samp{i@var{x}86} can be @samp{i386}, @samp{i486},
|
||||||
@samp{i586}. All of those configurations produce a library that can run
|
@samp{i586}, or @samp{i686}.. All of those configurations produce a
|
||||||
on any of these processors. The library will be optimized for the
|
library that can run on any of these processors. The library will be
|
||||||
specified processor, but will not use instructions not available on all
|
optimized for the specified processor, but will not use instructions not
|
||||||
of them.
|
available on all of them.
|
||||||
|
|
||||||
While no other configurations are supported, there are handy aliases for
|
While no other configurations are supported, there are handy aliases for
|
||||||
these few. (These aliases work in other GNU software as well.)
|
these few. (These aliases work in other GNU software as well.)
|
||||||
@ -329,8 +329,9 @@ But what they do is fairly straightforward, and only requires that you
|
|||||||
define a few variables in the right places.
|
define a few variables in the right places.
|
||||||
|
|
||||||
The library sources are divided into subdirectories, grouped by topic.
|
The library sources are divided into subdirectories, grouped by topic.
|
||||||
|
|
||||||
The @file{string} subdirectory has all the string-manipulation
|
The @file{string} subdirectory has all the string-manipulation
|
||||||
functions, @file{stdio} has all the standard I/O functions, etc.
|
functions, @file{math} has all the mathematical functions, etc.
|
||||||
|
|
||||||
Each subdirectory contains a simple makefile, called @file{Makefile},
|
Each subdirectory contains a simple makefile, called @file{Makefile},
|
||||||
which defines a few @code{make} variables and then includes the global
|
which defines a few @code{make} variables and then includes the global
|
||||||
@ -370,7 +371,9 @@ run all the test programs. If a test program needs input, put the test
|
|||||||
data in a file called @file{@var{test-program}.input}; it will be given to
|
data in a file called @file{@var{test-program}.input}; it will be given to
|
||||||
the test program on its standard input. If a test program wants to be
|
the test program on its standard input. If a test program wants to be
|
||||||
run with arguments, put the arguments (all on a single line) in a file
|
run with arguments, put the arguments (all on a single line) in a file
|
||||||
called @file{@var{test-program}.args}.@refill
|
called @file{@var{test-program}.args}. Test programs should exit with
|
||||||
|
zero status when the test passes, and nonzero status when the test
|
||||||
|
indicates a bug in the library or error in building.
|
||||||
|
|
||||||
@item others
|
@item others
|
||||||
The names of ``other'' programs associated with this section of the
|
The names of ``other'' programs associated with this section of the
|
||||||
@ -459,17 +462,22 @@ So the final list is @file{unix/bsd/vax unix/bsd unix/inet unix posix}.
|
|||||||
and @file{stub}. These two are always implicitly appended to the list
|
and @file{stub}. These two are always implicitly appended to the list
|
||||||
of subdirectories (in that order), so you needn't put them in an
|
of subdirectories (in that order), so you needn't put them in an
|
||||||
@file{Implies} file, and you should not create any subdirectories under
|
@file{Implies} file, and you should not create any subdirectories under
|
||||||
them. @file{generic} is for things that can be implemented in
|
them intended to be new specific categories. @file{generic} is for
|
||||||
machine-independent C, using only other machine-independent functions in
|
things that can be implemented in machine-independent C, using only
|
||||||
the C library. @file{stub} is for @dfn{stub} versions of functions
|
other machine-independent functions in the C library. @file{stub} is
|
||||||
which cannot be implemented on a particular machine or operating system.
|
for @dfn{stub} versions of functions which cannot be implemented on a
|
||||||
The stub functions always return an error, and set @code{errno} to
|
particular machine or operating system. The stub functions always
|
||||||
@code{ENOSYS} (Function not implemented). @xref{Error Reporting}.
|
return an error, and set @code{errno} to @code{ENOSYS} (Function not
|
||||||
|
implemented). @xref{Error Reporting}.
|
||||||
|
|
||||||
A source file is known to be system-dependent by its having a version in
|
A source file is known to be system-dependent by its having a version in
|
||||||
@file{generic} or @file{stub}; every system-dependent function should
|
@file{generic} or @file{stub}; every generally-available function whose
|
||||||
have either a generic or stub implementation (there is no point in
|
implementation is system-dependent in should have either a generic or
|
||||||
having both).
|
stub implementation (there is no point in having both). Some rare functions
|
||||||
|
are only useful on specific systems and aren't defined at all on others;
|
||||||
|
these do not appear anywhere in the system-independent source code or makefiles
|
||||||
|
(including the @file{generic} and @file{stub} directories), only in the
|
||||||
|
system-dependent @file{Makefile} in the specific system's subdirectory.
|
||||||
|
|
||||||
If you come across a file that is in one of the main source directories
|
If you come across a file that is in one of the main source directories
|
||||||
(@file{string}, @file{stdio}, etc.), and you want to write a machine- or
|
(@file{string}, @file{stdio}, etc.), and you want to write a machine- or
|
||||||
|
Loading…
Reference in New Issue
Block a user