Commit Graph

23 Commits

Author SHA1 Message Date
Joseph Myers
4863355ad5 Require GCC 4.6 or later to build glibc.
As discussed in the thread starting at
<https://sourceware.org/ml/libc-alpha/2014-10/msg00792.html>, and
continuing into November, this patch increases the minimum GCC version
for building glibc to 4.6 (there seemed to be no clear consensus for
4.7).  In particular, this allows us to use #pragma GCC diagnostic for
fine-grained warning control with -Werror (subject to establishing a
suitable policy for that use).  The documentation has a statement, as
requested, about the most recent GCC version tested for building
glibc, and I've updated <https://sourceware.org/glibc/wiki/Release> to
refer to updating that statement.  A NEWS entry is added for this
change, although previous such changes didn't get them.

Tested for x86_64 (testsuite, and that installed shared libraries are
unchanged by this patch).

	* configure.ac (libc_cv_compiler_ok): Require GCC 4.6 or later.
	* configure: Regenerated.
	* manual/install.texi (Tools for Compilation): Document a
	requirement of GCC 4.6 or later and that GCC 4.9 is the newest
	compiler verified to work.
	* INSTALL: Regenerated.
2014-11-14 18:00:34 +00:00
Andrew Senkevich
bd80507166 Update minimal required bunutils version to 2.22 2014-11-10 11:16:46 -08:00
Roland McGrath
461a7b1e45 Rework compiler version check in configure. 2014-10-24 14:45:47 -07:00
Joseph Myers
af296fcdab Remove bitrotten --enable-oldest-abi (bug 6652).
This patch removes the --enable-oldest-abi configure option, which has
long been bitrotten (as reported in bug 6652).  The principle of
removing this option was agreed in the thread starting at
<https://sourceware.org/ml/libc-alpha/2013-07/msg00174.html>.

Tested for x86_64 and x86 that the installed shared libraries other
than libc.so are unchanged by this patch and that libc.so disassembly
and symbol versions are unchanged (debug info changes because of
changed line numbers in csu/version.c).

	[BZ #6652]
	* Makeconfig (soversions-default-setname): Remove variable.
	($(common-objpfx)soversions.i): Don't pass default_setname to
	soversions.awk.
	* Makerules ($(common-objpfx)abi-versions.h): Don't pass
	oldest_abi to abi-versions.awk.
	* config.h.in (GLIBC_OLDEST_ABI): Remove macro undefine.
	* config.make.in (oldest-abi): Remove variable.
	* configure.ac (--enable-oldest-abi): Remove configure option.
	* configure: Regenerated.
	* csu/version.c (banner) [GLIBC_OLDEST_ABI]: Remove conditional
	text.
	* scripts/abi-versions.awk: Do not handle oldest_abi variable.
	* scripts/soversions.awk: Do not handle default_setname variable.
	* sysdeps/mach/hurd/configure.ac: Do not handle oldest_abi
	variable.
	* sysdeps/mach/hurd/configure: Regenerated.
	* sysdeps/unix/sysv/linux/configure.ac: Do not handle oldest_abi
	variable.
	* sysdeps/unix/sysv/linux/configure: Regenerated.
2014-09-16 17:45:03 +00:00
Joseph Myers
ba90e05052 Remove configuration name patterns from shlib-versions.
This patch removes the first column (patterns matching configuration
names) from shlib-versions, leaving shlib-versions entry selection
based purely on sysdeps directories.

An implication of this removal is that the default for any non-Linux
ports using NPTL will be the same SONAMEs for NPTL libraries as for
Linux (as those defaults, previously limited to .*-.*-linux.*, are
left in nptl/shlib-versions and nptl_db/shlib-versions).

Special host_os handling in configure.ac that was purely for
shlib-versions is removed.  (The host_os setting is still used for
libc-abis - see
<https://sourceware.org/ml/libc-alpha/2014-01/msg00375.html> regarding
that - but no entries there are affected by this change.)

Tested on x86_64 and x86 that the installed shared libraries are
unchanged by this patch.

	* scripts/soversions.awk: Do not handle configuration names.
	* Makeconfig ($(common-objpfx)soversions.i): Do not pass cpu,
	vendor and os variables to soversions.awk.
	* configure.ac: Do not modify gnu-* host_os.
	* configure: Regenerated
	* shlib-versions: Remove first column with configuration names.
	* nptl/shlib-versions: Likewise.
	* nptl_db/shlib-versions: Likewise.
	* sysdeps/hppa/shlib-versions: Likewise.
	* sysdeps/m68k/shlib-versions: Likewise.
	* sysdeps/mach/hurd/shlib-versions: Likewise.
	* sysdeps/unix/sysv/linux/aarch64/shlib-versions: Likewise.
	* sysdeps/unix/sysv/linux/alpha/shlib-versions: Likewise.
	* sysdeps/unix/sysv/linux/arm/shlib-versions: Likewise.
	* sysdeps/unix/sysv/linux/hppa/shlib-versions: Likewise.
	* sysdeps/unix/sysv/linux/ia64/shlib-versions: Likewise.
	* sysdeps/unix/sysv/linux/m68k/coldfire/shlib-versions: Likewise.
	* sysdeps/unix/sysv/linux/microblaze/shlib-versions: Likewise.
	* sysdeps/unix/sysv/linux/mips/shlib-versions: Likewise.
	* sysdeps/unix/sysv/linux/powerpc/powerpc64/shlib-versions:
	Likewise.
	* sysdeps/unix/sysv/linux/s390/s390-64/shlib-versions: Likewise.
	* sysdeps/unix/sysv/linux/sh/shlib-versions: Likewise.
	* sysdeps/unix/sysv/linux/shlib-versions: Likewise.
	* sysdeps/unix/sysv/linux/sparc/sparc32/shlib-versions: Likewise.
	* sysdeps/unix/sysv/linux/sparc/sparc64/shlib-versions: Likewise.
	* sysdeps/unix/sysv/linux/tile/shlib-versions: Likewise.
	* sysdeps/unix/sysv/linux/x86_64/64/shlib-versions: Likewise.
	* sysdeps/unix/sysv/linux/x86_64/x32/shlib-versions: Likewise.

libidn/ChangeLog:
	* shlib-versions: Remove first column with configuration names.
2014-09-12 12:28:47 +00:00
Mike Frysinger
61b1ef6e7c detect broken linker handling of __ehdr_start
Older versions of ld on ia64 support __ehdr_start, but generate relocs
when they shouldn't.  This causes the ld.so to not run because it tries
to resolve the __ehdr_start symbol (but it's not exported).
2014-08-12 19:54:02 -04:00
Roland McGrath
9fe7e787ad Use __builtin_trap for ABORT_INSTRUCTION. 2014-07-31 13:07:19 -07:00
Joseph Myers
cb403c34c6 Remove relro configure test.
This patch removes the configure test for working -z relro.

The use of -z relro in Makeconfig became unconditional with

commit 2e6ab1df44c412bb9d30b26a4d8a679150a7e375
Author: Ulrich Drepper <drepper@redhat.com>
Date:   Sat Oct 28 06:44:04 2006 +0000

    Remove conditional code which now is unnecessary.

(commit reference from git://repo.or.cz/glibc/history), so since then
the configure test has not controlled anything about how glibc is
built - simply about whether configure succeeds and allows a build to
be attempted.  The test for whether the option did something useful
(as opposed to whether it exists - which we can certainly just assume
by now) was originally added in
<https://sourceware.org/ml/libc-hacker/2004-09/msg00069.html> to
disable the option in a case when it did nothing useful on ia64 (as a
result of something deliberate in the linker on ia64).  Since 2006
that disabling has been of no effect, and given that the current test
does not set libc_relro_required for ia64, it does nothing whatever
useful for the original motivating case.  Also at around the same time
in 2006 the test was made to give an error for missing or broken -z
relro support on various architectures.

So effectively all the test does now is verify that, on certain
architectures, the linker has not been changed deliberately to make
the option ineffective.  I see no apparent reason why such a change
should be expected, or why the build should be stopped if it were to
be made (any more than we disallow build on ia64); I think we can
trust binutils patch review to point out the consequences of any
change to COMMONPAGESIZE setting.  The only thing that might now make
sense would be disabling the -z relro use on an architecture-specific
basis if there were an architecture-specific reason to consider that
to make sense; it would be for the ia64 maintainer to decide if that
makes sense for ia64 at present, but I think that could be done
through sysdeps Makefiles - no special configure tests needed.

Tested for x86_64 that this patch makes no change to the installed
shared libraries.

Together with
<https://sourceware.org/ml/libc-alpha/2014-06/msg00788.html> (pending
review) this substantially eliminates architecture-specific cases from
architecture-independent configure.ac files.  There remains an i386
case in sysdeps/mach/hurd/configure.ac that should properly move to
the i386 subdirectory.  (There are also OS-specific cases outside
OS-specific directories; in principle I think should should also
move.)

	* configure.ac (libc_commonpagesize): Remove variable.
	(libc_relro_required): Likewise.
	(libc_cv_z_relro): Remove configure test.
	* configure: Regenerated.
	* sysdeps/aarch64/preconfigure (libc_commonpagesize): Do not set
	variable.
	(libc_relro_required): Likewise.
	* sysdeps/alpha/preconfigure (libc_commonpagesize): Likewise.
	(libc_relro_required): Likewise.
	* sysdeps/arm/preconfigure.ac (libc_commonpagesize): Likewise.
	(libc_relro_required): Likewise.
	* sysdeps/arm/preconfigure: Regenerated.
	* sysdeps/ia64/preconfigure: Remove file.
	* sysdeps/tile/preconfigure (libc_commonpagesize): Do not set
	variable.
	(libc_relro_required): Likewise.
2014-06-27 16:51:22 +00:00
Joseph Myers
e64708de36 Remove powerpc special cases in configure.ac.
This patch removes two powerpc special cases in the main configure.ac.
The test for rs6000 is irrelevant to currently supported
configurations (config.guess reports rs6000 for some OSes, of which
the only one currently supported by GCC is AIX, but not for Linux).
There's no need either for a special case for powerpc*-*soft;
--without-fp suffices, and GCC doesn't have any special handling of
such a triplet.

Not tested.

	* configure.ac: Do not test for machine being rs6000.  Do not test
	for powerpc*-*soft.
	* configure: Regenerated.
2014-06-26 17:34:27 +00:00
Joseph Myers
a8779c28a8 Remove configure tests for assembler CFI support.
This patch removes configure tests for assembler CFI support (and
thereby eliminates an architecture-specific case in the main
configure.ac), instead assuming that support is present
unconditionally.

The main test was added in 2003 around the time CFI support was added
to the assembler.  cfi_personality and cfi_lsda support were added to
the assembler in 2006.  cfi_sections support was added in 2009, a few
weeks before binutils 2.20 was released; it's in 2.20, the minimum
supported version, so even that configure test is obsolete.

Tested x86_64 that the installed shared libraries are unchanged by
this patch.

	* configure.ac (libc_cv_asm_cfi_directives): Remove configure
	test.
	* configure: Regenerated.
	* config.h.in (HAVE_ASM_CFI_DIRECTIVES): Remove macro undefine.
	* sysdeps/arm/configure.ac (libc_cv_asm_cfi_directive_sections):
	Remove configure test.
	* sysdeps/arm/configure: Regenerated.
	* sysdeps/nptl/configure.ac: Do not check
	libc_cv_asm_cfi_directives.
	* sysdeps/nptl/configure: Regenerated.
	* sysdeps/x86_64/nptl/configure.ac: Remove file.
	* sysdeps/x86_64/nptl/configure: Remove generated file.
	* b/sysdeps/generic/sysdep.h [HAVE_ASM_CFI_DIRECTIVES]: Make code
	unconditional.
	[!HAVE_ASM_CFI_DIRECTIVES]: Remove conditional code.
2014-06-26 17:33:32 +00:00
Joseph Myers
c2570a0b35 Move USE_REGPARMS define to sysdeps/i386/configure.ac.
This patch moves the USE_REGPARMS define from the toplevel
configure.ac to sysdeps/i386/configure.ac.

Tested x86 that the disassembly of installed shared libraries is
unchanged by this patch.

	* configure.ac (USE_REGPARMS): Don't define here.
	* configure: Regenerated.
	* sysdeps/i386/configure.ac (USE_REGPARMS): Define here.
	* sysdeps/i386/configure: Regenerated.
2014-06-25 20:26:14 +00:00
Joseph Myers
92072d57c6 Remove BROKEN_PPC_ASM_CR0 configure test.
One piece of architecture-specific code in the main configure.ac is
the powerpc test that can define BROKEN_PPC_ASM_CR0.  There's no need
to move this to a sysdeps configure script, or to work out what bug it
was testing in May 1998 to see if it's still relevant, since nothing
in the source tree now uses the results of this test.  Thus, this
patch just removes the test in question.

Not tested.

	* configure.ac (libc_cv_c_asmcr0_bug): Remove configure test.
	* configure: Regenerated.
	* config.h.in (BROKEN_PPC_ASM_CR0): Remove macro.
2014-06-25 17:54:44 +00:00
Joseph Myers
3e239be647 Move base_machine and machine settings from configure.ac to sysdeps preconfigure fragments.
This patch makes non-ex-ports architectures set base_machine and
machine based on the original configured machine value in preconfigure
fragments, like ex-ports architectures, rather than in the toplevel
configure.ac.

Tested x86 that the disassembly of installed shared libraries is
unchanged by the patch.

	* configure.ac (base_machine): Do not set specially for particular
	machines here.
	* configure: Regenerated.
	* sysdeps/powerpc/preconfigure: Move machine and base_machine
	settings from configure.ac.
	* sysdeps/i386/preconfigure: New file.
	* sysdeps/s390/preconfigure: Likewise.
	* sysdeps/sh/preconfigure: Likewise.
	* sysdeps/sparc/preconfigure: Likewise.
2014-06-25 17:52:56 +00:00
Dominik Vogt
5a414ff70c S/390: Port of lock elision to System/z
Added support for TX lock elision of pthread mutexes on s390 and
s390x.  This may improve lock scaling of existing programs on TX
capable systems.  The lock elision code is only built with
--enable-lock-elision=yes and then requires a GCC version supporting
the TX builtins.  With lock elision default mutexes are elided via
__builtin_tbegin, if the cpu supports transactions. By default lock
elision is not enabled and the elision code is not built.
2014-05-09 16:58:46 +02:00
Carlos O'Donell
0699f766b1 nscd: Make SELinux checks dynamic.
The SELinux team has indicated to me that glibc's SELinux checks
in nscd are not being carried out as they would expect the API
to be used today. They would like to move away from static header
defines for class and permissions and instead use dynamic checks
at runtime that provide an answer which is dependent on the runtime
status of SELinux i.e. more dynamic.

The following patch is a minimal change that moves us forward in
this direction.

It does the following:

* Stop checking for SELinux headers that define NSCD__SHMEMHOST.
  Check only for the presence or absence of the library.

* Don't encode the specific SELinux permission constants into a
  table at build time, and instead use the symbolic name for the
  permission as expected.

* Lookup the "What do we do if we don't know this permission?"
  policy and use that if we find SELinux's policy is older than
  the glibc policy e.g. we make a request for a permission that
  SELinux doesn't know about.

* Lastly, translate the class and permission and then make
  the permission check. This is done every time we lookup
  a permission, and this is the expected way to use the API.
  SELinux will optimize this for us, and we expect the network
  latencies to hide these extra library calls.

Tested on x86, x86-64, and via Fedora Rawhide since November 2013.

See:
https://sourceware.org/ml/libc-alpha/2014-04/msg00179.html
2014-04-14 04:10:39 -04:00
Adhemerval Zanella
7ffa942302 PowerPC: define _CALL_ELF if compiler does not
This patch makes the configure adds -D_CALL_ELF=1 when compiler does
not define _CALL_ELF (versions before powerpc64le support).  It cleans
up compiler warnings on old compiler where _CALL_ELF is not defined
on powerpc64(be) builds.

It does by add a new config.make variable for configure-deduced
CPPFLAGS and accumulate into that (confix-extra-cppflags).  It also
generalizes libc_extra_cflags so it accumulates in sysdeps configure
fragmenets.
2014-04-06 16:48:08 -05:00
Mike Frysinger
43ca83ecc4 stop supporting bash-1.x
We've stopped supporting toolchain packages older than 2009, so punting
bash-1.x is reasonable when bash-2 was released almost 20 years ago.
2014-03-13 20:20:12 -04:00
Mike Frysinger
c66e48b4a7 delete ksh checks
Nothing in the tree uses ksh anymore, so punt these checks.
2014-03-13 20:03:31 -04:00
Roland McGrath
44c4e5d598 Use __ehdr_start, when available, for rtld to get its own headers. 2014-03-13 10:38:27 -07:00
Allan McRae
9e8ac24ba3 Set AUTOCONF variable when maintainer-mode is not used
Fixes build issue introduced in 8894bad3 when configure.ac is altered
and maintainer-mode is not enabled.
2013-12-16 21:45:27 +10:00
Allan McRae
8894bad34c Add --enable-maintainer-mode configure option
Autoconf is tested for and run if needed only when --enable-maintainer-mode
is used on configure.  This results in the autom4te.cache directory only
being written in the source directory during configure if automatic
autoconf usage is requested.

Fixes BZ #14120.
2013-12-16 11:26:49 +10:00
Marc-Antoine Perennou
28d708c44b Accept make versions 4.0 and greater 2013-10-31 12:38:36 +10:00
Mike Frysinger
cb8a6dbd17 rename configure.in to configure.ac
Autoconf has been deprecating configure.in for quite a long time.
Rename all our configure.in and preconfigure.in files to .ac.

Signed-off-by: Mike Frysinger <vapier@gentoo.org>
2013-10-30 17:32:08 +10:00