1998-05-18  Ulrich Drepper  <drepper@cygnus.com>

	* iconvdata/TESTS: ISO-2022-KR has not really ASCII as a subset
	(the designation sequence is disturbing).
This commit is contained in:
Ulrich Drepper 1998-05-18 09:53:46 +00:00
parent 92040cbc5f
commit 41aa20c243
5 changed files with 343 additions and 346 deletions

View File

@ -1,3 +1,8 @@
1998-05-18 Ulrich Drepper <drepper@cygnus.com>
* iconvdata/TESTS: ISO-2022-KR has not really ASCII as a subset
(the designation sequence is disturbing).
1998-05-17 Thorsten Kukuk <kukuk@vt.uni-paderborn.de> 1998-05-17 Thorsten Kukuk <kukuk@vt.uni-paderborn.de>
* sunrpc/svc_tcp.c: Add FreeBSD DoS patch. * sunrpc/svc_tcp.c: Add FreeBSD DoS patch.

675
INSTALL
View File

@ -1,404 +1,389 @@
Library Maintenance Installing the GNU C Library
******************* ****************************
Adding New Functions Installation of the GNU C library is relatively simple, but usually
==================== requires several GNU tools to be installed already.
The process of building the library is driven by the makefiles, which Before you do anything else, you should read the file `FAQ' found at
make heavy use of special features of GNU `make'. The makefiles are the top level of the source tree. This file answers common questions
very complex, and you probably don't want to try to understand them. and describes problems you may experience with compilation and
But what they do is fairly straightforward, and only requires that you installation. It is updated more frequently than this manual.
define a few variables in the right places.
The library sources are divided into subdirectories, grouped by To configure the GNU C library for your system, run the shell script
topic. `configure' with `sh'. You might use an argument which is the
conventional GNU name for your system configuration--for example,
`i486-pc-linux-gnu', for Linux running on i486. *Note Installation:
(gcc.info)Installation, for a full description of standard GNU
configuration names. If you omit the configuration name, `configure'
will try to guess one for you by inspecting the system it is running
on. It may or may not be able to come up with a guess, and the guess
might be wrong. `configure' will tell you the canonical name of the
chosen configuration before proceeding.
The `string' subdirectory has all the string-manipulation functions, Here are some options that you should specify (if appropriate) when
`math' has all the mathematical functions, etc. you run `configure':
Each subdirectory contains a simple makefile, called `Makefile', `--with-binutils=DIRECTORY'
which defines a few `make' variables and then includes the global Use the binutils (assembler and linker) in `DIRECTORY', not the
makefile `Rules' with a line like: ones the C compiler would default to. You could use this option if
the default binutils on your system cannot deal with all the
constructs in the GNU C library. (`configure' will detect the
problem and suppress these constructs, so the library will still
be usable, but functionality may be lost--for example, you can not
build a shared libc with old binutils.)
include ../Rules `--without-fp'
`--nfp'
Use this option if your computer lacks hardware floating-point
support and your operating system does not emulate an FPU.
The basic variables that a subdirectory makefile defines are: `--prefix=DIRECTORY'
Install machine-independent data files in subdirectories of
`DIRECTORY'. (You can also set this in `configparms'; see below.)
The default is to install in `/usr/local'.
`subdir' `--exec-prefix=DIRECTORY'
The name of the subdirectory, for example `stdio'. This variable Install the library and other machine-dependent files in
*must* be defined. subdirectories of `DIRECTORY'. (You can also set this in
`configparms'; see below.) The default is to use <prefix>/bin and
<prefix>/sbin.
`headers' `--enable-shared'
The names of the header files in this section of the library, such `--disable-shared'
as `stdio.h'. Enable or disable building of an ELF shared library on systems that
support it. The default is to build the shared library on systems
using ELF when the GNU `binutils' are available.
`routines' `--enable-profile'
`aux' `--disable-profile'
The names of the modules (source files) in this section of the Enable or disable building of the profiled C library, `-lc_p'. The
library. These should be simple names, such as `strlen' (rather default is to build the profiled library. You may wish to disable
than complete file names, such as `strlen.c'). Use `routines' for it if you don't plan to do profiling, because it doubles the build
modules that define functions in the library, and `aux' for time of compiling just the unprofiled static library.
auxiliary modules containing things like data definitions. But the
values of `routines' and `aux' are just concatenated, so there
really is no practical difference.
`tests' `--enable-omitfp'
The names of test programs for this section of the library. These Enable building a highly-optimized but possibly undebuggable C
should be simple names, such as `tester' (rather than complete file library. This causes the normal static and shared (if enabled) C
names, such as `tester.c'). `make tests' will build and run all libraries to be compiled with maximal optimization, including the
the test programs. If a test program needs input, put the test `-fomit-frame-pointer' switch that makes debugging impossible on
data in a file called `TEST-PROGRAM.input'; it will be given to many machines, and without debugging information (which makes the
the test program on its standard input. If a test program wants binaries substantially smaller). An additional static library is
to be run with arguments, put the arguments (all on a single line) compiled with no optimization and full debugging information, and
in a file called `TEST-PROGRAM.args'. Test programs should exit installed as `-lc_g'.
with zero status when the test passes, and nonzero status when the
test indicates a bug in the library or error in building.
`others' `--enable-add-ons[=LIST]'
The names of "other" programs associated with this section of the Certain components of the C library are distributed separately
library. These are programs which are not tests per se, but are from the rest of the sources. In particular, the `crypt' function
other small programs included with the library. They are built by and its friends are separated due to US export control
`make others'. regulations, and the threading support code for Linux is
maintained separately. You can get these "add-on" packages from
the same place you got the libc sources. To use them, unpack them
into your source tree, and give `configure' the `--enable-add-ons'
option.
`install-lib' If you do not wish to use some add-on package that you have
`install-data' present in your source tree, give this option a list of the
`install' add-ons that you *do* want used, like this:
Files to be installed by `make install'. Files listed in `--enable-add-ons=crypt,linuxthreads'
`install-lib' are installed in the directory specified by `libdir'
in `configparms' or `Makeconfig' (*note Installation::.). Files
listed in `install-data' are installed in the directory specified
by `datadir' in `configparms' or `Makeconfig'. Files listed in
`install' are installed in the directory specified by `bindir' in
`configparms' or `Makeconfig'.
`distribute' `--with-headers=DIRECTORY'
Other files from this subdirectory which should be put into a Search only DIRECTORY and the C compiler's private directory for
distribution tar file. You need not list here the makefile itself header files not found in the libc sources. `/usr/include' will
or the source and header files listed in the other standard not be searched if this option is given. On Linux, DIRECTORY
variables. Only define `distribute' if there are files used in an should be the kernel's private include directory (usually
unusual way that should go into the distribution. `/usr/src/linux/include').
`generated' This option is primarily of use on a system where the headers in
Files which are generated by `Makefile' in this subdirectory. `/usr/include' come from an older version of glibc. Conflicts can
These files will be removed by `make clean', and they will never occasionally happen in this case. Note that Linux libc5 qualifies
go into a distribution. as an older version of glibc. You can also use this option if you
want to compile glibc with a newer set of kernel headers than the
ones found in `/usr/include'.
`extra-objs' You should not build the library in the same directory as the
Extra object files which are built by `Makefile' in this sources, because there are bugs in `make clean'. Make a directory for
subdirectory. This should be a list of file names like `foo.o'; the build, and run `configure' from that directory, like this:
the files will actually be found in whatever directory object
files are being built in. These files will be removed by
`make clean'. This variable is used for secondary object files
needed to build `others' or `tests'.
Porting the GNU C Library mkdir linux
========================= cd linux
../configure
The GNU C library is written to be easily portable to a variety of `configure' looks for the sources in whatever directory you specified
machines and operating systems. Machine- and operating system-dependent for finding `configure' itself. It does not matter where in the file
functions are well separated to make it easy to add implementations for system the source and build directories are--as long as you specify the
new machines or operating systems. This section describes the layout of source directory when you run `configure', you will get the proper
the library source tree and explains the mechanisms used to select results.
machine-dependent code to use.
All the machine-dependent and operating system-dependent files in the This feature lets you keep sources and binaries in different
library are in the subdirectory `sysdeps' under the top-level library directories, and that makes it easy to build the library for several
source directory. This directory contains a hierarchy of different machines from the same set of sources. Simply create a build
subdirectories (*note Hierarchy Conventions::.). directory for each target machine, and run `configure' in that
directory specifying the target machine's configuration name.
Each subdirectory of `sysdeps' contains source files for a The library has a number of special-purpose configuration parameters.
particular machine or operating system, or for a class of machine or These are defined in the file `configparms'; see the comments in that
operating system (for example, systems by a particular vendor, or all file for the details. To change them, copy `configparms' into your
machines that use IEEE 754 floating-point format). A configuration build directory and modify it as appropriate for your system.
specifies an ordered list of these subdirectories. Each subdirectory `configure' will not notice your modifications if you change the file
implicitly appends its parent directory to the list. For example, in the source directory.
specifying the list `unix/bsd/vax' is equivalent to specifying the list
`unix/bsd/vax unix/bsd unix'. A subdirectory can also specify that it
implies other subdirectories which are not directly above it in the
directory hierarchy. If the file `Implies' exists in a subdirectory,
it lists other subdirectories of `sysdeps' which are appended to the
list, appearing after the subdirectory containing the `Implies' file.
Lines in an `Implies' file that begin with a `#' character are ignored
as comments. For example, `unix/bsd/Implies' contains:
# BSD has Internet-related things.
unix/inet
and `unix/Implies' contains: It is easy to configure the GNU C library for cross-compilation by
posix setting a few variables in `configparms'. Set `CC' to the
cross-compiler for the target you configured the library for; it is
important to use this same `CC' value when running `configure', like
this: `CC=TARGET-gcc configure TARGET'. Set `BUILD_CC' to the compiler
to use for for programs run on the build system as part of compiling
the library. You may need to set `AR' and `RANLIB' to cross-compiling
versions of `ar' and `ranlib' if the native tools are not configured to
work with object files for the target you configured for.
So the final list is `unix/bsd/vax unix/bsd unix/inet unix posix'. Some of the machine-dependent code for some machines uses extensions
in the GNU C compiler, so you may need to compile the library with GCC.
(In fact, all of the existing complete ports require GCC.)
`sysdeps' has a "special" subdirectory called `generic'. It is To build the library and related programs, type `make'. This will
always implicitly appended to the list of subdirectories, so you produce a lot of output, some of which may look like errors from `make'
needn't put it in an `Implies' file, and you should not create any (but isn't). Look for error messages from `make' containing `***'.
subdirectories under it intended to be new specific categories. Those indicate that something is really wrong.
`generic' serves two purposes. First, the makefiles do not bother to
look for a system-dependent version of a file that's not in `generic'.
This means that any system-dependent source file must have an analogue
in `generic', even if the routines defined by that file are not
implemented on other platforms. Second. the `generic' version of a
system-dependent file is used if the makefiles do not find a version
specific to the system you're compiling for.
If it is possible to implement the routines in a `generic' file in The compilation process takes several hours even on fast hardware;
machine-independent C, using only other machine-independent functions in expect at least two hours for the default configuration on i586 for
the C library, then you should do so. Otherwise, make them stubs. A Linux. For Hurd times are much longer. All current releases of GCC
"stub" function is a function which cannot be implemented on a have a problem which causes them to take several minutes to compile
particular machine or operating system. Stub functions always return an certain files in the iconvdata directory. Do not panic if the compiler
error, and set `errno' to `ENOSYS' (Function not implemented). *Note appears to hang.
Error Reporting::. If you define a stub function, you must place the
statement `stub_warning(FUNCTION)', where FUNCTION is the name of your
function, after its definition; also, you must include the file
`<stub-tag.h>' into your file. This causes the function to be listed
in the installed `<gnu/stubs.h>', and makes GNU ld warn when the
function is used.
Some rare functions are only useful on specific systems and aren't To build and run some test programs which exercise some of the
defined at all on others; these do not appear anywhere in the library facilities, type `make check'. This will produce several files
system-independent source code or makefiles (including the `generic' with names like `PROGRAM.out'.
directory), only in the system-dependent `Makefile' in the specific
system's subdirectory.
If you come across a file that is in one of the main source To format the `GNU C Library Reference Manual' for printing, type
directories (`string', `stdio', etc.), and you want to write a machine- `make dvi'. You need a working TeX installation to do this.
or operating system-dependent version of it, move the file into
`sysdeps/generic' and write your new implementation in the appropriate
system-specific subdirectory. Note that if a file is to be
system-dependent, it *must not* appear in one of the main source
directories.
There are a few special files that may exist in each subdirectory of To install the library and its header files, and the Info files of
`sysdeps': the manual, type `make install'. This will build things if necessary,
before installing them. If you want to install the files in a different
place than the one specified at configuration time you can specify a
value for the Makefile variable `install_root' on the command line.
This is useful to create chroot'ed environment or to prepare binary
releases.
`Makefile' For now (in this alpha version, and at least on RedHat Linux), if you
A makefile for this machine or operating system, or class of are trying to install this as your default libraries, a different
machine or operating system. This file is included by the library installation method is recommended. Move `/usr/include' out of the
makefile `Makerules', which is used by the top-level makefile and way, create a new `/usr/include' directory (don't forget the symlinks
the subdirectory makefiles. It can change the variables set in the `/usr/include/asm' and `/usr/include/linux', that should point to
including makefile or add new rules. It can use GNU `make' `/usr/src/linux/include/asm' and `/usr/src/linux/include/linux' -or
conditional directives based on the variable `subdir' (see above) wherever you keep your kernel sources-respectively), build normally and
to select different sets of variables and rules for different install into somewhere else via `install_root'. Then move your
sections of the library. It can also set the `make' variable `/usr/include' back, and copy the newly created stuff by hand over the
`sysdep-routines', to specify extra modules to be included in the old. Remember to copy programs and shared libraries into `FILENAME.new'
library. You should use `sysdep-routines' rather than adding and then move `FILENAME.new' to `FILENAME', as the files might be in
modules to `routines' because the latter is used in determining use. You will have to `ranlib' your copies of the static libraries
what to distribute for each subdirectory of the main source tree. `/usr/lib/libNAME.a'. You will see that `libbsd-compat.a', `libieee.a',
and `libmcheck.a' are just object files, not archives. This is normal.
Copy the new header files over the old ones by something like
`cd /usr; (cd INSTALL_ROOT; tar cf - include) | tar xf -'.
Each makefile in a subdirectory in the ordered list of Recommended Tools to Install the GNU C Library
subdirectories to be searched is included in order. Since several ==============================================
system-dependent makefiles may be included, each should append to
`sysdep-routines' rather than simply setting it:
sysdep-routines := $(sysdep-routines) foo bar We recommend installing the following GNU tools before attempting to
build the GNU C library:
`Subdirs' * GNU `make' 3.75
This file contains the names of new whole subdirectories under the
top-level library source tree that should be included for this
system. These subdirectories are treated just like the
system-independent subdirectories in the library source tree, such
as `stdio' and `math'.
Use this when there are completely new sets of functions and header You need the latest version of GNU `make'. Modifying the GNU C
files that should go into the library for the system this Library to work with other `make' programs would be so hard that we
subdirectory of `sysdeps' implements. For example, recommend you port GNU `make' instead. *Really.* We recommend
`sysdeps/unix/inet/Subdirs' contains `inet'; the `inet' directory version GNU `make' version 3.75. Versions 3.76 and 3.76.1 are
contains various network-oriented operations which only make sense known to have bugs which only show up in big projects like GNU
to put in the library on systems that support the Internet. `libc'.
`Dist' * GCC 2.8.1/EGCS 1.0.2
This file contains the names of files (relative to the
subdirectory of `sysdeps' in which it appears) which should be
included in the distribution. List any new files used by rules in
the `Makefile' in the same directory, or header files used by the
source files in that directory. You don't need to list files that
are implementations (either C or assembly source) of routines
whose names are given in the machine-independent makefiles in the
main source tree.
`configure' On most platforms, the GNU C library can only be compiled with the
This file is a shell script fragment to be run at configuration GNU C compiler family. We recommend GCC version 2.8.1 and EGCS
time. The top-level `configure' script uses the shell `.' command version 1.0.2 or later versions of these two; earlier versions may
to read the `configure' file in each system-dependent directory have problems.
chosen, in order. The `configure' files are often generated from
`configure.in' files using Autoconf.
A system-dependent `configure' script will usually add things to * GNU `binutils' 2.8.1.0.23
the shell variables `DEFS' and `config_vars'; see the top-level
`configure' script for details. The script can check for
`--with-PACKAGE' options that were passed to the top-level
`configure'. For an option `--with-PACKAGE=VALUE' `configure'
sets the shell variable `with_PACKAGE' (with any dashes in PACKAGE
converted to underscores) to VALUE; if the option is just
`--with-PACKAGE' (no argument), then it sets `with_PACKAGE' to
`yes'.
`configure.in' Using the GNU `binutils' (assembler, linker, and related tools) is
This file is an Autoconf input fragment to be processed into the preferable when possible, and they are required to build an ELF
file `configure' in this subdirectory. *Note Introduction: shared C library. Version 2.1 of the library uses ELF symbol
(autoconf.info)Introduction, for a description of Autoconf. You versioning extensively. Support for this feature is incomplete or
should write either `configure' or `configure.in', but not both. buggy before binutils 2.8.1.0.23, so you must use at least this
The first line of `configure.in' should invoke the `m4' macro version.
`GLIBC_PROVIDES'. This macro does several `AC_PROVIDE' calls for
Autoconf macros which are used by the top-level `configure'
script; without this, those macros might be invoked again
unnecessarily by Autoconf.
That is the general system for how system-dependencies are isolated. * GNU `texinfo' 3.11
Layout of the `sysdeps' Directory Hierarchy To correctly translate and install the Texinfo documentation you
------------------------------------------- need this version of the `texinfo' package. Earlier versions do
not understand all the tags used in the document, and the
installation mechanisms for the info files is not present or works
differently.
A GNU configuration name has three parts: the CPU type, the On some Debian Linux based systems the `install-info' program
manufacturer's name, and the operating system. `configure' uses these supplied with the system works differently from the one we expect.
to pick the list of system-dependent directories to look for. If the You must therefore run `make install' like this:
`--nfp' option is *not* passed to `configure', the directory
`MACHINE/fpu' is also used. The operating system often has a "base
operating system"; for example, if the operating system is `Linux', the
base operating system is `unix/sysv'. The algorithm used to pick the
list of directories is simple: `configure' makes a list of the base
operating system, manufacturer, CPU type, and operating system, in that
order. It then concatenates all these together with slashes in
between, to produce a directory name; for example, the configuration
`i686-linux-gnu' results in `unix/sysv/linux/i386/i686'. `configure'
then tries removing each element of the list in turn, so
`unix/sysv/linux' and `unix/sysv' are also tried, among others. Since
the precise version number of the operating system is often not
important, and it would be very inconvenient, for example, to have
identical `irix6.2' and `irix6.3' directories, `configure' tries
successively less specific operating system names by removing trailing
suffixes starting with a period.
As an example, here is the complete list of directories that would be make INSTALL_INFO=/path/to/GNU/install-info install
tried for the configuration `i686-linux-gnu' (with the `crypt' and
`linuxthreads' add-on):
sysdeps/i386/elf * GNU `awk' 3.0
crypt/sysdeps/unix
linuxthreads/sysdeps/unix/sysv/linux
linuxthreads/sysdeps/pthread
linuxthreads/sysdeps/unix/sysv
linuxthreads/sysdeps/unix
linuxthreads/sysdeps/i386/i686
linuxthreads/sysdeps/i386
linuxthreads/sysdeps/pthread/no-cmpxchg
sysdeps/unix/sysv/linux/i386
sysdeps/unix/sysv/linux
sysdeps/gnu
sysdeps/unix/common
sysdeps/unix/mman
sysdeps/unix/inet
sysdeps/unix/sysv/i386/i686
sysdeps/unix/sysv/i386
sysdeps/unix/sysv
sysdeps/unix/i386
sysdeps/unix
sysdeps/posix
sysdeps/i386/i686
sysdeps/i386/i486
sysdeps/libm-i387/i686
sysdeps/i386/fpu
sysdeps/libm-i387
sysdeps/i386
sysdeps/wordsize-32
sysdeps/ieee754
sysdeps/libm-ieee754
sysdeps/generic
Different machine architectures are conventionally subdirectories at Several files used during the build are generated using features
the top level of the `sysdeps' directory tree. For example, of GNU `awk' that are not found in other implementations.
`sysdeps/sparc' and `sysdeps/m68k'. These contain files specific to
those machine architectures, but not specific to any particular
operating system. There might be subdirectories for specializations of
those architectures, such as `sysdeps/m68k/68020'. Code which is
specific to the floating-point coprocessor used with a particular
machine should go in `sysdeps/MACHINE/fpu'.
There are a few directories at the top level of the `sysdeps' If you change any of the `configure.in' files you will also need
hierarchy that are not for particular machine architectures.
`generic' * GNU `autoconf' 2.12
As described above (*note Porting::.), this is the subdirectory
that every configuration implicitly uses after all others.
`ieee754' and if you change any of the message translation files you will need
This directory is for code using the IEEE 754 floating-point
format, where the C type `float' is IEEE 754 single-precision
format, and `double' is IEEE 754 double-precision format. Usually
this directory is referred to in the `Implies' file in a machine
architecture-specific directory, such as `m68k/Implies'.
`libm-ieee754' * GNU `gettext' 0.10 or later
This directory contains an implementation of a mathematical library
usable on platforms which use IEEE 754 conformant floating-point
arithmetic.
`libm-i387' You may also need these packages if you upgrade your source tree using
This is a special case. Ideally the code should be in patches, although we try to avoid this.
`sysdeps/i386/fpu' but for various reasons it is kept aside.
`posix' Supported Configurations
This directory contains implementations of things in the library in ========================
terms of POSIX.1 functions. This includes some of the POSIX.1
functions themselves. Of course, POSIX.1 cannot be completely
implemented in terms of itself, so a configuration using just
`posix' cannot be complete.
`unix' The GNU C Library currently supports configurations that match the
This is the directory for Unix-like things. *Note Porting to following patterns:
Unix::. `unix' implies `posix'. There are some special-purpose
subdirectories of `unix':
`unix/common' alpha-ANYTHING-linux
This directory is for things common to both BSD and System V arm-ANYTHING-linuxaout
release 4. Both `unix/bsd' and `unix/sysv/sysv4' imply arm-ANYTHING-none
`unix/common'. iX86-ANYTHING-gnu
iX86-ANYTHING-linux
m68k-ANYTHING-linux
powerpc-ANYTHING-linux
sparc-ANYTHING-linux
sparc64-ANYTHING-linux
`unix/inet' Former releases of this library (version 1.09.1 and perhaps earlier
This directory is for `socket' and related functions on Unix versions) used to run on the following configurations:
systems. `unix/inet/Subdirs' enables the `inet' top-level
subdirectory. `unix/common' implies `unix/inet'.
`mach' alpha-dec-osf1
This is the directory for things based on the Mach microkernel alpha-ANYTHING-linuxecoff
from CMU (including the GNU operating system). Other basic iX86-ANYTHING-bsd4.3
operating systems (VMS, for example) would have their own iX86-ANYTHING-isc2.2
directories at the top level of the `sysdeps' hierarchy, parallel iX86-ANYTHING-isc3.N
to `unix' and `mach'. iX86-ANYTHING-sco3.2
iX86-ANYTHING-sco3.2v4
iX86-ANYTHING-sysv
iX86-ANYTHING-sysv4
iX86-force_cpu386-none
iX86-sequent-bsd
i960-nindy960-none
m68k-hp-bsd4.3
m68k-mvme135-none
m68k-mvme136-none
m68k-sony-newsos3
m68k-sony-newsos4
m68k-sun-sunos4.N
mips-dec-ultrix4.N
mips-sgi-irix4.N
sparc-sun-solaris2.N
sparc-sun-sunos4.N
Porting the GNU C Library to Unix Systems Since no one has volunteered to test and fix these configurations,
----------------------------------------- they are not supported at the moment. They probably don't compile;
they definitely don't work anymore. Porting the library is not hard.
If you are interested in doing a port, please contact the glibc
maintainers by sending electronic mail to <bug-glibc@gnu.org>.
Most Unix systems are fundamentally very similar. There are Each case of `iX86' can be `i386', `i486', `i586', or `i686'. All
variations between different machines, and variations in what of those configurations produce a library that can run on any of these
facilities are provided by the kernel. But the interface to the processors. The library will be optimized for the specified processor,
operating system facilities is, for the most part, pretty uniform and but will not use instructions not available on all of them.
simple.
The code for Unix systems is in the directory `unix', at the top While no other configurations are supported, there are handy aliases
level of the `sysdeps' hierarchy. This directory contains for these few. (These aliases work in other GNU software as well.)
subdirectories (and subdirectory trees) for various Unix variants.
The functions which are system calls in most Unix systems are decstation
implemented in assembly code, which is generated automatically from hp320-bsd4.3 hp300bsd
specifications in files named `syscalls.list'. There are several such i486-gnu
files, one in `sysdeps/unix' and others in its subdirectories. Some i586-linux
special system calls are implemented in files that are named with a i386-sco
suffix of `.S'; for example, `_exit.S'. Files ending in `.S' are run i386-sco3.2v4
through the C preprocessor before being fed to the assembler. i386-sequent-dynix
i386-svr4
news
sun3-sunos4.N sun3
sun4-solaris2.N sun4-sunos5.N
sun4-sunos4.N sun4
These files all use a set of macros that should be defined in Useful hints for the installation
`sysdep.h'. The `sysdep.h' file in `sysdeps/unix' partially defines =================================
them; a `sysdep.h' file in another directory must finish defining them
for the particular machine and operating system variant. See
`sysdeps/unix/sysdep.h' and the machine-specific `sysdep.h'
implementations to see what these macros are and what they should do.
The system-specific makefile for the `unix' directory There are a some more or less obvious methods one should know when
(`sysdeps/unix/Makefile') gives rules to generate several files from compiling GNU libc:
the Unix system you are building the library on (which is assumed to be
the target system you are building the library *for*). All the * Better never compile in the source directory. Create a new
generated files are put in the directory where the object files are directory and run the `configure' from there. Everything should
kept; they should not affect the source tree itself. The files happen automagically.
generated are `ioctls.h', `errnos.h', `sys/param.h', and `errlist.c'
(for the `stdio' section of the library). * You can use the `-j' option of GNU make by changing the line
specifying `PARALLELMAKE' in the Makefile generated during the
configuration.
It is not useful to start the `make' process using the `-j' option
since this option is not propagated down to the sub-`make's.
* If you made some changes after a complete build and only want to
check these changes run `make' while specifying the list of
subdirs it has to visit.
make subdirs="nss elf"
The above build run will only visit the subdirectories `nss' and
`elf'. Beside this it updates the `libc' files itself.
Reporting Bugs
==============
There are probably bugs in the GNU C library. There are certainly
errors and omissions in this manual. If you report them, they will get
fixed. If you don't, no one will ever know about them and they will
remain unfixed for all eternity, if not longer.
To report a bug, first you must find it. Hopefully, this will be the
hard part. Once you've found a bug, make sure it's really a bug. A
good way to do this is to see if the GNU C library behaves the same way
some other C library does. If so, probably you are wrong and the
libraries are right (but not necessarily). If not, one of the libraries
is probably wrong.
Once you're sure you've found a bug, try to narrow it down to the
smallest test case that reproduces the problem. In the case of a C
library, you really only need to narrow it down to one library function
call, if possible. This should not be too difficult.
The final step when you have a simple test case is to report the bug.
When reporting a bug, send your test case, the results you got, the
results you expected, what you think the problem might be (if you've
thought of anything), your system type, and the version of the GNU C
library which you are using. Also include the files `config.status'
and `config.make' which are created by running `configure'; they will
be in whatever directory was current when you ran `configure'.
If you think you have found some way in which the GNU C library does
not conform to the ISO and POSIX standards (*note Standards and
Portability::.), that is definitely a bug. Report it!
Send bug reports to the Internet address <bug-glibc@gnu.org> using
the `glibcbug' script which is installed by the GNU C library. If you
have other problems with installation or use, please report those as
well.
If you are not sure how a function should behave, and this manual
doesn't tell you, that's a bug in the manual. Report that too! If the
function's behavior disagrees with the manual, then either the library
or the manual has a bug, so report the disagreement. If you find any
errors or omissions in this manual, please report them to the Internet
address <bug-glibc-manual@gnu.org>. If you refer to specific sections
when reporting on the manual, please include the section names for
easier identification.

View File

@ -73,4 +73,4 @@ CP1254 CP1254 Y UTF8
CP1255 CP1255 Y UTF8 CP1255 CP1255 Y UTF8
CP1256 CP1256 Y UTF8 CP1256 CP1256 Y UTF8
CP1257 CP1257 Y UTF8 CP1257 CP1257 Y UTF8
ISO-2022-KR ISO-2022-KR Y UTF8 ISO-2022-KR ISO-2022-KR N UTF8

View File

@ -387,6 +387,7 @@ svctcp_recv (xprt, msg)
cd->x_id = msg->rm_xid; cd->x_id = msg->rm_xid;
return (TRUE); return (TRUE);
} }
cd->strm_stat = XPRT_DIED; /* XXXX */
return (FALSE); return (FALSE);
} }

View File

@ -567,6 +567,12 @@ set_input_fragment (RECSTREAM *rstrm)
return FALSE; return FALSE;
header = ntohl (header); header = ntohl (header);
rstrm->last_frag = ((header & LAST_FRAG) == 0) ? FALSE : TRUE; rstrm->last_frag = ((header & LAST_FRAG) == 0) ? FALSE : TRUE;
/*
* Sanity check. Try not to accept wildly incorrect
* record sizes.
*/
if ((header & (~LAST_FRAG)) > rstrm->recvsize)
return(FALSE);
rstrm->fbtbc = header & ~LAST_FRAG; rstrm->fbtbc = header & ~LAST_FRAG;
return TRUE; return TRUE;
} }