* configure.in: Make GCC version check require 3.[2-9]* and no others.

* configure: Regenerated.
	* manual/install.texi (Tools for Compilation): Say 3.2 is required.
	(Configuring and compiling): Don't mention older GCC versions any more.
	* INSTALL: Regenerated.

	* manual/install.texi (Configuring and compiling, Installation,
	Running make install, Linux): Linux -> GNU/Linux where appropriate.

	* elf/rtld.c (_dl_start_final): Move defn before _dl_start so it can
	be inlined.  Declare it with always_inline if [DONT_USE_BOOTSTRAP_MAP]
	and with noinline otherwise.  Remove hack alloca use to prevent
	inlining, we can ask for it explicitly nowadays.
This commit is contained in:
Roland McGrath 2002-08-22 00:13:04 +00:00
parent c2248c44e4
commit 90d1d40b27
7 changed files with 68 additions and 53 deletions

View File

@ -1,5 +1,19 @@
2002-08-21 Roland McGrath <roland@redhat.com> 2002-08-21 Roland McGrath <roland@redhat.com>
* configure.in: Make GCC version check require 3.[2-9]* and no others.
* configure: Regenerated.
* manual/install.texi (Tools for Compilation): Say 3.2 is required.
(Configuring and compiling): Don't mention older GCC versions any more.
* INSTALL: Regenerated.
* manual/install.texi (Configuring and compiling, Installation,
Running make install, Linux): Linux -> GNU/Linux where appropriate.
* elf/rtld.c (_dl_start_final): Move defn before _dl_start so it can
be inlined. Declare it with always_inline if [DONT_USE_BOOTSTRAP_MAP]
and with noinline otherwise. Remove hack alloca use to prevent
inlining, we can ask for it explicitly nowadays.
* dlfcn/bug-dlsym1.c: New file. * dlfcn/bug-dlsym1.c: New file.
* dlfcn/bug-dlsym1-lib1.c, dlfcn/bug-dlsym1-lib2.c: New files. * dlfcn/bug-dlsym1-lib1.c, dlfcn/bug-dlsym1-lib2.c: New files.
* dlfcn/Makefile (distribute): Add them. * dlfcn/Makefile (distribute): Add them.

53
INSTALL
View File

@ -15,8 +15,8 @@ activate them, and they will be compiled into the library. As of the
unusual installation, you should get this. unusual installation, you should get this.
Support for POSIX threads is maintained by someone else, so it's in a Support for POSIX threads is maintained by someone else, so it's in a
separate package. It is only available for Linux systems, but this will separate package. It is only available for GNU/Linux systems, but this
change in the future. Get it from the same place you got the main will change in the future. Get it from the same place you got the main
bundle; the file is `glibc-linuxthreads-VERSION.tar.gz'. bundle; the file is `glibc-linuxthreads-VERSION.tar.gz'.
You will need recent versions of several GNU tools: definitely GCC You will need recent versions of several GNU tools: definitely GCC
@ -28,7 +28,7 @@ Configuring and compiling GNU Libc
GNU libc can be compiled in the source directory, but we strongly GNU libc can be compiled in the source directory, but we strongly
advise building it in a separate build directory. For example, if you advise building it in a separate build directory. For example, if you
have unpacked the glibc sources in `/src/gnu/glibc-2.2.0', create a have unpacked the glibc sources in `/src/gnu/glibc-2.3', create a
directory `/src/gnu/glibc-build' to put the object files in. This directory `/src/gnu/glibc-build' to put the object files in. This
allows removing the whole build directory in case an error occurs, allows removing the whole build directory in case an error occurs,
which is the safest way to get a fresh start and should always be done. which is the safest way to get a fresh start and should always be done.
@ -36,7 +36,7 @@ which is the safest way to get a fresh start and should always be done.
From your object directory, run the shell script `configure' located From your object directory, run the shell script `configure' located
at the top level of the source tree. In the scenario above, you'd type at the top level of the source tree. In the scenario above, you'd type
$ ../glibc-2.2.0/configure ARGS... $ ../glibc-2.3/configure ARGS...
Please note that even if you're building in a separate build Please note that even if you're building in a separate build
directory, the compilation needs to modify a few files in the source directory, the compilation needs to modify a few files in the source
@ -88,7 +88,7 @@ will be used, and CFLAGS sets optimization options for the compiler.
`--enable-add-ons=linuxthreads' `--enable-add-ons=linuxthreads'
`--enable-kernel=VERSION' `--enable-kernel=VERSION'
This option is currently only useful on Linux systems. The This option is currently only useful on GNU/Linux systems. The
VERSION parameter should have the form X.Y.Z and describes the VERSION parameter should have the form X.Y.Z and describes the
smallest version of the Linux kernel the generated library is smallest version of the Linux kernel the generated library is
expected to support. The higher the VERSION number is, the less expected to support. The higher the VERSION number is, the less
@ -169,11 +169,10 @@ but isn't. Look for error messages from `make' containing `***'.
Those indicate that something is seriously wrong. Those indicate that something is seriously wrong.
The compilation process can take several hours. Expect at least two The compilation process can take several hours. Expect at least two
hours for the default configuration on i586 for Linux. For Hurd, times hours for the default configuration on i586 for GNU/Linux. For Hurd,
are much longer. Except for EGCS 1.1 and GCC 2.95 (and later versions times are much longer. Some complex modules may take a very long time
of GCC), all supported versions of GCC have a problem which causes them to compile, as much as several minutes on slower machines. Do not
to take several minutes to compile certain files in the iconvdata panic if the compiler appears to hang.
directory. Do not panic if the compiler appears to hang.
If you want to run a parallel make, simply pass the `-j' option with If you want to run a parallel make, simply pass the `-j' option with
an appropriate numeric parameter to `make'. You need a recent GNU an appropriate numeric parameter to `make'. You need a recent GNU
@ -247,7 +246,7 @@ order given above.
You may also need to reconfigure GCC to work with the new library. You may also need to reconfigure GCC to work with the new library.
The easiest way to do that is to figure out the compiler switches to The easiest way to do that is to figure out the compiler switches to
make it work again (`-Wl,--dynamic-linker=/lib/ld-linux.so.2' should make it work again (`-Wl,--dynamic-linker=/lib/ld-linux.so.2' should
work on Linux systems) and use them to recompile gcc. You can also work on GNU/Linux systems) and use them to recompile gcc. You can also
edit the specs file (`/usr/lib/gcc-lib/TARGET/VERSION/specs'), but that edit the specs file (`/usr/lib/gcc-lib/TARGET/VERSION/specs'), but that
is a bit of a black art. is a bit of a black art.
@ -303,19 +302,19 @@ build the GNU C library:
recommend GNU `make' version 3.79. All earlier versions have recommend GNU `make' version 3.79. All earlier versions have
severe bugs or lack features. severe bugs or lack features.
* GCC 2.95 or newer * GCC 3.2 or newer
The GNU C library can only be compiled with the GNU C compiler The GNU C library can only be compiled with the GNU C compiler
family. As of the 2.2 release, GCC 2.95.2 or higher is required. family. As of the 2.3 release, GCC 3.2 or higher is required. As
As of this writing, GCC 2.95.3 is the compiler we advise to use. of this writing, GCC 3.2 is the compiler we advise to use.
You can use whatever compiler you like to compile programs that You can use whatever compiler you like to compile programs that
use GNU libc, but be aware that both GCC 2.7 and 2.8 have bugs in use GNU libc, but be aware that both GCC 2.7 and 2.8 have bugs in
their floating-point support that may be triggered by the math their floating-point support that may be triggered by the math
library. library.
For PPC you might need some patches even on top of the last GCC Check the FAQ for any special compiler issues on particular
version. See the FAQ. platforms.
* GNU `binutils' 2.10.1 or later * GNU `binutils' 2.10.1 or later
@ -441,17 +440,17 @@ some `i686' specific instructions. To generate code for other models,
you have to configure for that model and give GCC the appropriate you have to configure for that model and give GCC the appropriate
`-march=' and `-mcpu=' compiler switches via CFLAGS. `-march=' and `-mcpu=' compiler switches via CFLAGS.
Specific advice for Linux systems Specific advice for GNU/Linux systems
================================= =====================================
If you are installing GNU libc on a Linux system, you need to have If you are installing GNU libc on a GNU/Linux system, you need to
the header files from a 2.2 or newer kernel around for reference. For have the header files from a 2.2 or newer kernel around for reference.
some architectures, like ia64, sh and hppa, you need at least headers For some architectures, like ia64, sh and hppa, you need at least
from kernel 2.3.99 (sh and hppa) or 2.4.0 (ia64). You do not need to headers from kernel 2.3.99 (sh and hppa) or 2.4.0 (ia64). You do not
use that kernel, just have its headers where glibc can access at them. need to use that kernel, just have its headers where glibc can access
The easiest way to do this is to unpack it in a directory such as at them. The easiest way to do this is to unpack it in a directory
`/usr/src/linux-2.2.1'. In that directory, run `make config' and such as `/usr/src/linux-2.2.1'. In that directory, run `make config'
accept all the defaults. Then run `make include/linux/version.h'. and accept all the defaults. Then run `make include/linux/version.h'.
Finally, configure glibc with the option Finally, configure glibc with the option
`--with-headers=/usr/src/linux-2.2.1/include'. Use the most recent `--with-headers=/usr/src/linux-2.2.1/include'. Use the most recent
kernel you can get your hands on. kernel you can get your hands on.
@ -468,7 +467,7 @@ to get rid of the old header files anyway.
symlinks into the kernel sources. GNU libc provides its own versions symlinks into the kernel sources. GNU libc provides its own versions
of these files. of these files.
Linux expects some components of the libc installation to be in GNU/Linux expects some components of the libc installation to be in
`/lib' and some in `/usr/lib'. This is handled automatically if you `/lib' and some in `/usr/lib'. This is handled automatically if you
configure glibc with `--prefix=/usr'. If you set some other prefix or configure glibc with `--prefix=/usr'. If you set some other prefix or
allow it to default to `/usr/local', then all the components are allow it to default to `/usr/local', then all the components are

4
configure vendored
View File

@ -1470,7 +1470,7 @@ echo "configure:1470: checking version of $CC" >&5
ac_prog_version=`$CC -v 2>&1 | sed -n 's/^.*version \([egcygnustpi-]*[0-9.]*\).*$/\1/p'` ac_prog_version=`$CC -v 2>&1 | sed -n 's/^.*version \([egcygnustpi-]*[0-9.]*\).*$/\1/p'`
case $ac_prog_version in case $ac_prog_version in
'') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;; '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;;
*gcc-2.9[5-9].*|*2.8.[1-9]*|*2.9|*2.9.[0-9]*|2.9[5-9]*|3.[0-9]*|cygnus-2.9[1-9]*|gcc-2.9[5-9]|gcc-2.1[0-9][0-9]|sgicc-*) 3.[2-9]*)
ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;; ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;;
*) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;; *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;;
@ -1478,7 +1478,7 @@ echo "configure:1470: checking version of $CC" >&5
echo "$ac_t""$ac_prog_version" 1>&6 echo "$ac_t""$ac_prog_version" 1>&6
fi fi
if test $ac_verc_fail = yes; then if test $ac_verc_fail = yes; then
critic_missing=gcc critic_missing="$critic_missing gcc"
fi fi
for ac_prog in gnumake gmake make for ac_prog in gnumake gmake make

View File

@ -578,9 +578,8 @@ fi
# These programs are version sensitive. # These programs are version sensitive.
AC_REQUIRE([AC_CHECK_TOOL_PREFIX])dnl AC_REQUIRE([AC_CHECK_TOOL_PREFIX])dnl
AC_CHECK_PROG_VER(CC, ${ac_tool_prefix}gcc ${ac_tool_prefix}cc, -v, AC_CHECK_PROG_VER(CC, ${ac_tool_prefix}gcc ${ac_tool_prefix}cc, -v,
[version \([egcygnustpi-]*[0-9.]*\)], [version \([egcygnustpi-]*[0-9.]*\)], [3.[2-9]*],
[*gcc-2.9[5-9].*|*2.8.[1-9]*|*2.9|*2.9.[0-9]*|2.9[5-9]*|3.[0-9]*|cygnus-2.9[1-9]*|gcc-2.9[5-9]|gcc-2.1[0-9][0-9]|sgicc-*], critic_missing="$critic_missing gcc")
critic_missing=gcc)
AC_CHECK_PROG_VER(MAKE, gnumake gmake make, --version, AC_CHECK_PROG_VER(MAKE, gnumake gmake make, --version,
[GNU Make[^0-9]*\([0-9][0-9.]*\)], [GNU Make[^0-9]*\([0-9][0-9.]*\)],
[3.79* | 3.[89]*], critic_missing="$critic_missing make") [3.79* | 3.[89]*], critic_missing="$critic_missing make")

View File

@ -1,3 +1,8 @@
2002-08-21 Roland McGrath <roland@redhat.com>
* td_thr_tls_get_addr.c (td_thr_tls_get_addr): __attribute_used__ ->
__attribute__ ((unused)) for arguments.
2002-08-07 Ulrich Drepper <drepper@redhat.com> 2002-08-07 Ulrich Drepper <drepper@redhat.com>
* thread_dbP.h: Define LINUXTHREADS_INITIAL_REPORT_EVENTS. * thread_dbP.h: Define LINUXTHREADS_INITIAL_REPORT_EVENTS.

View File

@ -27,10 +27,10 @@
td_err_e td_err_e
td_thr_tls_get_addr (const td_thrhandle_t *th __attribute_used__, td_thr_tls_get_addr (const td_thrhandle_t *th __attribute__ ((unused)),
struct link_map *map __attribute_used__, struct link_map *map __attribute__ ((unused)),
size_t offset __attribute_used__, size_t offset __attribute__ ((unused)),
void **address __attribute_used__) void **address __attribute__ ((unused)))
{ {
#if USE_TLS #if USE_TLS
struct _pthread_descr_struct pds; struct _pthread_descr_struct pds;

View File

@ -20,7 +20,7 @@ to activate them, and they will be compiled into the library. As of the
unusual installation, you should get this. unusual installation, you should get this.
Support for POSIX threads is maintained by someone else, so it's in a Support for POSIX threads is maintained by someone else, so it's in a
separate package. It is only available for Linux systems, but this will separate package. It is only available for GNU/Linux systems, but this will
change in the future. Get it from the same place you got the main change in the future. Get it from the same place you got the main
bundle; the file is @file{glibc-linuxthreads-@var{VERSION}.tar.gz}. bundle; the file is @file{glibc-linuxthreads-@var{VERSION}.tar.gz}.
@ -33,7 +33,7 @@ GNU Make, and possibly others. @xref{Tools for Compilation}, below.
compiled. compiled.
* Tools for Compilation:: You'll need these first. * Tools for Compilation:: You'll need these first.
* Supported Configurations:: What it runs on, what it doesn't. * Supported Configurations:: What it runs on, what it doesn't.
* Linux:: Specific advice for Linux systems. * Linux:: Specific advice for GNU/Linux systems.
* Reporting Bugs:: So they'll get fixed. * Reporting Bugs:: So they'll get fixed.
@end menu @end menu
@ -110,7 +110,7 @@ tree, give this option a list of the add-ons that you @emph{do} want
used, like this: @samp{--enable-add-ons=linuxthreads} used, like this: @samp{--enable-add-ons=linuxthreads}
@item --enable-kernel=@var{version} @item --enable-kernel=@var{version}
This option is currently only useful on Linux systems. The This option is currently only useful on GNU/Linux systems. The
@var{version} parameter should have the form X.Y.Z and describes the @var{version} parameter should have the form X.Y.Z and describes the
smallest version of the Linux kernel the generated library is expected smallest version of the Linux kernel the generated library is expected
to support. The higher the @var{version} number is, the less to support. The higher the @var{version} number is, the less
@ -195,11 +195,10 @@ produce a lot of output, some of which may look like errors from
containing @samp{***}. Those indicate that something is seriously wrong. containing @samp{***}. Those indicate that something is seriously wrong.
The compilation process can take several hours. Expect at least two The compilation process can take several hours. Expect at least two
hours for the default configuration on i586 for Linux. For Hurd, times hours for the default configuration on i586 for GNU/Linux. For Hurd,
are much longer. Except for EGCS 1.1 and GCC 2.95 (and later versions times are much longer. Some complex modules may take a very long time
of GCC), all supported versions of GCC have a problem which causes them to compile, as much as several minutes on slower machines. Do not
to take several minutes to compile certain files in the iconvdata panic if the compiler appears to hang.
directory. Do not panic if the compiler appears to hang.
If you want to run a parallel make, simply pass the @samp{-j} option If you want to run a parallel make, simply pass the @samp{-j} option
with an appropriate numeric parameter to @code{make}. You need a recent with an appropriate numeric parameter to @code{make}. You need a recent
@ -276,7 +275,7 @@ order given above.
You may also need to reconfigure GCC to work with the new library. The You may also need to reconfigure GCC to work with the new library. The
easiest way to do that is to figure out the compiler switches to make it easiest way to do that is to figure out the compiler switches to make it
work again (@samp{-Wl,--dynamic-linker=/lib/ld-linux.so.2} should work on work again (@samp{-Wl,--dynamic-linker=/lib/ld-linux.so.2} should work on
Linux systems) and use them to recompile gcc. You can also edit the specs GNU/Linux systems) and use them to recompile gcc. You can also edit the specs
file (@file{/usr/lib/gcc-lib/@var{TARGET}/@var{VERSION}/specs}), but that file (@file{/usr/lib/gcc-lib/@var{TARGET}/@var{VERSION}/specs}), but that
is a bit of a black art. is a bit of a black art.
@ -338,18 +337,17 @@ recommend GNU @code{make} version 3.79. All earlier versions have severe
bugs or lack features. bugs or lack features.
@item @item
GCC 2.95 or newer GCC 3.2 or newer
The GNU C library can only be compiled with the GNU C compiler family. The GNU C library can only be compiled with the GNU C compiler family.
As of the 2.2 release, GCC 2.95.2 or higher is required. As of this As of the 2.3 release, GCC 3.2 or higher is required. As of this
writing, GCC 2.95.3 is the compiler we advise to use. writing, GCC 3.2 is the compiler we advise to use.
You can use whatever compiler you like to compile programs that use GNU You can use whatever compiler you like to compile programs that use GNU
libc, but be aware that both GCC 2.7 and 2.8 have bugs in their libc, but be aware that both GCC 2.7 and 2.8 have bugs in their
floating-point support that may be triggered by the math library. floating-point support that may be triggered by the math library.
For PPC you might need some patches even on top of the last GCC version. Check the FAQ for any special compiler issues on particular platforms.
See the FAQ.
@item @item
GNU @code{binutils} 2.10.1 or later GNU @code{binutils} 2.10.1 or later
@ -498,11 +496,11 @@ and give GCC the appropriate @samp{-march=} and @samp{-mcpu=} compiler
switches via @var{CFLAGS}. switches via @var{CFLAGS}.
@node Linux @node Linux
@appendixsec Specific advice for Linux systems @appendixsec Specific advice for GNU/Linux systems
@cindex upgrading from libc5 @cindex upgrading from libc5
@cindex kernel header files @cindex kernel header files
If you are installing GNU libc on a Linux system, you need to have the If you are installing GNU libc on a GNU/Linux system, you need to have the
header files from a 2.2 or newer kernel around for reference. For some header files from a 2.2 or newer kernel around for reference. For some
architectures, like ia64, sh and hppa, you need at least headers from architectures, like ia64, sh and hppa, you need at least headers from
kernel 2.3.99 (sh and hppa) or 2.4.0 (ia64). You do not need to use kernel 2.3.99 (sh and hppa) or 2.4.0 (ia64). You do not need to use
@ -526,7 +524,7 @@ Note that @file{/usr/include/net} and @file{/usr/include/scsi} should
@strong{not} be symlinks into the kernel sources. GNU libc provides its @strong{not} be symlinks into the kernel sources. GNU libc provides its
own versions of these files. own versions of these files.
Linux expects some components of the libc installation to be in GNU/Linux expects some components of the libc installation to be in
@file{/lib} and some in @file{/usr/lib}. This is handled automatically @file{/lib} and some in @file{/usr/lib}. This is handled automatically
if you configure glibc with @samp{--prefix=/usr}. If you set some other if you configure glibc with @samp{--prefix=/usr}. If you set some other
prefix or allow it to default to @file{/usr/local}, then all the prefix or allow it to default to @file{/usr/local}, then all the