glibc/glibc.spec
Florian Weimer 17391589c0 Auto-sync with upstream branch master
Upstream commit: e37c2cf299b61ce18f62852f6c5624c27829b610

- Move _dl_open_check to its original place in dl_open_worker
- Block signals during the initial part of dlopen
- Remove all loaded objects if dlopen fails, ignoring NODELETE (#1395758)
- Avoid late dlopen failure due to scope, TLS slotinfo updates (swbz#25112)
- Avoid late failure in dlopen in global scope update (swbz#25112)
- Lazy binding failures during dlopen/dlclose must be fatal (swbz#24304)
- resolv: Implement trust-ad option for /etc/resolv.conf (#1164339)
- dlsym: Do not determine caller link map if not needed
- libio: Disable vtable validation for pre-2.1 interposed handles (swbz#25203)
- ldbl-128ibm-compat: Add syslog functions
- ldbl-128ibm-compat: Add obstack printing functions
- ldbl-128ibm-compat: Reuse tests for err.h and error.h functions
- ldbl-128ibm-compat: Add error.h functions
- ldbl-128ibm-compat: Add err.h functions
- ldbl-128ibm-compat: Add argp_error and argp_failure
- sparc: Use atomic compiler builtins on sparc
- Remove 32 bit sparc v7 support
2019-11-28 15:58:33 +01:00

2860 lines
113 KiB
RPMSpec

%define glibcsrcdir glibc-2.30.9000-315-ge37c2cf299
%define glibcversion 2.30.9000
# Pre-release tarballs are pulled in from git using a command that is
# effectively:
#
# git archive HEAD --format=tar --prefix=$(git describe --match 'glibc-*')/ \
# > $(git describe --match 'glibc-*').tar
# gzip -9 $(git describe --match 'glibc-*').tar
#
# glibc_release_url is only defined when we have a release tarball.
%{lua: if string.match(rpm.expand("%glibcsrcdir"), "^glibc%-[0-9.]+$") then
rpm.define("glibc_release_url https://ftp.gnu.org/gnu/glibc/") end}
##############################################################################
# We support the following options:
# --with/--without,
# * testsuite - Running the testsuite.
# * benchtests - Running and building benchmark subpackage.
# * bootstrap - Bootstrapping the package.
# * werror - Build with -Werror
# * docs - Build with documentation and the required dependencies.
# * valgrind - Run smoke tests with valgrind to verify dynamic loader.
#
# You must always run the testsuite for production builds.
# Default: Always run the testsuite.
%bcond_without testsuite
# Default: Always build the benchtests.
%bcond_without benchtests
# Default: Not bootstrapping.
%bcond_with bootstrap
# Default: Enable using -Werror
%bcond_without werror
# Default: Always build documentation.
%bcond_without docs
# Default: Always run valgrind tests if there is architecture support.
%ifarch %{valgrind_arches}
%bcond_without valgrind
%else
%bcond_with valgrind
%endif
# Restrict %%{valgrind_arches} further in case there are problems with
# the smoke test.
%if %{with valgrind}
%ifarch ppc64 ppc64p7
# The valgrind smoke test does not work on ppc64, ppc64p7 (bug 1273103).
%undefine with_valgrind
%endif
%endif
%if %{with bootstrap}
# Disable benchtests, -Werror, docs, and valgrind if we're bootstrapping
%undefine with_benchtests
%undefine with_werror
%undefine with_docs
%undefine with_valgrind
%endif
##############################################################################
# Auxiliary arches are those arches that can be built in addition
# to the core supported arches. You either install an auxarch or
# you install the base arch, not both. You would do this in order
# to provide a more optimized version of the package for your arch.
%define auxarches athlon alphaev6
# Only some architectures have static PIE support.
%define pie_arches %{ix86} x86_64
# Build the POWER9 runtime on POWER, but only for downstream.
%ifarch ppc64le
%define buildpower9 0%{?rhel} > 0
%else
%define buildpower9 0
%endif
##############################################################################
# Any architecture/kernel combination that supports running 32-bit and 64-bit
# code in userspace is considered a biarch arch.
%define biarcharches %{ix86} x86_64 %{power64} s390 s390x
##############################################################################
# If the debug information is split into two packages, the core debuginfo
# pacakge and the common debuginfo package then the arch should be listed
# here. If the arch is not listed here then a single core debuginfo package
# will be created for the architecture.
%define debuginfocommonarches %{biarcharches} alpha alphaev6
##############################################################################
# %%package glibc - The GNU C Library (glibc) core package.
##############################################################################
Summary: The GNU libc libraries
Name: glibc
Version: %{glibcversion}
Release: 21%{?dist}
# In general, GPLv2+ is used by programs, LGPLv2+ is used for
# libraries.
#
# LGPLv2+ with exceptions is used for things that are linked directly
# into dynamically linked programs and shared libraries (e.g. crt
# files, lib*_nonshared.a). Historically, this exception also applies
# to parts of libio.
#
# GPLv2+ with exceptions is used for parts of the Arm unwinder.
#
# GFDL is used for the documentation.
#
# Some other licenses are used in various places (BSD, Inner-Net,
# ISC, Public Domain).
#
# HSRL and FSFAP are only used in test cases, which currently do not
# ship in binary RPMs, so they are not listed here. MIT is used for
# scripts/install-sh, which does not ship, either.
#
# GPLv3+ is used by manual/texinfo.tex, which we do not use.
#
# LGPLv3+ is used by some Hurd code, which we do not build.
#
# LGPLv2 is used in one place (time/timespec_get.c, by mistake), but
# it is not actually compiled, so it does not matter for libraries.
License: LGPLv2+ and LGPLv2+ with exceptions and GPLv2+ and GPLv2+ with exceptions and BSD and Inner-Net and ISC and Public Domain and GFDL
URL: http://www.gnu.org/software/glibc/
Source0: %{?glibc_release_url}%{glibcsrcdir}.tar.xz
Source1: nscd.conf
Source2: bench.mk
Source3: glibc-bench-compare
# A copy of localedata/SUPPORTED in the Source0 tarball. The
# SUPPORTED file is used below to generate the list of locale
# packages, using a Lua snippet.
# When the upstream SUPPORTED is out of sync with our copy, the
# prep phase will fail and you will need to update the local
# copy.
Source11: SUPPORTED
# Include in the source RPM for reference.
Source12: ChangeLog.old
# Provide ISO language code to name translation using Python's
# langtable. The langtable data is maintained by the Fedora
# i18n team and is a harmonization of CLDR and glibc lang_name
# data in a more accessible API (also used by Anaconda).
Source13: convnames.py
##############################################################################
# Patches:
# - See each individual patch file for origin and upstream status.
# - For new patches follow template.patch format.
##############################################################################
Patch1: glibc-fedora-nscd.patch
Patch3: glibc-rh697421.patch
Patch4: glibc-fedora-linux-tcsetattr.patch
Patch5: glibc-rh741105.patch
Patch6: glibc-fedora-localedef.patch
Patch7: glibc-fedora-nis-rh188246.patch
Patch8: glibc-fedora-manual-dircategory.patch
Patch9: glibc-rh827510.patch
Patch12: glibc-rh819430.patch
Patch13: glibc-fedora-localedata-rh61908.patch
Patch14: glibc-fedora-__libc_multiple_libcs.patch
Patch15: glibc-rh1070416.patch
Patch16: glibc-nscd-sysconfig.patch
Patch17: glibc-cs-path.patch
Patch18: glibc-c-utf8-locale.patch
Patch23: glibc-python3.patch
Patch29: glibc-fedora-nsswitch.patch
##############################################################################
# Continued list of core "glibc" package information:
##############################################################################
Obsoletes: glibc-profile < 2.4
Provides: ldconfig
# The dynamic linker supports DT_GNU_HASH
Provides: rtld(GNU_HASH)
# We need libgcc for cancellation support in POSIX threads.
Requires: libgcc%{_isa}
Requires: glibc-common = %{version}-%{release}
# Various components (regex, glob) have been imported from gnulib.
Provides: bundled(gnulib)
Requires(pre): basesystem
Requires: basesystem
# This is for building auxiliary programs like memusage, nscd
# For initial glibc bootstraps it can be commented out
%if %{without bootstrap}
BuildRequires: gd-devel libpng-devel zlib-devel
%endif
%if %{with docs}
# Removing texinfo will cause check-safety.sh test to fail because it seems to
# trigger documentation generation based on dependencies. We need to fix this
# upstream in some way that doesn't depend on generating docs to validate the
# texinfo. I expect it's simply the wrong dependency for that target.
BuildRequires: texinfo >= 5.0
%endif
%if %{without bootstrap}
BuildRequires: libselinux-devel >= 1.33.4-3
%endif
BuildRequires: audit-libs-devel >= 1.1.3, sed >= 3.95, libcap-devel, gettext
# We need procps-ng (/bin/ps), util-linux (/bin/kill), and gawk (/bin/awk),
# but it is more flexible to require the actual programs and let rpm infer
# the packages. However, until bug 1259054 is widely fixed we avoid the
# following:
# BuildRequires: /bin/ps, /bin/kill, /bin/awk
# And use instead (which should be reverted some time in the future):
BuildRequires: procps-ng, util-linux, gawk
BuildRequires: systemtap-sdt-devel
%if %{with valgrind}
# Require valgrind for smoke testing the dynamic loader to make sure we
# have not broken valgrind.
BuildRequires: valgrind
%endif
# We use systemd rpm macros for nscd
BuildRequires: systemd
# We use python for the microbenchmarks and locale data regeneration
# from unicode sources (carried out manually). We choose python3
# explicitly because it supports both use cases. On some
# distributions, python3 does not actually install /usr/bin/python3,
# so we also depend on python3-devel.
BuildRequires: python3 python3-devel
BuildRequires: python3dist(langtable)
# This GCC version is needed for -fstack-clash-protection support.
BuildRequires: gcc >= 7.2.1-6
%define enablekernel 3.2
Conflicts: kernel < %{enablekernel}
%define target %{_target_cpu}-redhat-linux
%ifarch %{arm}
%define target %{_target_cpu}-redhat-linuxeabi
%endif
%ifarch %{power64}
%ifarch ppc64le
%define target ppc64le-redhat-linux
%else
%define target ppc64-redhat-linux
%endif
%endif
# GNU make 4.0 introduced the -O option.
BuildRequires: make >= 4.0
# The intl subsystem generates a parser using bison.
BuildRequires: bison >= 2.7
# binutils 2.30-17 is needed for --generate-missing-build-notes.
BuildRequires: binutils >= 2.30-17
# Earlier releases have broken support for IRELATIVE relocations
Conflicts: prelink < 0.4.2
%if 0%{?_enable_debug_packages}
BuildRequires: elfutils >= 0.72
BuildRequires: rpm >= 4.2-0.56
%endif
%if %{without bootstrap}
%if %{with testsuite}
# The testsuite builds static C++ binaries that require a C++ compiler,
# static C++ runtime from libstdc++-static, and lastly static glibc.
BuildRequires: gcc-c++
BuildRequires: libstdc++-static
# A configure check tests for the ability to create static C++ binaries
# before glibc is built and therefore we need a glibc-static for that
# check to pass even if we aren't going to use any of those objects to
# build the tests.
BuildRequires: glibc-static
# libidn2 (but not libidn2-devel) is needed for testing AI_IDN/NI_IDN.
BuildRequires: libidn2
%endif
%endif
# Filter out all GLIBC_PRIVATE symbols since they are internal to
# the package and should not be examined by any other tool.
%global __filter_GLIBC_PRIVATE 1
# For language packs we have glibc require a virtual dependency
# "glibc-langpack" wich gives us at least one installed langpack.
# If no langpack providing 'glibc-langpack' was installed you'd
# get all of them, and that would make the transition from a
# system without langpacks smoother (you'd get all the locales
# installed). You would then trim that list, and the trimmed list
# is preserved. One problem is you can't have "no" locales installed,
# in that case we offer a "glibc-minimal-langpack" sub-pakcage for
# this purpose.
Requires: glibc-langpack = %{version}-%{release}
Suggests: glibc-all-langpacks = %{version}-%{release}
%description
The glibc package contains standard libraries which are used by
multiple programs on the system. In order to save disk space and
memory, as well as to make upgrading easier, common system code is
kept in one place and shared between programs. This particular package
contains the most important sets of shared libraries: the standard C
library and the standard math library. Without these two libraries, a
Linux system will not function.
######################################################################
# libnsl subpackage
######################################################################
%package -n libnsl
Summary: Legacy support library for NIS
Requires: %{name}%{_isa} = %{version}-%{release}
%description -n libnsl
This package provides the legacy version of libnsl library, for
accessing NIS services.
This library is provided for backwards compatibility only;
applications should use libnsl2 instead to gain IPv6 support.
##############################################################################
# glibc "devel" sub-package
##############################################################################
%package devel
Summary: Object files for development using standard C libraries.
Requires(pre): %{name}-headers
Requires: %{name}-headers = %{version}-%{release}
Requires: %{name} = %{version}-%{release}
Requires: libxcrypt-devel%{_isa} >= 4.0.0
%description devel
The glibc-devel package contains the object files necessary
for developing programs which use the standard C libraries (which are
used by nearly all programs). If you are developing programs which
will use the standard C libraries, your system needs to have these
standard object files available in order to create the
executables.
Install glibc-devel if you are going to develop programs which will
use the standard C libraries.
##############################################################################
# glibc "static" sub-package
##############################################################################
%package static
Summary: C library static libraries for -static linking.
Requires: %{name}-devel = %{version}-%{release}
Requires: libxcrypt-static%{?_isa} >= 4.0.0
%description static
The glibc-static package contains the C library static libraries
for -static linking. You don't need these, unless you link statically,
which is highly discouraged.
##############################################################################
# glibc "headers" sub-package
# - The headers package includes all common headers that are shared amongst
# the multilib builds. It was created to reduce the download size, and
# thus avoid downloading one header package per multilib. The package is
# identical both in content and file list, any difference is an error.
# Files like gnu/stubs.h which have gnu/stubs-32.h (i686) and gnu/stubs-64.h
# are included in glibc-headers, but the -32 and -64 files are in their
# respective i686 and x86_64 devel packages.
##############################################################################
%package headers
Summary: Header files for development using standard C libraries.
Provides: %{name}-headers(%{_target_cpu})
Requires(pre): kernel-headers
# Uses 'rm' to remove problematic kernel headers.
Requires(pre): coreutils
Requires: kernel-headers >= 2.2.1, %{name} = %{version}-%{release}
BuildRequires: kernel-headers >= 3.2
%description headers
The glibc-headers package contains the header files necessary
for developing programs which use the standard C libraries (which are
used by nearly all programs). If you are developing programs which
will use the standard C libraries, your system needs to have these
standard header files available in order to create the
executables.
Install glibc-headers if you are going to develop programs which will
use the standard C libraries.
##############################################################################
# glibc "common" sub-package
##############################################################################
%package common
Summary: Common binaries and locale data for glibc
Requires: %{name} = %{version}-%{release}
Requires: tzdata >= 2003a
%description common
The glibc-common package includes common binaries for the GNU libc
libraries, as well as national language (locale) support.
######################################################################
# File triggers to do ldconfig calls automatically (see rhbz#1380878)
######################################################################
# File triggers for when libraries are added or removed in standard
# paths.
%transfiletriggerin common -P 2000000 -- /lib /usr/lib /lib64 /usr/lib64
/sbin/ldconfig
%end
%transfiletriggerpostun common -P 2000000 -- /lib /usr/lib /lib64 /usr/lib64
/sbin/ldconfig
%end
# We need to run ldconfig manually because __brp_ldconfig assumes that
# glibc itself is always installed in $RPM_BUILD_ROOT, but with sysroots
# we may be installed into a subdirectory of that path. Therefore we
# unset __brp_ldconfig and run ldconfig by hand with the sysroots path
# passed to -r.
%undefine __brp_ldconfig
######################################################################
%package locale-source
Summary: The sources for the locales
Requires: %{name} = %{version}-%{release}
Requires: %{name}-common = %{version}-%{release}
%description locale-source
The sources for all locales provided in the language packs.
If you are building custom locales you will most likely use
these sources as the basis for your new locale.
%{lua:
-- Array of languages (ISO-639 codes).
local languages = {}
-- Dictionary from language codes (as in the languages array) to arrays
-- of regions.
local supplements = {}
do
-- Parse the SUPPORTED file. Eliminate duplicates.
local lang_region_seen = {}
for line in io.lines(rpm.expand("%{SOURCE11}")) do
-- Match lines which contain a language (eo) or language/region
-- (en_US) strings.
local lang_region = string.match(line, "^([a-z][^/@.]+)")
if lang_region ~= nil then
if lang_region_seen[lang_region] == nil then
lang_region_seen[lang_region] = true
-- Split language/region pair.
local lang, region = string.match(lang_region, "^(.+)_(.+)")
if lang == nil then
-- Region is missing, use only the language.
lang = lang_region
end
local suppl = supplements[lang]
if suppl == nil then
suppl = {}
supplements[lang] = suppl
-- New language not seen before.
languages[#languages + 1] = lang
end
if region ~= nil then
-- New region because of the check against
-- lang_region_seen above.
suppl[#suppl + 1] = region
end
end
end
end
-- Sort for determinism.
table.sort(languages)
for _, supples in pairs(supplements) do
table.sort(supplements)
end
end
-- Compute the language names
local langnames = {}
local python3 = io.open('/usr/bin/python3', 'r')
if python3 then
python3:close()
local args = table.concat(languages, ' ')
local file = io.popen(rpm.expand("%{SOURCE13}") .. ' ' .. args)
while true do
line = file:read()
if line == nil then break end
langnames[#langnames + 1] = line
end
file:close()
else
for i = 1, #languages do
langnames[#langnames + 1] = languages[i]
end
end
-- Compute the Supplements: list for a language, based on the regions.
local function compute_supplements(lang)
result = "langpacks-core-" .. lang
regions = supplements[lang]
if regions ~= nil then
for i = 1, #regions do
result = result .. " or langpacks-core-" .. lang .. "_" .. regions[i]
end
end
return result
end
-- Emit the definition of a language pack package.
local function lang_package(lang, langname)
local suppl = compute_supplements(lang)
print(rpm.expand([[
%package langpack-]]..lang..[[
Summary: Locale data for ]]..langname..[[
Provides: glibc-langpack = %{version}-%{release}
Requires: %{name} = %{version}-%{release}
Requires: %{name}-common = %{version}-%{release}
Supplements: (glibc and (]]..suppl..[[))
%description langpack-]]..lang..[[
The glibc-langpack-]]..lang..[[ package includes the basic information required
to support the ]]..langname..[[ language in your applications.
%ifnarch %{auxarches}
%files -f langpack-]]..lang..[[.filelist langpack-]]..lang..[[
%endif
]]))
end
for i = 1, #languages do
lang_package(languages[i], langnames[i])
end
}
# The glibc-all-langpacks provides the virtual glibc-langpack,
# and thus satisfies glibc's requirement for installed locales.
# Users can add one more other langauge packs and then eventually
# uninstall all-langpacks to save space.
%package all-langpacks
Summary: All language packs for %{name}.
Requires: %{name} = %{version}-%{release}
Requires: %{name}-common = %{version}-%{release}
Provides: %{name}-langpack = %{version}-%{release}
%description all-langpacks
# No %files, this is an empty pacakge. The C/POSIX and
# C.UTF-8 files are already installed by glibc. We create
# minimal-langpack because the virtual provide of
# glibc-langpack needs at least one package installed
# to satisfy it. Given that no-locales installed is a valid
# use case we support it here with this package.
%package minimal-langpack
Summary: Minimal language packs for %{name}.
Provides: glibc-langpack = %{version}-%{release}
Requires: %{name} = %{version}-%{release}
Requires: %{name}-common = %{version}-%{release}
%description minimal-langpack
This is a Meta package that is used to install minimal language packs.
This package ensures you can use C, POSIX, or C.UTF-8 locales, but
nothing else. It is designed for assembling a minimal system.
%ifnarch %{auxarches}
%files minimal-langpack
%endif
##############################################################################
# glibc "nscd" sub-package
##############################################################################
%package -n nscd
Summary: A Name Service Caching Daemon (nscd).
Requires: %{name} = %{version}-%{release}
%if %{without bootstrap}
Requires: libselinux >= 1.17.10-1
%endif
Requires: audit-libs >= 1.1.3
Requires(pre): /usr/sbin/useradd, coreutils
Requires(post): systemd
Requires(preun): systemd
Requires(postun): systemd, /usr/sbin/userdel
%description -n nscd
The nscd daemon caches name service lookups and can improve
performance with LDAP, and may help with DNS as well.
##############################################################################
# Subpackages for NSS modules except nss_files, nss_compat, nss_dns
##############################################################################
# This should remain it's own subpackage or "Provides: nss_db" to allow easy
# migration from old systems that previously had the old nss_db package
# installed. Note that this doesn't make the migration that smooth, the
# databases still need rebuilding because the formats were different.
# The nss_db package was deprecated in F16 and onwards:
# https://lists.fedoraproject.org/pipermail/devel/2011-July/153665.html
# The different database format does cause some issues for users:
# https://lists.fedoraproject.org/pipermail/devel/2011-December/160497.html
%package -n nss_db
Summary: Name Service Switch (NSS) module using hash-indexed files
Requires: %{name}%{_isa} = %{version}-%{release}
%description -n nss_db
The nss_db Name Service Switch module uses hash-indexed files in /var/db
to speed up user, group, service, host name, and other NSS-based lookups.
%package -n nss_hesiod
Summary: Name Service Switch (NSS) module using Hesiod
Requires: %{name}%{_isa} = %{version}-%{release}
%description -n nss_hesiod
The nss_hesiod Name Service Switch module uses the Domain Name System
(DNS) as a source for user, group, and service information, following
the Hesiod convention of Project Athena.
%package nss-devel
Summary: Development files for directly linking NSS service modules
Requires: %{name}%{_isa} = %{version}-%{release}
Requires: nss_db%{_isa} = %{version}-%{release}
Requires: nss_hesiod%{_isa} = %{version}-%{release}
%description nss-devel
The glibc-nss-devel package contains the object files necessary to
compile applications and libraries which directly link against NSS
modules supplied by glibc.
This is a rare and special use case; regular development has to use
the glibc-devel package instead.
##############################################################################
# glibc "utils" sub-package
##############################################################################
%package utils
Summary: Development utilities from GNU C library
Requires: %{name} = %{version}-%{release}
%description utils
The glibc-utils package contains memusage, a memory usage profiler,
mtrace, a memory leak tracer and xtrace, a function call tracer
which can be helpful during program debugging.
If unsure if you need this, don't install this package.
##############################################################################
# glibc core "debuginfo" sub-package
##############################################################################
%if 0%{?_enable_debug_packages}
%define debug_package %{nil}
%define __debug_install_post %{nil}
%global __debug_package 1
# Disable thew new features that glibc packages don't use.
%undefine _debugsource_packages
%undefine _debuginfo_subpackages
%undefine _unique_debug_names
%undefine _unique_debug_srcs
%package debuginfo
Summary: Debug information for package %{name}
AutoReqProv: no
%ifarch %{debuginfocommonarches}
Requires: glibc-debuginfo-common = %{version}-%{release}
%else
%ifarch %{ix86} %{sparc}
Obsoletes: glibc-debuginfo-common
%endif
%endif
%description debuginfo
This package provides debug information for package %{name}.
Debug information is useful when developing applications that use this
package or when debugging this package.
This package also contains static standard C libraries with
debugging information. You need this only if you want to step into
C library routines during debugging programs statically linked against
one or more of the standard C libraries.
To use this debugging information, you need to link binaries
with -static -L%{_prefix}/lib/debug%{_libdir} compiler options.
##############################################################################
# glibc common "debuginfo-common" sub-package
##############################################################################
%ifarch %{debuginfocommonarches}
%package debuginfo-common
Summary: Debug information for package %{name}
AutoReqProv: no
%description debuginfo-common
This package provides debug information for package %{name}.
Debug information is useful when developing applications that use this
package or when debugging this package.
%endif
%endif
%if %{with benchtests}
%package benchtests
Summary: Benchmarking binaries and scripts for %{name}
%description benchtests
This package provides built benchmark binaries and scripts to run
microbenchmark tests on the system.
%endif
##############################################################################
# compat-libpthread-nonshared
# See: https://sourceware.org/bugzilla/show_bug.cgi?id=23500
##############################################################################
%package -n compat-libpthread-nonshared
Summary: Compatibility support for linking against libpthread_nonshared.a.
%description -n compat-libpthread-nonshared
This package provides compatibility support for applications that expect
libpthread_nonshared.a to exist. The support provided is in the form of
an empty libpthread_nonshared.a that allows dynamic links to succeed.
Such applications should be adjusted to avoid linking against
libpthread_nonshared.a which is no longer used. The static library
libpthread_nonshared.a is an internal implementation detail of the C
runtime and should not be expected to exist.
##############################################################################
# Prepare for the build.
##############################################################################
%prep
%autosetup -n %{glibcsrcdir} -p1
##############################################################################
# %%prep - Additional prep required...
##############################################################################
# Make benchmark scripts executable
chmod +x benchtests/scripts/*.py scripts/pylint
# Remove all files generated from patching.
find . -type f -size 0 -o -name "*.orig" -exec rm -f {} \;
# Ensure timestamps on configure files are current to prevent
# regenerating them.
touch `find . -name configure`
# Ensure *-kw.h files are current to prevent regenerating them.
touch locale/programs/*-kw.h
# Verify that our copy of localedata/SUPPORTED matches the glibc
# version.
#
# The separate file copy is used by the Lua parser above.
# Patches or new upstream versions may change the list of locales,
# which changes the set of langpacks we need to build. Verify the
# differences then update the copy of SUPPORTED. This approach has
# two purposes: (a) avoid spurious changes to the set of langpacks,
# and (b) the Lua snippet can use a fully patched-up version
# of the localedata/SUPPORTED file.
diff -u %{SOURCE11} localedata/SUPPORTED
##############################################################################
# Build glibc...
##############################################################################
%build
# Log system information
uname -a
LD_SHOW_AUXV=1 /bin/true
cat /proc/cpuinfo
cat /proc/sysinfo 2>/dev/null || true
cat /proc/meminfo
df
# We build using the native system compilers.
GCC=gcc
GXX=g++
# Part of rpm_inherit_flags. Is overridden below.
rpm_append_flag ()
{
BuildFlags="$BuildFlags $*"
}
# Propagates the listed flags to rpm_append_flag if supplied by
# redhat-rpm-config.
BuildFlags="-O2 -g"
rpm_inherit_flags ()
{
local reference=" $* "
local flag
for flag in $RPM_OPT_FLAGS $RPM_LD_FLAGS ; do
if echo "$reference" | grep -q -F " $flag " ; then
rpm_append_flag "$flag"
fi
done
}
# Propgate select compiler flags from redhat-rpm-config. These flags
# are target-dependent, so we use only those which are specified in
# redhat-rpm-config. We keep the -m32/-m32/-m64 flags to support
# multilib builds.
#
# Note: For building alternative run-times, care is required to avoid
# overriding the architecture flags which go into CC/CXX. The flags
# below are passed in CFLAGS.
rpm_inherit_flags \
"-Wp,-D_GLIBCXX_ASSERTIONS" \
"-fasynchronous-unwind-tables" \
"-fstack-clash-protection" \
"-funwind-tables" \
"-m31" \
"-m32" \
"-m64" \
"-march=haswell" \
"-march=i686" \
"-march=x86-64" \
"-march=z13" \
"-march=z14" \
"-march=zEC12" \
"-mfpmath=sse" \
"-msse2" \
"-mstackrealign" \
"-mtune=generic" \
"-mtune=z13" \
"-mtune=z14" \
"-mtune=zEC12" \
"-specs=/usr/lib/rpm/redhat/redhat-annobin-cc1" \
# libc_nonshared.a cannot be built with the default hardening flags
# because the glibc build system is incompatible with
# -D_FORTIFY_SOURCE. The object files need to be marked as to be
# skipped in annobin annotations. (The -specs= variant of activating
# annobin does not work here because of flag ordering issues.)
# See <https://bugzilla.redhat.com/show_bug.cgi?id=1668822>.
BuildFlagsNonshared="-fplugin=annobin -fplugin-arg-annobin-disable -Wa,--generate-missing-build-notes=yes"
# Special flag to enable annobin annotations for statically linked
# assembler code. Needs to be passed to make; not preserved by
# configure.
%define glibc_make_flags_as ASFLAGS="-g -Wa,--generate-missing-build-notes=yes"
%define glibc_make_flags %{glibc_make_flags_as}
##############################################################################
# %%build - Generic options.
##############################################################################
EnableKernel="--enable-kernel=%{enablekernel}"
# Save the used compiler and options into the file "Gcc" for use later
# by %%install.
echo "$GCC" > Gcc
##############################################################################
# build()
# Build glibc in `build-%{target}$1', passing the rest of the arguments
# as CFLAGS to the build (not the same as configure CFLAGS). Several
# global values are used to determine build flags, kernel version,
# system tap support, etc.
##############################################################################
build()
{
local builddir=build-%{target}${1:+-$1}
${1+shift}
rm -rf $builddir
mkdir $builddir
pushd $builddir
../configure CC="$GCC" CXX="$GXX" CFLAGS="$BuildFlags $*" \
--prefix=%{_prefix} \
--with-headers=%{_prefix}/include $EnableKernel \
--with-nonshared-cflags="$BuildFlagsNonshared" \
--enable-bind-now \
--build=%{target} \
--enable-stack-protector=strong \
%ifarch %{pie_arches}
--enable-static-pie \
%endif
--enable-tunables \
--enable-systemtap \
${core_with_options} \
%ifarch x86_64 %{ix86}
--enable-cet \
%endif
%ifarch %{ix86}
--disable-multi-arch \
%endif
%if %{without werror}
--disable-werror \
%endif
--disable-profile \
%if %{with bootstrap}
--without-selinux \
%endif
--disable-crypt ||
{ cat config.log; false; }
make %{?_smp_mflags} -O -r %{glibc_make_flags}
popd
}
# Default set of compiler options.
build
%if %{buildpower9}
(
GCC="$GCC -mcpu=power9 -mtune=power9"
GXX="$GXX -mcpu=power9 -mtune=power9"
core_with_options="--with-cpu=power9"
build power9
)
%endif
##############################################################################
# Install glibc...
##############################################################################
%install
# The built glibc is installed into a subdirectory of $RPM_BUILD_ROOT.
# For a system glibc that subdirectory is "/" (the root of the filesystem).
# This is called a sysroot (system root) and can be changed if we have a
# distribution that supports multiple installed glibc versions.
%define glibc_sysroot $RPM_BUILD_ROOT
# Remove existing file lists.
find . -type f -name '*.filelist' -exec rm -rf {} \;
# Ensure the permissions of errlist.c do not change. When the file is
# regenerated the Makefile sets the permissions to 444. We set it to 644
# to match what comes out of git. The tarball of the git archive won't have
# correct permissions because git doesn't track all of the permissions
# accurately (see git-cache-meta if you need that). We also set it to 644 to
# match pre-existing rpms. We do this *after* the build because the build
# might regenerate the file and set the permissions to 444.
chmod 644 sysdeps/gnu/errlist.c
# Reload compiler and build options that were used during %%build.
GCC=`cat Gcc`
%ifarch riscv64
# RISC-V ABI wants to install everything in /lib64/lp64d or /usr/lib64/lp64d.
# Make these be symlinks to /lib64 or /usr/lib64 respectively. See:
# https://lists.fedoraproject.org/archives/list/devel@lists.fedoraproject.org/thread/DRHT5YTPK4WWVGL3GIN5BF2IKX2ODHZ3/
for d in %{glibc_sysroot}%{_libdir} %{glibc_sysroot}/%{_lib}; do
mkdir -p $d
(cd $d && ln -sf . lp64d)
done
%endif
# Build and install:
make -j1 install_root=%{glibc_sysroot} install -C build-%{target}
# If we are not building an auxiliary arch then install all of the supported
# locales.
%ifnarch %{auxarches}
pushd build-%{target}
# Do not use a parallel make here because the hardlink optimization in
# localedef is not fully reproducible when running concurrently.
make install_root=%{glibc_sysroot} \
install-locales -C ../localedata objdir=`pwd`
popd
%endif
# install_different:
# Install all core libraries into DESTDIR/SUBDIR. Either the file is
# installed as a copy or a symlink to the default install (if it is the
# same). The path SUBDIR_UP is the prefix used to go from
# DESTDIR/SUBDIR to the default installed libraries e.g.
# ln -s SUBDIR_UP/foo.so DESTDIR/SUBDIR/foo.so.
# When you call this function it is expected that you are in the root
# of the build directory, and that the default build directory is:
# "../build-%{target}" (relatively).
# The primary use of this function is to install alternate runtimes
# into the build directory and avoid duplicating this code for each
# runtime.
install_different()
{
local lib libbase libbaseso dlib
local destdir="$1"
local subdir="$2"
local subdir_up="$3"
local libdestdir="$destdir/$subdir"
# All three arguments must be non-zero paths.
if ! [ "$destdir" \
-a "$subdir" \
-a "$subdir_up" ]; then
echo "One of the arguments to install_different was emtpy."
exit 1
fi
# Create the destination directory and the multilib directory.
mkdir -p "$destdir"
mkdir -p "$libdestdir"
# Walk all of the libraries we installed...
for lib in libc math/libm nptl/libpthread rt/librt nptl_db/libthread_db
do
libbase=${lib#*/}
# Take care that `libbaseso' has a * that needs expanding so
# take care with quoting.
libbaseso=$(basename %{glibc_sysroot}/%{_lib}/${libbase}-*.so)
# Only install if different from default build library.
if cmp -s ${lib}.so ../build-%{target}/${lib}.so; then
ln -sf "$subdir_up"/$libbaseso $libdestdir/$libbaseso
else
cp -a ${lib}.so $libdestdir/$libbaseso
fi
dlib=$libdestdir/$(basename %{glibc_sysroot}/%{_lib}/${libbase}.so.*)
ln -sf $libbaseso $dlib
done
}
%if %{buildpower9}
pushd build-%{target}-power9
install_different "$RPM_BUILD_ROOT/%{_lib}" power9 ..
popd
%endif
##############################################################################
# Remove the files we don't want to distribute
##############################################################################
# Remove the libNoVersion files.
# XXX: This looks like a bug in glibc that accidentally installed these
# wrong files. We probably don't need this today.
rm -f %{glibc_sysroot}/%{_libdir}/libNoVersion*
rm -f %{glibc_sysroot}/%{_lib}/libNoVersion*
# Remove the old nss modules.
rm -f %{glibc_sysroot}/%{_lib}/libnss1-*
rm -f %{glibc_sysroot}/%{_lib}/libnss-*.so.1
# This statically linked binary is no longer necessary in a world where
# the default Fedora install uses an initramfs, and further we have rpm-ostree
# which captures the whole userspace FS tree.
# Further, see https://github.com/projectatomic/rpm-ostree/pull/1173#issuecomment-355014583
rm -f %{glibc_sysroot}/{usr/,}sbin/sln
######################################################################
# Run ldconfig to create all the symbolic links we need
######################################################################
# Note: This has to happen before creating /etc/ld.so.conf.
mkdir -p %{glibc_sysroot}/var/cache/ldconfig
truncate -s 0 %{glibc_sysroot}/var/cache/ldconfig/aux-cache
# ldconfig is statically linked, so we can use the new version.
%{glibc_sysroot}/sbin/ldconfig -N -r %{glibc_sysroot}
##############################################################################
# Install info files
##############################################################################
%if %{with docs}
# Move the info files if glibc installed them into the wrong location.
if [ -d %{glibc_sysroot}%{_prefix}/info -a "%{_infodir}" != "%{_prefix}/info" ]; then
mkdir -p %{glibc_sysroot}%{_infodir}
mv -f %{glibc_sysroot}%{_prefix}/info/* %{glibc_sysroot}%{_infodir}
rm -rf %{glibc_sysroot}%{_prefix}/info
fi
# Compress all of the info files.
gzip -9nvf %{glibc_sysroot}%{_infodir}/libc*
%else
rm -f %{glibc_sysroot}%{_infodir}/dir
rm -f %{glibc_sysroot}%{_infodir}/libc.info*
%endif
##############################################################################
# Create locale sub-package file lists
##############################################################################
%ifnarch %{auxarches}
olddir=`pwd`
pushd %{glibc_sysroot}%{_prefix}/lib/locale
rm -f locale-archive
$olddir/build-%{target}/elf/ld.so \
--library-path $olddir/build-%{target}/ \
$olddir/build-%{target}/locale/localedef \
--alias-file=$olddir/intl/locale.alias \
--prefix %{glibc_sysroot} --add-to-archive \
eo *_*
# Historically, glibc-all-langpacks deleted the file on updates (sic),
# so we need to restore it in the posttrans scriptlet (like the old
# glibc-all-langpacks versions)
ln locale-archive locale-archive.real
# Create the file lists for the language specific sub-packages:
for i in eo *_*
do
lang=${i%%_*}
if [ ! -e langpack-${lang}.filelist ]; then
echo "%dir %{_prefix}/lib/locale" >> langpack-${lang}.filelist
fi
echo "%dir %{_prefix}/lib/locale/$i" >> langpack-${lang}.filelist
echo "%{_prefix}/lib/locale/$i/*" >> langpack-${lang}.filelist
done
popd
pushd %{glibc_sysroot}%{_prefix}/share/locale
for i in */LC_MESSAGES/libc.mo
do
locale=${i%%%%/*}
lang=${locale%%%%_*}
echo "%lang($lang) %{_prefix}/share/locale/${i}" \
>> %{glibc_sysroot}%{_prefix}/lib/locale/langpack-${lang}.filelist
done
popd
mv %{glibc_sysroot}%{_prefix}/lib/locale/*.filelist .
%endif
##############################################################################
# Install configuration files for services
##############################################################################
install -p -m 644 nss/nsswitch.conf %{glibc_sysroot}/etc/nsswitch.conf
%ifnarch %{auxarches}
# This is for ncsd - in glibc 2.2
install -m 644 nscd/nscd.conf %{glibc_sysroot}/etc
mkdir -p %{glibc_sysroot}%{_tmpfilesdir}
install -m 644 %{SOURCE1} %{buildroot}%{_tmpfilesdir}
mkdir -p %{glibc_sysroot}/lib/systemd/system
install -m 644 nscd/nscd.service nscd/nscd.socket %{glibc_sysroot}/lib/systemd/system
%endif
# Include ld.so.conf
echo 'include ld.so.conf.d/*.conf' > %{glibc_sysroot}/etc/ld.so.conf
truncate -s 0 %{glibc_sysroot}/etc/ld.so.cache
chmod 644 %{glibc_sysroot}/etc/ld.so.conf
mkdir -p %{glibc_sysroot}/etc/ld.so.conf.d
%ifnarch %{auxarches}
mkdir -p %{glibc_sysroot}/etc/sysconfig
truncate -s 0 %{glibc_sysroot}/etc/sysconfig/nscd
truncate -s 0 %{glibc_sysroot}/etc/gai.conf
%endif
# Include %{_libdir}/gconv/gconv-modules.cache
truncate -s 0 %{glibc_sysroot}%{_libdir}/gconv/gconv-modules.cache
chmod 644 %{glibc_sysroot}%{_libdir}/gconv/gconv-modules.cache
##############################################################################
# Install debug copies of unstripped static libraries
# - This step must be last in order to capture any additional static
# archives we might have added.
##############################################################################
# If we are building a debug package then copy all of the static archives
# into the debug directory to keep them as unstripped copies.
%if 0%{?_enable_debug_packages}
mkdir -p %{glibc_sysroot}%{_prefix}/lib/debug%{_libdir}
cp -a %{glibc_sysroot}%{_libdir}/*.a \
%{glibc_sysroot}%{_prefix}/lib/debug%{_libdir}/
rm -f %{glibc_sysroot}%{_prefix}/lib/debug%{_libdir}/*_p.a
%endif
# Remove any zoneinfo files; they are maintained by tzdata.
rm -rf %{glibc_sysroot}%{_prefix}/share/zoneinfo
# Make sure %config files have the same timestamp across multilib packages.
#
# XXX: Ideally ld.so.conf should have the timestamp of the spec file, but there
# doesn't seem to be any macro to give us that. So we do the next best thing,
# which is to at least keep the timestamp consistent. The choice of using
# SOURCE0 is arbitrary.
touch -r %{SOURCE0} %{glibc_sysroot}/etc/ld.so.conf
touch -r sunrpc/etc.rpc %{glibc_sysroot}/etc/rpc
# Lastly copy some additional documentation for the packages.
rm -rf documentation
mkdir documentation
cp timezone/README documentation/README.timezone
cp posix/gai.conf documentation/
%ifarch s390x
# Compatibility symlink
mkdir -p %{glibc_sysroot}/lib
ln -sf /%{_lib}/ld64.so.1 %{glibc_sysroot}/lib/ld64.so.1
%endif
%if %{with benchtests}
# Build benchmark binaries. Ignore the output of the benchmark runs.
pushd build-%{target}
make BENCH_DURATION=1 bench-build
popd
# Copy over benchmark binaries.
mkdir -p %{glibc_sysroot}%{_prefix}/libexec/glibc-benchtests
cp $(find build-%{target}/benchtests -type f -executable) %{glibc_sysroot}%{_prefix}/libexec/glibc-benchtests/
# ... and the makefile.
for b in %{SOURCE2} %{SOURCE3}; do
cp $b %{glibc_sysroot}%{_prefix}/libexec/glibc-benchtests/
done
# .. and finally, the comparison scripts.
cp benchtests/scripts/benchout.schema.json %{glibc_sysroot}%{_prefix}/libexec/glibc-benchtests/
cp benchtests/scripts/compare_bench.py %{glibc_sysroot}%{_prefix}/libexec/glibc-benchtests/
cp benchtests/scripts/import_bench.py %{glibc_sysroot}%{_prefix}/libexec/glibc-benchtests/
cp benchtests/scripts/validate_benchout.py %{glibc_sysroot}%{_prefix}/libexec/glibc-benchtests/
%endif
%if 0%{?_enable_debug_packages}
# The #line directives gperf generates do not give the proper
# file name relative to the build directory.
pushd locale
ln -s programs/*.gperf .
popd
pushd iconv
ln -s ../locale/programs/charmap-kw.gperf .
popd
%if %{with docs}
# Remove the `dir' info-heirarchy file which will be maintained
# by the system as it adds info files to the install.
rm -f %{glibc_sysroot}%{_infodir}/dir
%endif
%ifnarch %{auxarches}
mkdir -p %{glibc_sysroot}/var/{db,run}/nscd
touch %{glibc_sysroot}/var/{db,run}/nscd/{passwd,group,hosts,services}
touch %{glibc_sysroot}/var/run/nscd/{socket,nscd.pid}
%endif
# Move libpcprofile.so and libmemusage.so into the proper library directory.
# They can be moved without any real consequences because users would not use
# them directly.
mkdir -p %{glibc_sysroot}%{_libdir}
mv -f %{glibc_sysroot}/%{_lib}/lib{pcprofile,memusage}.so \
%{glibc_sysroot}%{_libdir}
# Strip all of the installed object files.
strip -g %{glibc_sysroot}%{_libdir}/*.o
###############################################################################
# Rebuild libpthread.a using --whole-archive to ensure all of libpthread
# is included in a static link. This prevents any problems when linking
# statically, using parts of libpthread, and other necessary parts not
# being included. Upstream has decided that this is the wrong approach to
# this problem and that the full set of dependencies should be resolved
# such that static linking works and produces the most minimally sized
# static application possible.
###############################################################################
pushd %{glibc_sysroot}%{_prefix}/%{_lib}/
$GCC -r -nostdlib -o libpthread.o -Wl,--whole-archive ./libpthread.a
rm libpthread.a
ar rcs libpthread.a libpthread.o
rm libpthread.o
popd
# The xtrace and memusage scripts have hard-coded paths that need to be
# translated to a correct set of paths using the $LIB token which is
# dynamically translated by ld.so as the default lib directory.
for i in %{glibc_sysroot}%{_prefix}/bin/{xtrace,memusage}; do
%if %{with bootstrap}
test -w $i || continue
%endif
sed -e 's~=/%{_lib}/libpcprofile.so~=%{_libdir}/libpcprofile.so~' \
-e 's~=/%{_lib}/libmemusage.so~=%{_libdir}/libmemusage.so~' \
-e 's~='\''/\\\$LIB/libpcprofile.so~='\''%{_prefix}/\\$LIB/libpcprofile.so~' \
-e 's~='\''/\\\$LIB/libmemusage.so~='\''%{_prefix}/\\$LIB/libmemusage.so~' \
-i $i
done
##############################################################################
# Build an empty libpthread_nonshared.a for compatiliby with applications
# that have old linker scripts that reference this file. We ship this only
# in compat-libpthread-nonshared sub-package.
##############################################################################
ar cr %{glibc_sysroot}%{_prefix}/%{_lib}/libpthread_nonshared.a
##############################################################################
# Beyond this point in the install process we no longer modify the set of
# installed files, with one exception, for auxarches we cleanup the file list
# at the end and remove files which we don't intend to ship. We need the file
# list to effect a proper cleanup, and so it happens last.
##############################################################################
##############################################################################
# Build the file lists used for describing the package and subpackages.
##############################################################################
# There are several main file lists (and many more for
# the langpack sub-packages (langpack-${lang}.filelist)):
# * master.filelist
# - Master file list from which all other lists are built.
# * glibc.filelist
# - Files for the glibc packages.
# * common.filelist
# - Flies for the common subpackage.
# * utils.filelist
# - Files for the utils subpackage.
# * nscd.filelist
# - Files for the nscd subpackage.
# * devel.filelist
# - Files for the devel subpackage.
# * headers.filelist
# - Files for the headers subpackage.
# * static.filelist
# - Files for the static subpackage.
# * libnsl.filelist
# - Files for the libnsl subpackage
# * nss_db.filelist
# * nss_hesiod.filelist
# - File lists for nss_* NSS module subpackages.
# * nss-devel.filelist
# - File list with the .so symbolic links for NSS packages.
# * compat-libpthread-nonshared.filelist.
# - File list for compat-libpthread-nonshared subpackage.
# * debuginfo.filelist
# - Files for the glibc debuginfo package.
# * debuginfocommon.filelist
# - Files for the glibc common debuginfo package.
#
# Create the main file lists. This way we can append to any one of them later
# wihtout having to create it. Note these are removed at the start of the
# install phase.
touch master.filelist
touch glibc.filelist
touch common.filelist
touch utils.filelist
touch nscd.filelist
touch devel.filelist
touch headers.filelist
touch static.filelist
touch libnsl.filelist
touch nss_db.filelist
touch nss_hesiod.filelist
touch nss-devel.filelist
touch compat-libpthread-nonshared.filelist
touch debuginfo.filelist
touch debuginfocommon.filelist
###############################################################################
# Master file list, excluding a few things.
###############################################################################
{
# List all files or links that we have created during install.
# Files with 'etc' are configuration files, likewise 'gconv-modules'
# and 'gconv-modules.cache' are caches, and we exclude them.
find %{glibc_sysroot} \( -type f -o -type l \) \
\( \
-name etc -printf "%%%%config " -o \
-name gconv-modules \
-printf "%%%%verify(not md5 size mtime) %%%%config(noreplace) " -o \
-name gconv-modules.cache \
-printf "%%%%verify(not md5 size mtime) " \
, \
! -path "*/lib/debug/*" -printf "/%%P\n" \)
# List all directories with a %%dir prefix. We omit the info directory and
# all directories in (and including) /usr/share/locale.
find %{glibc_sysroot} -type d \
\( -path '*%{_prefix}/share/locale' -prune -o \
\( -path '*%{_prefix}/share/*' \
%if %{with docs}
! -path '*%{_infodir}' -o \
%endif
-path "*%{_prefix}/include/*" \
\) -printf "%%%%dir /%%P\n" \)
} | {
# Also remove the *.mo entries. We will add them to the
# language specific sub-packages.
# libnss_ files go into subpackages related to NSS modules.
# and .*/share/i18n/charmaps/.*), they go into the sub-package
# "locale-source":
sed -e '\,.*/share/locale/\([^/_]\+\).*/LC_MESSAGES/.*\.mo,d' \
-e '\,.*/share/i18n/locales/.*,d' \
-e '\,.*/share/i18n/charmaps/.*,d' \
-e '\,.*/etc/\(localtime\|nsswitch.conf\|ld\.so\.conf\|ld\.so\.cache\|default\|rpc\|gai\.conf\),d' \
-e '\,.*/%{_libdir}/lib\(pcprofile\|memusage\)\.so,d' \
-e '\,.*/bin/\(memusage\|mtrace\|xtrace\|pcprofiledump\),d'
} | sort > master.filelist
# The master file list is now used by each subpackage to list their own
# files. We go through each package and subpackage now and create their lists.
# Each subpackage picks the files from the master list that they need.
# The order of the subpackage list generation does not matter.
# Make the master file list read-only after this point to avoid accidental
# modification.
chmod 0444 master.filelist
###############################################################################
# glibc
###############################################################################
# Add all files with the following exceptions:
# - The info files '%{_infodir}/dir'
# - The partial (lib*_p.a) static libraries, include files.
# - The static files, objects, unversioned DSOs, and nscd.
# - The bin, locale, some sbin, and share.
# - We want iconvconfig in the main package and we do this by using
# a double negation of -v and [^i] so it removes all files in
# sbin *but* iconvconfig.
# - All the libnss files (we add back the ones we want later).
# - All bench test binaries.
# - The aux-cache, since it's handled specially in the files section.
cat master.filelist \
| grep -v \
-e '%{_infodir}' \
-e '%{_libdir}/lib.*_p.a' \
-e '%{_prefix}/include' \
-e '%{_libdir}/lib.*\.a' \
-e '%{_libdir}/.*\.o' \
-e '%{_libdir}/lib.*\.so' \
-e 'nscd' \
-e '%{_prefix}/bin' \
-e '%{_prefix}/lib/locale' \
-e '%{_prefix}/sbin/[^i]' \
-e '%{_prefix}/share' \
-e '/var/db/Makefile' \
-e '/libnss_.*\.so[0-9.]*$' \
-e '/libnsl' \
-e 'glibc-benchtests' \
-e 'aux-cache' \
> glibc.filelist
# Add specific files:
# - The nss_files, nss_compat, and nss_db files.
# - The libmemusage.so and libpcprofile.so used by utils.
for module in compat files dns; do
cat master.filelist \
| grep -E \
-e "/libnss_$module(\.so\.[0-9.]+|-[0-9.]+\.so)$" \
>> glibc.filelist
done
grep -e "libmemusage.so" -e "libpcprofile.so" master.filelist >> glibc.filelist
###############################################################################
# glibc-devel
###############################################################################
%if %{with docs}
# Put the info files into the devel file list, but exclude the generated dir.
grep '%{_infodir}' master.filelist | grep -v '%{_infodir}/dir' > devel.filelist
%endif
# Put some static files into the devel package.
grep '%{_libdir}/lib.*\.a' master.filelist \
| grep '/lib\(\(c\|pthread\|nldbl\|mvec\)_nonshared\|g\|ieee\|mcheck\)\.a$' \
>> devel.filelist
# Put all of the object files and *.so (not the versioned ones) into the
# devel package.
grep '%{_libdir}/.*\.o' < master.filelist >> devel.filelist
grep '%{_libdir}/lib.*\.so' < master.filelist >> devel.filelist
# The exceptions are:
# - libmemusage.so and libpcprofile.so in glibc used by utils.
# - libnss_*.so which are in nss-devel.
sed -i -e '\,libmemusage.so,d' \
-e '\,libpcprofile.so,d' \
-e '\,/libnss_[a-z]*\.so$,d' \
devel.filelist
###############################################################################
# glibc-headers
###############################################################################
# The glibc-headers package includes only common files which are identical
# across all multilib packages. We must keep gnu/stubs.h and gnu/lib-names.h
# in the glibc-headers package, but the -32, -64, -64-v1, and -64-v2 versions
# go into the development packages.
grep '%{_prefix}/include/gnu/stubs-.*\.h$' < master.filelist >> devel.filelist || :
grep '%{_prefix}/include/gnu/lib-names-.*\.h$' < master.filelist >> devel.filelist || :
# Put the include files into headers file list.
grep '%{_prefix}/include' < master.filelist \
| egrep -v '%{_prefix}/include/gnu/stubs-.*\.h$' \
| egrep -v '%{_prefix}/include/gnu/lib-names-.*\.h$' \
> headers.filelist
###############################################################################
# glibc-static
###############################################################################
# Put the rest of the static files into the static package.
grep '%{_libdir}/lib.*\.a' < master.filelist \
| grep -v '/lib\(\(c\|pthread\|nldbl\|mvec\)_nonshared\|g\|ieee\|mcheck\)\.a$' \
> static.filelist
###############################################################################
# glibc-common
###############################################################################
# All of the bin and certain sbin files go into the common package except
# iconvconfig which needs to go in glibc. Likewise nscd is excluded because
# it goes in nscd. The iconvconfig binary is kept in the main glibc package
# because we use it in the post-install scriptlet to rebuild the
# gconv-modules.cache. The makedb binary is in nss_db.
grep '%{_prefix}/bin' master.filelist \
| grep -v '%{_prefix}/bin/makedb' \
>> common.filelist
grep '%{_prefix}/sbin' master.filelist \
| grep -v '%{_prefix}/sbin/iconvconfig' \
| grep -v 'nscd' >> common.filelist
# All of the files under share go into the common package since they should be
# multilib-independent.
# Exceptions:
# - The actual share directory, not owned by us.
# - The info files which go in devel, and the info directory.
grep '%{_prefix}/share' master.filelist \
| grep -v \
-e '%{_prefix}/share/info/libc.info.*' \
-e '%%dir %{prefix}/share/info' \
-e '%%dir %{prefix}/share' \
>> common.filelist
###############################################################################
# nscd
###############################################################################
# The nscd binary must go into the nscd subpackage.
echo '%{_prefix}/sbin/nscd' > nscd.filelist
###############################################################################
# glibc-utils
###############################################################################
# Add the utils scripts and programs to the utils subpackage.
cat > utils.filelist <<EOF
%if %{without bootstrap}
%{_prefix}/bin/memusage
%{_prefix}/bin/memusagestat
%endif
%{_prefix}/bin/mtrace
%{_prefix}/bin/pcprofiledump
%{_prefix}/bin/xtrace
EOF
###############################################################################
# nss_db, nss_hesiod
###############################################################################
# Move the NSS-related files to the NSS subpackages. Be careful not
# to pick up .debug files, and the -devel symbolic links.
for module in db hesiod; do
grep -E "/libnss_$module(\.so\.[0-9.]+|-[0-9.]+\.so)$" \
master.filelist > nss_$module.filelist
done
grep -E "%{_prefix}/bin/makedb$" master.filelist >> nss_db.filelist
###############################################################################
# nss-devel
###############################################################################
# Symlinks go into the nss-devel package (instead of the main devel
# package).
grep '/libnss_[a-z]*\.so$' master.filelist > nss-devel.filelist
###############################################################################
# libnsl
###############################################################################
# Prepare the libnsl-related file lists.
grep '/libnsl-[0-9.]*.so$' master.filelist > libnsl.filelist
test $(wc -l < libnsl.filelist) -eq 1
%if %{with benchtests}
###############################################################################
# glibc-benchtests
###############################################################################
# List of benchmarks.
find build-%{target}/benchtests -type f -executable | while read b; do
echo "%{_prefix}/libexec/glibc-benchtests/$(basename $b)"
done >> benchtests.filelist
# ... and the makefile.
for b in %{SOURCE2} %{SOURCE3}; do
echo "%{_prefix}/libexec/glibc-benchtests/$(basename $b)" >> benchtests.filelist
done
# ... and finally, the comparison scripts.
echo "%{_prefix}/libexec/glibc-benchtests/benchout.schema.json" >> benchtests.filelist
echo "%{_prefix}/libexec/glibc-benchtests/compare_bench.py*" >> benchtests.filelist
echo "%{_prefix}/libexec/glibc-benchtests/import_bench.py*" >> benchtests.filelist
echo "%{_prefix}/libexec/glibc-benchtests/validate_benchout.py*" >> benchtests.filelist
%endif
###############################################################################
# compat-libpthread-nonshared
###############################################################################
echo "%{_libdir}/libpthread_nonshared.a" >> compat-libpthread-nonshared.filelist
###############################################################################
# glibc-debuginfocommon, and glibc-debuginfo
###############################################################################
find_debuginfo_args='--strict-build-id -g -i'
%ifarch %{debuginfocommonarches}
find_debuginfo_args="$find_debuginfo_args \
-l common.filelist \
-l utils.filelist \
-l nscd.filelist \
-p '.*/(sbin|libexec)/.*' \
-o debuginfocommon.filelist \
-l nss_db.filelist -l nss_hesiod.filelist \
-l libnsl.filelist -l glibc.filelist \
%if %{with benchtests}
-l benchtests.filelist
%endif
"
%endif
/usr/lib/rpm/find-debuginfo.sh $find_debuginfo_args -o debuginfo.filelist
# List all of the *.a archives in the debug directory.
list_debug_archives()
{
local dir=%{_prefix}/lib/debug%{_libdir}
find %{glibc_sysroot}$dir -name "*.a" -printf "$dir/%%P\n"
}
%ifarch %{debuginfocommonarches}
# Remove the source files from the common package debuginfo.
sed -i '\#^%{glibc_sysroot}%{_prefix}/src/debug/#d' debuginfocommon.filelist
# Create a list of all of the source files we copied to the debug directory.
find %{glibc_sysroot}%{_prefix}/src/debug \
\( -type d -printf '%%%%dir ' \) , \
-printf '%{_prefix}/src/debug/%%P\n' > debuginfocommon.sources
%ifarch %{biarcharches}
# Add the source files to the core debuginfo package.
cat debuginfocommon.sources >> debuginfo.filelist
%else
%ifarch %{ix86}
%define basearch i686
%endif
%ifarch sparc sparcv9
%define basearch sparc
%endif
# The auxarches get only these few source files.
auxarches_debugsources=\
'/(generic|linux|%{basearch}|nptl(_db)?)/|/%{glibcsrcdir}/build|/dl-osinfo\.h'
# Place the source files into the core debuginfo pakcage.
egrep "$auxarches_debugsources" debuginfocommon.sources >> debuginfo.filelist
# Remove the source files from the common debuginfo package.
egrep -v "$auxarches_debugsources" \
debuginfocommon.sources >> debuginfocommon.filelist
%endif
# Add the list of *.a archives in the debug directory to
# the common debuginfo package.
list_debug_archives >> debuginfocommon.filelist
%endif
# Remove some common directories from the common package debuginfo so that we
# don't end up owning them.
exclude_common_dirs()
{
exclude_dirs="%{_prefix}/src/debug"
exclude_dirs="$exclude_dirs $(echo %{_prefix}/lib/debug{,/%{_lib},/bin,/sbin})"
exclude_dirs="$exclude_dirs $(echo %{_prefix}/lib/debug%{_prefix}{,/%{_lib},/libexec,/bin,/sbin})"
for d in $(echo $exclude_dirs | sed 's/ /\n/g'); do
sed -i "\|^%%dir $d/\?$|d" $1
done
}
%ifarch %{debuginfocommonarches}
exclude_common_dirs debuginfocommon.filelist
%endif
exclude_common_dirs debuginfo.filelist
%endif
##############################################################################
# Delete files that we do not intended to ship with the auxarch.
# This is the only place where we touch the installed files after generating
# the file lists.
##############################################################################
%ifarch %{auxarches}
echo Cutting down the list of unpackaged files
sed -e '/%%dir/d;/%%config/d;/%%verify/d;s/%%lang([^)]*) //;s#^/*##' \
common.filelist devel.filelist static.filelist headers.filelist \
utils.filelist nscd.filelist \
%ifarch %{debuginfocommonarches}
debuginfocommon.filelist \
%endif
| (cd %{glibc_sysroot}; xargs --no-run-if-empty rm -f 2> /dev/null || :)
%endif
##############################################################################
# Run the glibc testsuite
##############################################################################
%check
%if %{with testsuite}
# Run the glibc tests. If any tests fail to build we exit %check with
# an error, otherwise we print the test failure list and the failed
# test output and continue. Write to standard error to avoid
# synchronization issues with make and shell tracing output if
# standard output and standard error are different pipes.
run_tests () {
# This hides a test suite build failure, which should be fatal. We
# check "Summary of test results:" below to verify that all tests
# were built and run.
make %{?_smp_mflags} -O check |& tee rpmbuild.check.log >&2
test -n tests.sum
if ! grep -q '^Summary of test results:$' rpmbuild.check.log ; then
echo "FAIL: test suite build of target: $(basename "$(pwd)")" >& 2
exit 1
fi
set +x
grep -v ^PASS: tests.sum > rpmbuild.tests.sum.not-passing || true
if test -n rpmbuild.tests.sum.not-passing ; then
echo ===================FAILED TESTS===================== >&2
echo "Target: $(basename "$(pwd)")" >& 2
cat rpmbuild.tests.sum.not-passing >&2
while read failed_code failed_test ; do
for suffix in out test-result ; do
if test -e "$failed_test.$suffix"; then
echo >&2
echo "=====$failed_code $failed_test.$suffix=====" >&2
cat -- "$failed_test.$suffix" >&2
echo >&2
fi
done
done <rpmbuild.tests.sum.not-passing
fi
# Unconditonally dump differences in the system call list.
echo "* System call consistency checks:" >&2
cat misc/tst-syscall-list.out >&2
set -x
}
# Increase timeouts
export TIMEOUTFACTOR=16
parent=$$
echo ====================TESTING=========================
# Default libraries.
pushd build-%{target}
run_tests
popd
%if %{buildpower9}
echo ====================TESTING -mcpu=power9=============
pushd build-%{target}-power9
run_tests
popd
%endif
echo ====================TESTING END=====================
PLTCMD='/^Relocation section .*\(\.rela\?\.plt\|\.rela\.IA_64\.pltoff\)/,/^$/p'
echo ====================PLT RELOCS LD.SO================
readelf -Wr %{glibc_sysroot}/%{_lib}/ld-*.so | sed -n -e "$PLTCMD"
echo ====================PLT RELOCS LIBC.SO==============
readelf -Wr %{glibc_sysroot}/%{_lib}/libc-*.so | sed -n -e "$PLTCMD"
echo ====================PLT RELOCS END==================
# Obtain a way to run the dynamic loader. Avoid matching the symbolic
# link and then pick the first loader (although there should be only
# one).
run_ldso="$(find %{glibc_sysroot}/%{_lib}/ld-*.so -type f | LC_ALL=C sort | head -n1) --library-path %{glibc_sysroot}/%{_lib}"
# Show the auxiliary vector as seen by the new library
# (even if we do not perform the valgrind test).
LD_SHOW_AUXV=1 $run_ldso /bin/true
# Finally, check if valgrind runs with the new glibc.
# We want to fail building if valgrind is not able to run with this glibc so
# that we can then coordinate with valgrind to get it fixed before we update
# glibc.
%if %{with valgrind}
$run_ldso /usr/bin/valgrind --error-exitcode=1 \
$run_ldso /usr/bin/true
# true --help performs some memory allocations.
$run_ldso /usr/bin/valgrind --error-exitcode=1 \
$run_ldso /usr/bin/true --help >/dev/null
%endif
%endif
%pre -p <lua>
-- Check that the running kernel is new enough
required = '%{enablekernel}'
rel = posix.uname("%r")
if rpm.vercmp(rel, required) < 0 then
error("FATAL: kernel too old", 0)
end
%post -p <lua>
-- We use lua's posix.exec because there may be no shell that we can
-- run during glibc upgrade.
function post_exec (program, ...)
local pid = posix.fork ()
if pid == 0 then
assert (posix.exec (program, ...))
elseif pid > 0 then
posix.wait (pid)
end
end
-- (1) Remove multilib libraries from previous installs.
-- In order to support in-place upgrades, we must immediately remove
-- obsolete platform directories after installing a new glibc
-- version. RPM only deletes files removed by updates near the end
-- of the transaction. If we did not remove the obsolete platform
-- directories here, they may be preferred by the dynamic linker
-- during the execution of subsequent RPM scriptlets, likely
-- resulting in process startup failures.
-- Full set of libraries glibc may install.
install_libs = { "anl", "BrokenLocale", "c", "dl", "m", "mvec",
"nss_compat", "nss_db", "nss_dns", "nss_files",
"nss_hesiod", "pthread", "resolv", "rt", "SegFault",
"thread_db", "util" }
-- We are going to remove these libraries. Generally speaking we remove
-- all core libraries in the multilib directory.
-- We employ a tight match where X.Y is in [2.0,9.9*], so we would
-- match "libc-2.0.so" and so on up to "libc-9.9*".
remove_regexps = {}
for i = 1, #install_libs do
remove_regexps[i] = ("lib" .. install_libs[i]
.. "%%-[2-9]%%.[0-9]+%%.so$")
end
-- Two exceptions:
remove_regexps[#install_libs + 1] = "libthread_db%%-1%%.0%%.so"
remove_regexps[#install_libs + 2] = "libSegFault%%.so"
-- We are going to search these directories.
local remove_dirs = { "%{_libdir}/i686",
"%{_libdir}/i686/nosegneg",
"%{_libdir}/power6",
"%{_libdir}/power7",
"%{_libdir}/power8" }
-- Walk all the directories with files we need to remove...
for _, rdir in ipairs (remove_dirs) do
if posix.access (rdir) then
-- If the directory exists we look at all the files...
local remove_files = posix.files (rdir)
for rfile in remove_files do
for _, rregexp in ipairs (remove_regexps) do
-- Does it match the regexp?
local dso = string.match (rfile, rregexp)
if (dso ~= nil) then
-- Removing file...
os.remove (rdir .. '/' .. rfile)
end
end
end
end
end
-- (2) Update /etc/ld.so.conf
-- Next we update /etc/ld.so.conf to ensure that it starts with
-- a literal "include ld.so.conf.d/*.conf".
local ldsoconf = "/etc/ld.so.conf"
local ldsoconf_tmp = "/etc/glibc_post_upgrade.ld.so.conf"
if posix.access (ldsoconf) then
-- We must have a "include ld.so.conf.d/*.conf" line.
local have_include = false
for line in io.lines (ldsoconf) do
-- This must match, and we don't ignore whitespace.
if string.match (line, "^include ld.so.conf.d/%%*%%.conf$") ~= nil then
have_include = true
end
end
if not have_include then
-- Insert "include ld.so.conf.d/*.conf" line at the start of the
-- file. We only support one of these post upgrades running at
-- a time (temporary file name is fixed).
local tmp_fd = io.open (ldsoconf_tmp, "w")
if tmp_fd ~= nil then
tmp_fd:write ("include ld.so.conf.d/*.conf\n")
for line in io.lines (ldsoconf) do
tmp_fd:write (line .. "\n")
end
tmp_fd:close ()
local res = os.rename (ldsoconf_tmp, ldsoconf)
if res == nil then
io.stdout:write ("Error: Unable to update configuration file (rename).\n")
end
else
io.stdout:write ("Error: Unable to update configuration file (open).\n")
end
end
end
-- (3) Rebuild ld.so.cache early.
-- If the format of the cache changes then we need to rebuild
-- the cache early to avoid any problems running binaries with
-- the new glibc.
-- Note: We use _prefix because Fedora's UsrMove says so.
post_exec ("%{_prefix}/sbin/ldconfig")
-- (4) Update gconv modules cache.
-- If the /usr/lib/gconv/gconv-modules.cache exists, then update it
-- with the latest set of modules that were just installed.
-- We assume that the cache is in _libdir/gconv and called
-- "gconv-modules.cache".
local iconv_dir = "%{_libdir}/gconv"
local iconv_cache = iconv_dir .. "/gconv-modules.cache"
if (posix.utime (iconv_cache) == 0) then
post_exec ("%{_prefix}/sbin/iconvconfig",
"-o", iconv_cache,
"--nostdlib",
iconv_dir)
else
io.stdout:write ("Error: Missing " .. iconv_cache .. " file.\n")
end
%posttrans all-langpacks -e -p <lua>
-- The old glibc-all-langpacks postun scriptlet deleted the locale-archive
-- file, so we may have to resurrect it on upgrades.
local archive_path = "%{_prefix}/lib/locale/locale-archive"
local real_path = "%{_prefix}/lib/locale/locale-archive.real"
local stat_archive = posix.stat(archive_path)
local stat_real = posix.stat(real_path)
-- If the hard link was removed, restore it.
if stat_archive ~= nil and stat_real ~= nil
and (stat_archive.ino ~= stat_real.ino
or stat_archive.dev ~= stat_real.dev) then
posix.unlink(archive_path)
stat_archive = nil
end
-- If the file is gone, restore it.
if stat_archive == nil then
posix.link(real_path, archive_path)
end
-- Remove .rpmsave file potentially created due to config file change.
local save_path = archive_path .. ".rpmsave"
if posix.access(save_path) then
posix.unlink(save_path)
end
%pre headers
# this used to be a link and it is causing nightmares now
if [ -L %{_prefix}/include/scsi ] ; then
rm -f %{_prefix}/include/scsi
fi
%pre -n nscd
getent group nscd >/dev/null || /usr/sbin/groupadd -g 28 -r nscd
getent passwd nscd >/dev/null ||
/usr/sbin/useradd -M -o -r -d / -s /sbin/nologin \
-c "NSCD Daemon" -u 28 -g nscd nscd
%post -n nscd
%systemd_post nscd.service
%preun -n nscd
%systemd_preun nscd.service
%postun -n nscd
if test $1 = 0; then
/usr/sbin/userdel nscd > /dev/null 2>&1 || :
fi
%systemd_postun_with_restart nscd.service
%files -f glibc.filelist
%dir %{_prefix}/%{_lib}/audit
%if %{buildpower9}
%dir /%{_lib}/power9
%endif
%ifarch s390x
/lib/ld64.so.1
%endif
%verify(not md5 size mtime) %config(noreplace) /etc/nsswitch.conf
%verify(not md5 size mtime) %config(noreplace) /etc/ld.so.conf
%verify(not md5 size mtime) %config(noreplace) /etc/rpc
%dir /etc/ld.so.conf.d
%dir %{_prefix}/libexec/getconf
%dir %{_libdir}/gconv
%dir %attr(0700,root,root) /var/cache/ldconfig
%attr(0600,root,root) %verify(not md5 size mtime) %ghost %config(missingok,noreplace) /var/cache/ldconfig/aux-cache
%attr(0644,root,root) %verify(not md5 size mtime) %ghost %config(missingok,noreplace) /etc/ld.so.cache
%attr(0644,root,root) %verify(not md5 size mtime) %ghost %config(missingok,noreplace) /etc/gai.conf
%doc README NEWS INSTALL elf/rtld-debugger-interface.txt
# If rpm doesn't support %license, then use %doc instead.
%{!?_licensedir:%global license %%doc}
%license COPYING COPYING.LIB LICENSES
%ifnarch %{auxarches}
%files -f common.filelist common
%dir %{_prefix}/lib/locale
%dir %{_prefix}/lib/locale/C.utf8
%{_prefix}/lib/locale/C.utf8/*
%doc documentation/README.timezone
%doc documentation/gai.conf
%files all-langpacks
%{_prefix}/lib/locale/locale-archive
%{_prefix}/lib/locale/locale-archive.real
%{_prefix}/share/locale/*/LC_MESSAGES/libc.mo
%files locale-source
%dir %{_prefix}/share/i18n/locales
%{_prefix}/share/i18n/locales/*
%dir %{_prefix}/share/i18n/charmaps
%{_prefix}/share/i18n/charmaps/*
%files -f devel.filelist devel
%files -f static.filelist static
%files -f headers.filelist headers
%files -f utils.filelist utils
%files -f nscd.filelist -n nscd
%config(noreplace) /etc/nscd.conf
%dir %attr(0755,root,root) /var/run/nscd
%dir %attr(0755,root,root) /var/db/nscd
/lib/systemd/system/nscd.service
/lib/systemd/system/nscd.socket
%{_tmpfilesdir}/nscd.conf
%attr(0644,root,root) %verify(not md5 size mtime) %ghost %config(missingok,noreplace) /var/run/nscd/nscd.pid
%attr(0666,root,root) %verify(not md5 size mtime) %ghost %config(missingok,noreplace) /var/run/nscd/socket
%attr(0600,root,root) %verify(not md5 size mtime) %ghost %config(missingok,noreplace) /var/run/nscd/passwd
%attr(0600,root,root) %verify(not md5 size mtime) %ghost %config(missingok,noreplace) /var/run/nscd/group
%attr(0600,root,root) %verify(not md5 size mtime) %ghost %config(missingok,noreplace) /var/run/nscd/hosts
%attr(0600,root,root) %verify(not md5 size mtime) %ghost %config(missingok,noreplace) /var/run/nscd/services
%attr(0600,root,root) %verify(not md5 size mtime) %ghost %config(missingok,noreplace) /var/db/nscd/passwd
%attr(0600,root,root) %verify(not md5 size mtime) %ghost %config(missingok,noreplace) /var/db/nscd/group
%attr(0600,root,root) %verify(not md5 size mtime) %ghost %config(missingok,noreplace) /var/db/nscd/hosts
%attr(0600,root,root) %verify(not md5 size mtime) %ghost %config(missingok,noreplace) /var/db/nscd/services
%ghost %config(missingok,noreplace) /etc/sysconfig/nscd
%endif
%files -f nss_db.filelist -n nss_db
/var/db/Makefile
%files -f nss_hesiod.filelist -n nss_hesiod
%doc hesiod/README.hesiod
%files -f nss-devel.filelist nss-devel
%files -f libnsl.filelist -n libnsl
/%{_lib}/libnsl.so.1
%if 0%{?_enable_debug_packages}
%files debuginfo -f debuginfo.filelist
%ifarch %{debuginfocommonarches}
%ifnarch %{auxarches}
%files debuginfo-common -f debuginfocommon.filelist
%endif
%endif
%endif
%if %{with benchtests}
%files benchtests -f benchtests.filelist
%endif
%files -f compat-libpthread-nonshared.filelist -n compat-libpthread-nonshared
%changelog
* Thu Nov 28 2019 Florian Weimer <fweimer@redhat.com> - 2.30.9000-21
- Auto-sync with upstream branch master,
commit e37c2cf299b61ce18f62852f6c5624c27829b610:
- Move _dl_open_check to its original place in dl_open_worker
- Block signals during the initial part of dlopen
- Remove all loaded objects if dlopen fails, ignoring NODELETE (#1395758)
- Avoid late dlopen failure due to scope, TLS slotinfo updates (swbz#25112)
- Avoid late failure in dlopen in global scope update (swbz#25112)
- Lazy binding failures during dlopen/dlclose must be fatal (swbz#24304)
- resolv: Implement trust-ad option for /etc/resolv.conf (#1164339)
- dlsym: Do not determine caller link map if not needed
- libio: Disable vtable validation for pre-2.1 interposed handles (swbz#25203)
- ldbl-128ibm-compat: Add syslog functions
- ldbl-128ibm-compat: Add obstack printing functions
- ldbl-128ibm-compat: Reuse tests for err.h and error.h functions
- ldbl-128ibm-compat: Add error.h functions
- ldbl-128ibm-compat: Add err.h functions
- ldbl-128ibm-compat: Add argp_error and argp_failure
- sparc: Use atomic compiler builtins on sparc
- Remove 32 bit sparc v7 support
* Wed Nov 27 2019 Arjun Shankar <arjun@redhat.com> - 2.30.9000-20
- Auto-sync with upstream branch master,
commit bfdb731438206b0f70fe7afa890681155c30b419:
- rtld: Check __libc_enable_secure for LD_PREFER_MAP_32BIT_EXEC (CVE-2019-19126)
- Introduce DL_LOOKUP_FOR_RELOCATE flag for _dl_lookup_symbol_x
- Enable inlining issignalingf within glibc
- Don't use a custom wrapper macro around __has_include (bug 25189).
- Remove duplicate inline implementation of issignalingf
- misc: Set generic pselect as ENOSYS
- Use DEPRECATED_SCANF macro for remaining C99-compliant scanf functions
- ldbl-128ibm-compat: Add regular/wide character printing printing functions
- ldbl-128ibm-compat: Test double values and positional arguments
- ldbl-128ibm-compat: Add regular/wide character scanning functions
- arm: Fix armv7 selection after 'Split BE/LE abilist'
- Use Linux 5.4 in build-many-glibcs.py.
- sysdeps/posix: Simplify if expression in getaddrinfo
- sysdeps/posix/getaddrinfo: Return early on invalid address family
- ru_UA locale: use copy "ru_RU" in LC_TIME (bug 25044)
- locale: Greek -> ASCII transliteration table [BZ #12031]
- nptl: Cleanup mutex internal offset tests
- nptl: Add tests for internal pthread_rwlock_t offsets
- nptl: Remove rwlock elision definitions
- nptl: Add struct_mutex.h and struct_rwlock.h
- nptl: Add default pthreadtypes-arch.h and pthread-offsets.h
- Compile elf/rtld.c with -fno-tree-loop-distribute-patterns.
- nptl: Fix __PTHREAD_MUTEX_INITIALIZER for !__PTHREAD_MUTEX_HAVE_PREV
- S390: Fix handling of needles crossing a page in strstr z15 ifunc [BZ #25226]
* Mon Nov 18 2019 Patsy Griffin <patsy@redhat.com> - 2.30.9000-19
- Auto-sync with upstream branch master,
commit 2a764c6ee848dfe92cb2921ed3b14085f15d9e79.
- Enhance _dl_catch_exception to allow disabling exception handling
- hurd: Suppress GCC 10 -Warray-bounds warning in init-first.c [BZ #25097]
- linux: Add comment on affinity set sizes to tst-skeleton-affinity.c
- Avoid zero-length array at the end of struct link_map [BZ #25097]
- Introduce link_map_audit_state accessor function
- Properly initialize audit cookie for the dynamic loader [BZ #25157]
- nios2: Work around backend bug triggered by csu/libc-tls.c (GCC PR 92499)
- Redefine _IO_iconv_t to store a single gconv step pointer [BZ #25097]
- Add new script for plotting string benchmark JSON output
- support: Fix support_set_small_thread_stack_size to build on Hurd
- login: Use pread64 in utmp implementation
- Clarify purpose of assert in _dl_lookup_symbol_x
- aarch64: Increase small and medium cases for __memcpy_generic
- login: Introduce matches_last_entry to utmp processing
* Tue Nov 12 2019 Arjun Shankar <arjun@redhat.com> - 2.30.9000-18
- Auto-sync with upstream branch master,
commit cba932a5a9e91cffd7f4172d7e91f9b2efb1f84b:
- nptl: Move nanosleep implementation to libc
- Refactor nanosleep in terms of clock_nanosleep
- nptl: Refactor thrd_sleep in terms of clock_nanosleep
- math: enhance the endloop condition of function handle_input_flag
- hurd: Remove lingering references to the time function
- hurd: Use __clock_gettime in _hurd_select
- login: Remove double-assignment of fl.l_whence in try_file_lock
- nptl: Add missing placeholder abi symbol from nanosleep move
- login: Acquire write lock early in pututline [BZ #24882]
- Remove hppa pthreadP.h
- sysdeps/clock_nanosleep: Use clock_nanosleep_time64 if avaliable
- Fix array bounds violation in regex matcher (bug 25149)
- support: Add support_set_small_thread_stack_size
- linux: Reduce stack size for nptl/tst-thread-affinity-pthread
- y2038: linux: Provide __ppoll64 implementation
- Declare asctime_r, ctime_r, gmtime_r, localtime_r for C2X.
- support: Add xsetlocale function
- libio/tst-fopenloc: Use xsetlocale, xfopen, and xfclose
- Fix clock_nanosleep when interrupted by a signal
- slotinfo in struct dtv_slotinfo_list should be flexible array [BZ #25097]
* Wed Nov 06 2019 Patsy Franklin <patsy@redhat.com> - 2.30.9000-17
- Auto-sync with upstream branch master,
commit 2a0356e1191804d57005e1cfe2a72f019b7a8cce.
- posix: Sync regex with gnulib
- Add mnw language code [BZ #25139]
- Add new locale: mnw_MM (Mon language spoken in Myanmar) [BZ #25139]
- S390: Fp comparison are now raising FE_INVALID with gcc 10.
- linux: pselect: Remove CALL_PSELECT6 macro
- Fix run-one-test so that it runs elf tests
- nptl: Fix niggles with pthread_clockjoin_np
- hppa: Align __clone stack argument to 8 bytes (Bug 25066)
- y2038: linux: Provide __futimens64 implementation
- y2038: linux: Provide __utimensat64 implementation
- nptl: Add pthread_timedjoin_np, pthread_clockjoin_np NULL timeout test
- nptl: Add pthread_clockjoin_np
- manual: Add documentation for pthread_tryjoin_np and pthread_timedjoin_np
- nptl: Convert tst-join3 to use libsupport
- Sync time/mktime.c with gnulib
- Sync timespec-{add,sub} with gnulib
- Sync intprops.h with gnulib
- Refactor adjtimex based on clock_adjtime
- Refactor PI mutexes internal definitions
- Remove pause and nanosleep not cancel wrappers
- nptl: Replace non cancellable pause/nanosleep with futex
- Consolidate lowlevellock-futex.h
- Consolidate futex-internal.h
- Base max_fast on alignment, not width, of bins (Bug 24903)
- Revise the documentation of simple calendar time.
- Make second argument of gettimeofday as 'void *'
- Use clock_gettime to implement gettimeofday.
- Use clock_gettime to implement timespec_get.
- Consolidate and deprecate ftime
- Change most internal uses of time to __clock_gettime.
- Use clock_gettime to implement time.
- Use clock_settime to implement settimeofday.
- Use clock_settime to implement stime; withdraw stime.
- Change most internal uses of __gettimeofday to __clock_gettime.
- Linux/Alpha: don't use timeval32 system calls.
- resolv/tst-idna_name_classify: Isolate from system libraries
- hurd: Support for file record locking
- Comment out initgroups from example nsswitch.conf (Bug 25146)
* Mon Oct 28 2019 DJ Delorie <dj@redhat.com> - 2.30.9000-16
- Auto-sync with upstream branch master,
commit 177a3d48a1c74d7b2cd6bfd48901519d25a5ecad.
- y2038: linux: Provide __clock_getres64 implementation
- time: Introduce function to check correctness of nanoseconds value
- Add Transliterations for Unicode Misc. Mathematical Symbols-A/B [BZ #23132]
- Install charmaps uncompressed in testroot
- Add wait-for-debugger test harness hooks
- Define __STATFS_MATCHES_STATFS64
- hurd: Fix build after __pread64 usage in the dynamic loader
- sysdeps/stat: Handle 64-bit ino_t types on 32-bit hosts
- S390: Remove not needed stack frame in syscall function.
* Fri Oct 25 2019 DJ Delorie <dj@redhat.com> - 2.30.9000-15
- Add *.mo files to all-langpacks (#1624528)
* Thu Oct 24 2019 DJ Delorie <dj@redhat.com> - 2.30.9000-14
- Add Requires on basesystem for main package (#1757267)
- Add Requires on coreutils for glibc-headers (uses rm)
* Wed Oct 23 2019 Arjun Shankar <arjun@redhat.com> - 2.30.9000-13
- Auto-sync with upstream branch master,
commit 7db1fe38de21831d53ceab9ae83493d8d1aec601:
- Include <kernel-features.h> explicitly in Linux clock_settime.c
- Remove math-finite.h
- Remove finite-math tests
- Remove x64 _finite tests and references
- Fix testroot.pristine creation copying dynamic linker
* Fri Oct 18 2019 Patsy Franklin <patsy@redhat.com> - 2.30.9000-12
- Auto-sync with upstream branch master,
commit ef21bd2d8c6805c0c186a01f7c5039189f51b8c4.
- loadarchive: guard against locale-archive corruption (Bug #25115)
- Undo accidental commit to ChangeLog.19.
- nptl: Document AS-safe functions in cancellation.c.
- elf: Use nocancel pread64() instead of lseek()+read()
- Add nocancel version of pread64()
- Add run-one-test convenience target and makefile help text
- Update sysvipc kernel-features.h files for Linux 5.1
- S390: Add new s390 platform z15.
- nptl: SIGCANCEL, SIGTIMER, SIGSETXID are always defined
- nptl/tst-cancel25 needs to be an internal test
- Remove libc_hidden_def from __semtimedop stub
- sysvipc: Implement semop based on semtimedop
- ipc: Refactor sysvipc internal definitions
- Rename and split elf/tst-dlopen-aout collection of tests
- dlfcn: Remove remnants of caller sensitivity from dlinfo
- ldconfig: handle .dynstr located in separate segment (bug 25087)
- ldd: Print "not a dynamic executable" on standard error [BZ #24150]
- Add PTRACE_GET_SYSCALL_INFO from Linux 5.3 to sys/ptrace.h.
- Move ChangeLog to ChangeLog.old/ChangeLog.19
- manual: Remove warning in the documentation of the abort function
- sysvipc: Set ipc_perm mode as mode_t (BZ#18231)
- Simplify note processing
- syscall-names.list: fix typos in comment
- y2038: linux: Provide __clock_settime64 implementation
- posix: Use posix_spawn for wordexp
- mips: Do not malloc on getdents64 fallback
- sparc: Assume GOTDATA support in the toolchain
- <dirent.h>: Remove wrong comment about getdents64 declaration
- ChangeLog: Remove leading spaces before tabs and trailing whitespace
- Make tst-strftime2 and tst-strftime3 depend on locale generation
- posix/tst-wordexp-nocmd: Fix diagnostics output in test
- wordexp: Split out command execution tests from posix/wordexp-test
* Tue Oct 08 2019 Arjun Shankar <arjun@redhat.com> - 2.30.9000-11
- Adjust glibc-rh741105.patch.
- Auto-sync with upstream branch master,
commit ca602c1536ce2777f95c07525f3c42d78812e665:
- Add TCP_TX_DELAY from Linux 5.3 to netinet/tcp.h
- [powerpc] fenv_private.h clean up
- [powerpc] libc_feupdateenv_test: optimize FPSCR access
- [powerpc] __fesetround_inline optimizations
- [powerpc] Rename fegetenv_status to fegetenv_control
- [powerpc] libc_feholdsetround_noex_ppc_ctx: optimize FPSCR write
- [powerpc] Rename fesetenv_mode to fesetenv_control
- Add helper script for glibc debugging
- Update bits/mman.h constants and tst-mman-consts.py for Linux 5.3.
- y2038: Provide conversion helpers for struct __timespec64
- Use binutils 2.33 branch in build-many-glibcs.py.
- Sync "language", "lang_name", "territory", "country_name" with CLDR/langtable
- Split up endian.h to minimize exposure of BYTE_ORDER.
- time: Add padding for the timespec if required
- Enable passing arguments to the inferior in debugglibc.sh
- [powerpc] No need to enter "Ignore Exceptions Mode"
- Y2038: Include proper header to provide support for struct timeval on HURD
- Disable warnings in string/tester.c at top level.
- string/endian.h: Restore the __USE_MISC conditionals
- Disable -Wmaybe-uninitialized for total_deadline in sunrpc/clnt_udp.c.
- ChangeLog update from my last commit
- nptl: Move pthread_attr_setinheritsched implementation into libc.
- elf: Never use the file ID of the main executable [BZ #24900]
- elf: Assign TLS modid later during dlopen [BZ #24930]
- nptl: Move pthread_attr_getschedparam implementation into libc
- riscv: Remove support for variable page sizes
- nptl: Move pthread_attr_setschedparam implementation into libc
* Fri Sep 27 2019 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 2.30.9000-10
- Use full locale names in langpack descriptions (#1651375)
* Thu Sep 26 2019 Patsy Franklin <patsy@redhat.com> - 2.30.9000-9
- Auto-sync with upstream branch master,
commit 464cd3a9d5f505d92bae9a941bb75b0d91ac14ee.
- y2038: Introduce struct __timespec64 - new internal glibc type
- auto-changelog: Remove latin1 from codecs
- Set the expects flags to clock_nanosleep
- Fix tst-sigcontext-get_pc rule name from a43565ac447b1
- inet/net-internal.h: Fix uninitalised clntudp_call() variable
- Fix vDSO initialization on arm and mips
- Script to generate ChangeLog-like output from git log
- [powerpc] SET_RESTORE_ROUND optimizations and bug fix
- Fix building support_ptrace.c on i686-gnu.
- S390: Use _HP_TIMING_S390_H instead of _HP_TIMING_H.
- Update syscall-names.list for Linux 5.3.
- Use Linux 5.3 in build-many-glibcs.py.
- S390: Add support for HP_TIMING_NOW.
- Fix RISC-V vfork build with Linux 5.3 kernel headers.
- Add UNSUPPORTED check in elf/tst-pldd.
- sparc64: Use linux generic time implementation
- mips: Consolidate INTERNAL_VSYSCALL_CALL
- powerpc: Simplify vsyscall internal macros
- Refactor vDSO initialization code
- Remove PREPARE_VERSION and PREPARE_VERSION_KNOW
- Fix small error in HP_TIMING_PRINT trailing null char setting
* Mon Sep 16 2019 Parag Nemade <pnemade AT redhat DOT com> - 2.30.9000-8
- Change Supplements "langpacks-" to "langpacks-core-" (#1729992)
* Mon Sep 16 2019 DJ Delorie <dj@redhat.com> - 2.30.9000-7
- Auto-sync with upstream branch master,
commit 1a6566094d3097f4a3037ab5555cddc6cb11c3a3.
- alpha: force old OSF1 syscalls for getegid, geteuid and getppid [BZ #24986]
- Fix http: URL in 'configure'
- Regenerate charmap-kw.h, locfile-kw.h
- Fix three GNU license URLs, along with trailing-newline issues.
- Prefer https to http for gnu.org and fsf.org URLs
* Fri Sep 06 2019 Patsy Franklin <patsy@redhat.com> - 2.30.9000-6
- Auto-sync with upstream branch master,
commit 1b7f04070bd94f259e2ed24d6fb76309d64fb164.
- locale: Avoid zero-length array in _nl_category_names [BZ #24962]
- math: Replace const attribute with pure in totalorder* functions
- y2038: Introduce the __ASSUME_TIME64_SYSCALLS define
- Finish move of clock_* functions to libc. [BZ #24959]
- Update Alpha libm-test-ulps
- localedef: Use initializer for flexible array member [BZ #24950]
- Add misc/tst-mntent-autofs, testing autofs "ignore" filtering
- Use autofs "ignore" mount hint in getmntent_r/getmntent
- hurd: Fix build
- Use generic memset/memcpy/memmove in benchtests
- nptl: Move pthread_attr_getinheritsched implementation into libc
- hurd: Fix SS_ONSTACK support
- hurd: Remove optimizing anonymous maps as __vm_allocate.
- hurd: Fix poll and select POSIX compliancy details about errors
- hurd: Fix timeout handling in _hurd_select
- hurd getcwd: Allow unknown root directory
- hurd: Fix implementation of setitimer.
- hurd: Fix _hurd_select for single fd sets
- MIPS support for GNU hash
- sh: Split BE/LE abilist
- microblaze: Split BE/LE abilist
- arm: Split BE/LE abilist
- Correct the spelling of more contributors
- Fix posix/tst-regex by using UTF-8 and own test input
- [powerpc] fegetenv_status: simplify instruction generation
- [powerpc] fesetenv: optimize FPSCR access
- [powerpc] SET_RESTORE_ROUND improvements
- [powerpc] fe{en,dis}ableexcept, fesetmode: optimize FPSCR accesses
- [powerpc] fe{en,dis}ableexcept optimize bit translations
- misc: Use allocate_once in getmntent
- nptl: Move pthread_attr_setdetachstate implementation into libc
- login: pututxline could fail to overwrite existing entries [BZ #24902]
- Fix posix/tst-regex by using a dedicated input-file.
* Tue Aug 27 2019 DJ Delorie <dj@redhat.com> - 2.30.9000-5
- Move makedb from glibc-common to nss_db (#1704334)
* Mon Aug 26 2019 DJ Delorie <dj@redhat.com> - 2.30.9000-4
- Auto-sync with upstream branch master,
commit 1bced8cadc82077f0201801239e89eb24b68e9aa.
- Don't put non-ASCII into installed headers
- Fix spellings of contributor names in comments and doc
- [MIPS] Raise highest supported EI_ABIVERSION value [SWBZ #24916]
- mips: Force RWX stack for hard-float builds that can run on pre-4.8 kernels
- linux: Make profil_counter a compat_symbol (SWBZ#17726)
- Refactor sigcontextinfo.h
- Add RTLD_SINGLE_THREAD_P on generic single-thread.h
- Chinese locales: Set first_weekday to 2 (swbug 24682).
- powerpc: Fix typos and field name in comments
- Mark IDN tests unsupported with libidn2 before 2.0.5.
- Document strftime %Ob and %OB as C2X features.
- Remove dead regex code
- Fix bad pointer / leak in regex code
- Don't use the argument to time.
- Add tgmath.h macros for narrowing functions.
- Update i386 libm-test-ulps
* Mon Aug 19 2019 Carlos O'Donell <carlos@redhat.com> - 2.30.9000-3
- Drop glibc-fedora-nscd-warnings.patch; applied upstream.
- Drop Source7: nsswitch.conf; applying patch to upstream.
- Add glibc-fedora-nsswitch.patch for Fedora customizations.
- Auto-sync with upstream branch master,
commit d34d4c80226b3f5a1b51a8e5b005a52fba07d7ba:
- Do not print backtraces on fatal glibc errors.
- elf: Self-dlopen failure with explict loader invocation (swbz#24900)
- login: Add nonstring attributes to struct utmp, struct utmpx (swbz#24899)
- login: Use struct flock64 in utmp (swbz#24880)
- login: Disarm timer after utmp lock acquisition (swbz#24879)
* Fri Aug 16 2019 Carlos O'Donell <carlos@redhat.com> - 2.30.9000-2
- Fix C.UTF-8 to use full code ranges.
* Thu Aug 15 2019 Florian Weimer <fweimer@redhat.com> - 2.30.9000-1
- Auto-sync with upstream branch master,
commit 341da5b4b6253de9a7581a066f33f89cacb44dec.
* Fri Aug 02 2019 Florian Weimer <fweimer@redhat.com> - 2.30-1
- Drop glibc-rh1734680.patch, applied upstream.
- Auto-sync with upstream branch release/2.30/master,
commit be9a328c93834648e0bec106a1f86357d1a8c7e1:
- malloc: Remove unwanted leading whitespace in malloc_info (swbz#24867)
- glibc 2.30 release
- iconv: Revert steps array reference counting changes (#1734680)
- Restore r31 setting in powerpc32 swapcontext
* Wed Jul 31 2019 Florian Weimer <fweimer@redhat.com> - 2.29.9000-37
- Fix memory leak in iconv_open (#1734680)
* Tue Jul 30 2019 Florian Weimer <fweimer@redhat.com> - 2.29.9000-36
- Drop glibc-rh1732406.patch, fix for the regression applied upstream.
- Auto-sync with upstream branch master,
commit 8a814e20d443adc460a1030fa1a66aa9ae817483:
- nptl: Use uintptr_t for address diagnostic in nptl/tst-pthread-getattr
- Linux: Move getdents64 to <dirent.h>
- test-container: Install with $(sorted-subdirs) (swbz#24794)
- gconv: Check reference count in __gconv_release_cache (#1732406)
- x86-64: Compile branred.c with -mprefer-vector-width=128 (swbz#24603)
- build-many-glibcs.py: Use Linux 5.2 by default
- Linux: Use in-tree copy of SO_ constants for !__USE_MISC (swbz#24532)
- test-container: Avoid copying unintended system libraries
* Thu Jul 25 2019 Fedora Release Engineering <releng@fedoraproject.org>
- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild
* Tue Jul 23 2019 Florian Weimer <fweimer@redhat.com> - 2.29.9000-34
- Revert libio change that causes crashes (#1732406)
* Mon Jul 22 2019 DJ Delorie <dj@redhat.com> - 2.29.9000-33
- Auto-sync with upstream branch master,
commit dcf36bcad3f283f77893d3b157ef7bb2c99419f2.
- Add NEWS entry about the new AArch64 IFUNC resolver call ABI
- locale/C-translit.h.in: Cyrillic -> ASCII transliteration [BZ #2872]
- Linux: Update syscall-names.list to Linux 5.2
* Thu Jul 18 2019 DJ Delorie <dj@redhat.com> - 2.29.9000-32
- Auto-sync with upstream branch master,
commit 3556658c5b8765480711b265abc901c67d5fc060.
- Regenerate po/libc.pot for 2.30 release.
- nptl: Add POSIX-proposed _clock functions to hppa pthread.h
- nptl: Remove unnecessary forwarding of pthread_cond_clockwait from libc
- Afar locales: Months and days updated from CLDR (bug 21897).
- nl_BE locale: Use "copy "nl_NL"" in LC_NAME (bug 23996).
- nl_BE and nl_NL locales: Dutch salutations (bug 23996).
- ga_IE and en_IE locales: Revert first_weekday removal (bug 24200).
- nptl: Remove futex_supports_exact_relative_timeouts
- Update NEWS for new _clockwait and _clocklock functions
- nptl: Add POSIX-proposed pthread_mutex_clocklock
- nptl: Rename lll_timedlock to lll_clocklock and add clockid parameter
- nptl: Add POSIX-proposed pthread_rwlock_clockrdlock & pthread_rwlock_clockwrlock
- nptl: pthread_rwlock: Move timeout validation into _full functions
- nptl: Add POSIX-proposed pthread_cond_clockwait
- nptl: Add POSIX-proposed sem_clockwait
- nptl: Add clockid parameter to futex timed wait calls
- posix: Fix large mmap64 offset for mips64n32 (BZ#24699)
- nss_db: fix endent wrt NULL mappings [BZ #24695] [BZ #24696]
* Wed Jul 10 2019 Carlos O'Donell <carlos@redhat.com> - 2.29.9000-31
- Auto-sync with upstream branch master,
commit 30ba0375464f34e4bf8129f3d3dc14d0c09add17.
- Don't declare __malloc_check_init in <malloc.h> (bug 23352)
- nftw: fill in stat buf for dangling links [BZ #23501]
- dl-vdso: Add LINUX_4 HASH CODE to support nds32 vdso mechanism
- riscv: restore ABI compatibility (bug 24484)
- aarch64: new ifunc resolver ABI
- nptl: Remove vfork IFUNC-based forwarder from libpthread [BZ #20188]
- malloc: Add nptl, htl dependency for the subdirectory [BZ #24757]
- Call _dl_open_check after relocation [BZ #24259]
- Linux: Use mmap instead of malloc in dirent/tst-getdents64
- ld.so: Support moving versioned symbols between sonames [BZ #24741]
- io: Remove copy_file_range emulation [BZ #24744]
- Linux: Adjust gedents64 buffer size to int range [BZ #24740]
- powerpc: Use generic e_expf
- Linux: Add nds32 specific syscalls to syscall-names.list
- szl_PL locale: Fix a typo in the previous commit (bug 24652).
* Mon Jun 24 2019 DJ Delorie <dj@redhat.com> - 2.29.9000-30
- Auto-sync with upstream branch master,
commit 2bd81b60d6ffdf7e0d22006d69f4b812b1c80513.
- szl_PL locale: Spelling corrections (swbz 24652).
- nl_{AW,NL}: Correct the thousands separator and grouping (swbz 23831).
- Add missing VDSO_{NAME,HASH}_* macros and use them for PREPARE_VERSION_KNOWN
- nptl: Convert various tests to use libsupport
- support: Invent verbose_printf macro
- support: Add xclock_now helper function.
* Fri Jun 21 2019 Florian Weimer <fweimer@redhat.com> - 2.29.9000-29
- Auto-sync with upstream branch master,
commit 21cc130b78a4db9113fb6695e2b951e697662440:
- During exit, skip wide buffer handling for legacy stdio handles (#1722216)
- powerpc: add 'volatile' to asm
- powerpc: Fix static-linked version of __ppc_get_timebase_freq (swbz#24640)
- nl_AW locale: Correct the negative monetary format (swb#z24614)
- Fix gcc 9 build errors for make xcheck. (swbz#24556)
- dlfcn: Avoid one-element flexible array in Dl_serinfo (swbz#24166)
- elf: Refuse to dlopen PIE objects (swbz#24323)
- nl_NL locale: Correct the negative monetary format (swbz#24614)
- powerpc: Refactor powerpc64 lround/lroundf/llround/llroundf
- powerpc: refactor powerpc64 lrint/lrintf/llrint/llrintf
* Mon Jun 17 2019 Florian Weimer <fweimer@redhat.com> - 2.29.9000-28
- Auto-sync with upstream branch master,
commit 48c3c1238925410b4e777dc94e2fde4cc9132d44.
- Linux: Fix __glibc_has_include use for <sys/stat.h> and statx (#1721129)
- <sys/cdefs.h>: Inhibit macro expansion for __glibc_has_include
- Add IPV6_ROUTER_ALERT_ISOLATE from Linux 5.1 to bits/in.h
- aarch64: handle STO_AARCH64_VARIANT_PCS
- aarch64: add STO_AARCH64_VARIANT_PCS and DT_AARCH64_VARIANT_PCS
- powerpc: Remove optimized finite
- math: Use wordsize-64 version for finite
- powerpc: Remove optimized isinf
- math: Use wordsize-64 version for isinf
- powerpc: Remove optimized isnan
- math: Use wordsize-64 version for isnan
- benchtests: Add isnan/isinf/isfinite benchmark
- powerpc: copysign cleanup
- powerpc: consolidate rint
- libio: freopen of default streams crashes in old programs (swbz#24632)
- Linux: Deprecate <sys/sysctl.h> and sysctl
- <sys/stat.h>: Use Linux UAPI header for statx if available and useful
(#1721129)
- <sys/cdefs.h>: Add __glibc_has_include macro
- Improve performance of memmem
- Improve performance of strstr
- Benchmark strstr hard needles
- Fix malloc tests build with GCC 10
* Mon Jun 10 2019 Patsy Franklin <patsy@redhat.com> - 2.29.9000-27
- Auto-sync with upstream branch master,
commit 51ea67d54882318c4fa5394c386f4816ddc22408.
- powerpc: get_rounding_mode: utilize faster method to get rounding mode
- riscv: Do not use __has_include__
- powerpc: fegetexcept: utilize function instead of duplicating code
- iconv: Use __twalk_r in __gconv_release_shlib
- Fix iconv buffer handling with IGNORE error handler (swbz#18830)
* Wed Jun 5 2019 Florian Weimer <fweimer@redhat.com> - 2.29.9000-26
- Restore /usr/lib/locale/locale-archive under its original name (#1716710)
* Tue Jun 4 2019 Florian Weimer <fweimer@redhat.com> - 2.29.9000-25
- Add glibc version to locale-archive name (#1716710)
* Mon Jun 03 2019 Carlos O'Donell <carlos@redhat.com> - 2.29.9000-24
- Auto-sync with upstream branch master,
commit dc91a19e6f71e1523f4ac179191a29b2131d74bb:
- Linux: Add oddly-named arm syscalls to syscall-names.list.
- arm: Remove ioperm/iopl/inb/inw/inl/outb/outw/outl support.
- Add INADDR_ALLSNOOPERS_GROUP from Linux 5.1 to netinet/in.h.
* Sat Jun 01 2019 Carlos O'Donell <carlos@redhat.com> - 2.29.9000-23
- Convert glibc_post_upgrade to lua.
* Sat Jun 01 2019 Florian Weimer <fweimer@redhat.com> - 2.29.9000-22
- Remove support for filtering glibc-all-langpacks (#1715891)
- Auto-sync with upstream branch master,
commit 9250e6610fdb0f3a6f238d2813e319a41fb7a810:
- powerpc: Fix build failures with current GCC
- Remove unused get_clockfreq files
- powerpc: generic nearbyint/nearbyintf
- tt_RU: Add lang_name (swbz#24370)
- tt_RU: Fix orthographic mistakes in mon and abmon sections (swbz#24369)
- Add IGMP_MRDISC_ADV from Linux 5.1 to netinet/igmp.h.
* Mon May 27 2019 Arjun Shankar <arjun@redhat.com> - 2.29.9000-21
- Auto-sync with upstream branch master,
commit 85188d8211698d1a255f0aec6529546db5c56de3:
- Remove support for PowerPC SPE extension
- elf: Add tst-ldconfig-bad-aux-cache test
- Add F_SEAL_FUTURE_WRITE from Linux 5.1 to bits/fcntl-linux.h
- nss_dns: Check for proper A/AAAA address alignment
* Tue May 21 2019 DJ Delorie <dj@redhat.com> - 2.29.9000-20
- Auto-sync with upstream branch master,
commit 46ae07324b1cd50fbf8f37a076d6babcfca7c510.
- Improve string benchtest timing
- sysvipc: Add missing bit of semtimedop s390 consolidation
- wcsmbs: Fix data race in __wcsmbs_clone_conv [swbz #24584]
- libio: Fix gconv-related memory leak [swbz #24583]
- libio: Remove codecvt vtable [swbz #24588]
- support: Expose sbindir as support_sbindir_prefix
- support: Add missing EOL terminators on timespec
- support: Correct confusing comment
- sysvipc: Consolidate semtimedop s390
- sysvipc: Fix compat msgctl (swbz#24570)
- Add NT_ARM_PACA_KEYS and NT_ARM_PACG_KEYS from Linux 5.1 to elf.h.
- Small tcache improvements
- manual: Document O_DIRECTORY
- Update kernel-features.h files for Linux 5.1.
- nss_nis, nss_nisplus: Remove RES_USE_INET6 handling
- nss_files: Remove RES_USE_INET6 from hosts processing
- support: Report NULL blobs explicitly in TEST_COMPARE
- dlfcn: Guard __dlerror_main_freeres with __libc_once_get (once) [swbz# 24476]
- Add missing Changelog entry
* Wed May 15 2019 Florian Weimer <fweimer@redhat.com> - 2.29.9000-19
- Auto-sync with upstream branch master,
commit 32ff397533715988c19cbf3675dcbd727ec13e18:
- Fix crash in _IO_wfile_sync (#1710460)
- nss: Turn __nss_database_lookup into a compatibility symbol
- support: Add support_install_rootsbindir
- iconv: Remove public declaration of __gconv_transliterate
- Linux: Add the tgkill function
- manual: Adjust twalk_r documentation.
- elf: Fix tst-pldd for non-default --prefix and/or --bindir (swbz#24544)
- support: Export bindir path on support_path
- configure: Make --bindir effective
- x86: Remove arch-specific low level lock implementation
- nptl: Assume LLL_LOCK_INITIALIZER is 0
- nptl: Small optimization for lowlevellock
- Add single-thread.h header
- locale: Update to Unicode 12.1.0 (swbz#24535)
- malloc: Fix tcache count maximum (swbz#24531)
- sem_close: Use __twalk_r
- support: Fix timespec printf
- nptl/tst-abstime: Use libsupport
- nptl: Convert some rwlock tests to use libsupport
- nptl: Use recent additions to libsupport in tst-sem5
- nptl: Convert tst-cond11.c to use libsupport
- support: Add timespec.h
- Move nptl/tst-eintr1 to xtests (swbz#24537)
- powerpc: trunc/truncf refactor
- powerpc: round/roundf refactor
- powerpc: floor/floorf refactor
- support: Add xclock_gettime
- malloc/tst-mallocfork2: Use process-shared barriers
- Update syscall-names.list for Linux 5.1
- Use GCC 9 in build-many-glibcs.py
- aarch64: thunderx2 memmove performance improvements
- misc/tst-tsearch: Additional explicit error checking
- elf: Fix elf/tst-pldd with --enable-hardcoded-path-in-tests (swbz#24506)
- misc: Add twalk_r function
* Thu May 02 2019 Arjun Shankar <arjun@redhat.com> - 2.29.9000-18
- Auto-sync with upstream branch master,
commit 20aa5819586ac7ad11f711bab64feda307965191:
- semaphore.h: Add nonnull attributes
- powerpc: Remove power4 mpa optimization
- powerpc: Refactor ceil/ceilf
- Fix -O1 compilation errors with `__ddivl' and `__fdivl' [BZ #19444]
- Make mktime etc. compatible with __time64_t
* Fri Apr 26 2019 Florian Weimer <fweimer@redhat.com> - 2.29.9000-17
- Auto-sync with upstream branch master,
commit c57afec0a9b318bb691e0f5fa4e9681cf30df7a4:
- Increase BIND_NOW coverage (#1702671)
- Fix pldd hang (#1361689)
- riscv: remove DL_RO_DYN_SECTION (swbz#24484)
- locale: Add LOCPATH diagnostics to the locale program
- Reduce benchtests time
* Mon Apr 22 2019 DJ Delorie <dj@redhat.com> - 2.29.9000-16
- Auto-sync with upstream branch master,
commit 25f7a3c96116a9102df8bf7b04ef160faa32416d.
- malloc: make malloc fail with requests larger than PTRDIFF_MAX (BZ#23741)
- powerpc: Fix format issue from 3a16dd780eeba602
- powerpc: fma using builtins
- powerpc: Use generic fabs{f} implementations
- mips: Remove rt_sigreturn usage on context function
- powerpc: Remove rt_sigreturn usage on context function
- support: Add support_capture_subprogram
- stdlib/tst-secure-getenv: handle >64 groups
* Mon Apr 15 2019 Florian Weimer <fweimer@redhat.com> - 2.29.9000-15
- Auto-sync with upstream branch master,
commit e3f454bac0f968216699ca405c127c858f0657c7:
- nss_dns: Do not replace root domain with empty string
- alloc_buffer: Return unqualified pointer type in alloc_buffer_next
- malloc: Set and reset all hooks for tracing (swbz#16573)
* Thu Apr 11 2019 Florian Weimer <fweimer@redhat.com> - 2.29.9000-14
- Run valgrind smoke test against the install tree
* Thu Apr 11 2019 Florian Weimer <fweimer@redhat.com> - 2.29.9000-13
- Do not use --g-libs with find-debuginfo.sh; it breaks valgrind (#1698824)
* Wed Apr 10 2019 Florian Weimer <fweimer@redhat.com> - 2.29.9000-12
- Strip debugging information from installed programs again (#1661510)
* Tue Apr 09 2019 Carlos O'Donell <carlos@redhat.com> - 2.29.9000-11
- Drop glibc-warning-fix.patch. Microbenchmark code fixed upstream.
- Auto-sync with upstream branch master,
commit 648279f4af423c4783ec1dfa63cb7b46a7640217:
- powerpc: Use generic wcscpy optimization
- powerpc: Use generic wcschr optimization
- powerpc: Use generic wcsrchr optimization
- aarch64: thunderx2 memcpy implementation cleanup and streamlining
- resolv: Remove support for RES_USE_INET6 and the inet6 option
- resolv: Remove RES_INSECURE1, RES_INSECURE2
* Thu Apr 04 2019 Arjun Shankar <arjun@redhat.com> - 2.29.9000-10
- Auto-sync with upstream branch master,
commit 8260f23616c1a2a4e609f989a195fba7690a42ca:
- Fix strptime era handling, add more strftime tests [BZ #24394]
- time/tst-strftime2.c: Make the file easier to maintain
- time: Add tests for Minguo calendar [BZ #24293]
- ja_JP locale: Add entry for the new Japanese era [BZ #22964]
- Add Reiwa era tests to time/tst-strftime3.c
* Mon Apr 01 2019 Arjun Shankar <arjun@redhat.com> - 2.29.9000-9
- Auto-sync with upstream branch master,
commit 993e3107af67edefcfc79a62ae55f7b98aa5151e:
- Add AArch64 HWCAPs from Linux 5.0
- tt_RU: Fix orthographic mistakes in day and abday sections [BZ #24296]
- iconv, localedef: avoid floating point rounding differences [BZ #24372]
- Fix parentheses error in iconvconfig.c and ld-collate.c [BZ #24372]
- S390: New configure check and hwcap values for new CPU architecture arch13
- S390: Add memmove, strstr, and memmem ifunc variants for arch13
- nptl: Remove pthread_clock_gettime pthread_clock_settime
- linux: Assume clock_getres CLOCK_{PROCESS,THREAD}_CPUTIME_ID
- Remove __get_clockfreq
- Do not use HP_TIMING_NOW for random bits
- hp-timing: Refactor rtld usage, add generic support
- Add NT_ARM_PAC_MASK and NT_MIPS_MSA from Linux 5.0 to elf.h
- Add UDP_GRO from Linux 5.0 to netinet/udp.h
- nptl: Convert tst-sem5 & tst-sem13 to use libsupport
- nptl/tst-rwlock14: Test pthread_rwlock_timedwrlock correctly
- nss/tst-nss-files-alias-leak: add missing opening quote in printf
- math: Enable some math builtins for clang
- powerpc: Use __builtin_{mffs,mtfsf}
- RISC-V: Fix `test' operand error with soft-float ABI being configured
* Wed Mar 20 2019 Carlos O'Donell <carlos@redhat.com> - 2.29.9000-8
- Add warnings and notes to /etc/nsswitch.conf and /etc/nscd.conf.
* Mon Mar 18 2019 DJ Delorie <dj@redhat.com> - 2.29.9000-7
- Auto-sync with upstream branch master,
commit 78919d3886c9543279ec755a701e279c62b44164.
* Thu Mar 14 2019 Florian Weimer <fweimer@redhat.com> - 2.29.9000-6
- Drop glibc-fedora-streams-rh436349.patch. STREAMS was removed upstream.
- Auto-sync with upstream branch master,
commit a0a0dc83173ce11ff45105fd32e5d14356cdfb9c:
- Remove obsolete, never-implemented XSI STREAMS declarations
- nss: Fix tst-nss-files-alias-truncated for default --as-needed linking
- scripts/check-obsolete-constructs.py: Process all headers as UTF-8.
- Use Linux 5.0 in build-many-glibcs.py.
- hurd: Add no-op version of __res_enable_icmp [BZ #24047]
- Move inttypes.h and stdint.h to stdlib.
- Use a proper C tokenizer to implement the obsolete typedefs test.
- Fix output of LD_SHOW_AUXV=1.
* Wed Mar 13 2019 Florian Weimer <fweimer@redhat.com> - 2.29.9000-5
- Drop glibc-rh1670028.patch, applied upstream
- Auto-sync with upstream branch master,
commit 38b52865d4ccfee3647f27e969e539a4396a73b1:
- elf: Add DF_1_KMOD, DF_1_WEAKFILTER, DF_1_NOCOMMON to <elf.h>
- resolv: Enable full ICMP errors for UDP DNS sockets [BZ #24047]
- C-SKY: add elf header definition for elfutils
- C-SKY: mark lr as undefined to stop unwinding
- C-SKY: remove user_regs definition
- C-SKY: fix sigcontext miss match
- Bug 24307: Update to Unicode 12.0.0
- Break lines before not after operators, batch 4.
- check-wrapper-headers test: Adjust Fortran include file directory
- Fix location where math-vector-fortran.h is installed.
* Wed Mar 06 2019 DJ Delorie <dj@redhat.com> - 2.29.9000-4
- Auto-sync with upstream branch master,
commit 0ddb7ea842abf63516b74d4b057c052afc6ba863.
- nptl: Assume __ASSUME_FUTEX_CLOCK_REALTIME support
- powerpc: Fix build of wcscpy with --disable-multi-arch
- elf: Remove remnants of MAP_ANON emulation
- S390: Increase function alignment to 16 bytes.
- ja_JP: Change the offset for Taisho gan-nen from 2 to 1 [BZ #24162]
- ldbl-opt: Reuse test cases from misc/ that check long double
- ldbl-opt: Add error and error_at_line (bug 23984)
- ldbl-opt: Add err, errx, verr, verrx, warn, warnx, vwarn, and vwarnx (bug 23984)
- ldbl-opt: Reuse argp tests that print long double
- ldbl-opt: Add argp_error and argp_failure (bug 23983)
- elf/tst-big-note: Improve accuracy of test [BZ #20419]
- S390: Fix introduction of __wcscpy and weak wcscpy symbols.
- __netlink_assert_response: Add more __libc_fatal newlines [BZ #20271]
- Add more spaces before '('.
- elf: Add tests with a local IFUNC resolver [BZ #23937]
- elf/Makefile: Run IFUNC tests if binutils supports IFUNC
- powerpc: Fix linknamespace introduced by 4d8015639a75
- hurd: Add renameat2 support for RENAME_NOREPLACE
- Fix -Wempty-body warnings in Hurd-specific code.
- Add some spaces before '('.
- wcsmbs: optimize wcsnlen
- wcsmbs: optimize wcsncpy
- wcsmbs: optimize wcsncat
- wcsmbs: optimize wcscpy
- wcsmbs: optimize wcscat
- wcsmbs: optimize wcpncpy
- wcsmbs: optimize wcpcpy
- Break further lines before not after operators.
- Add and move fall-through comments in system-specific code.
* Fri Mar 1 2019 DJ Delorie <dj@redhat.com> - 2.29.9000-3
- Add .gdb_index to debug information (rhbz#1680765)
* Wed Feb 27 2019 Carlos O'Donell <carlos@redhat.com> - 2.29.9000-2
- Fix build failure related to microbenchmarks.
* Tue Feb 26 2019 Carlos O'Donell <carlos@redhat.com> - 2.29.9000-1
- Auto-sync with upstream branch master,
commit e0cb7b6131ee5f2dca2938069b8b9590304e6f6b:
- nss_files: Fix /etc/aliases null pointer dereference (swbz#24059)
- regex: fix read overrun (swbz#24114)
- libio: use stdout in puts and putchar, etc (swbz#24051)
- aarch64: Add AmpereComputing emag to tunable cpu list
- aarch64: Optimized memset specific to AmpereComputing emag
- aarch64: Optimized memchr specific to AmpereComputing emag
- Require GCC 6.2 or later to build glibc
- manual: Document lack of conformance of sched_* functions (swbz#14829)
- libio: Use stdin consistently for input functions (swbz#24153)
- x86-64 memcmp: Use unsigned Jcc instructions on size (swbz#24155)
- Fix handling of collating elements in fnmatch (swbz#17396,swbz#16976)
- arm: Use "nr" constraint for Systemtap probes (swbz#24164)
- Fix alignment of TLS variables for tls variant TLS_TCB_AT_TP (swbz#23403)
- Add compiler barriers for pthread_mutex_trylock (swbz#24180)
- rt: Turn forwards from librt to libc into compat symbols (swbz#24194)
- Linux: Add gettid system call wrapper (swbz#6399)
- nptl: Avoid fork handler lock for async-signal-safe fork (swbz#24161)
- elf: Ignore LD_AUDIT interfaces if la_version returns 0 (swbz#24122)
- nptl: Reinstate pthread_timedjoin_np as a cancellation point (swbz#24215)
- nptl: Fix invalid Systemtap probe in pthread_join (swbz#24211)
* Tue Feb 19 2019 Florian Weimer <fweimer@redhat.com> - 2.29-8
- Drop glibc-rh1674280.patch. Different fix applied upstream. (#1674280)
- Auto-sync with upstream branch release/2.29/master,
commit 067fc32968b601493f4b247a3ac00caeea3f3d61:
- nptl: Fix invalid Systemtap probe in pthread_join (#1674280)
* Mon Feb 11 2019 Florian Weimer <fweimer@redhat.com> - 2.29-7
- Hotfix for invalid Systemtap probe in pthread_join (#1674280)
* Mon Feb 11 2019 Florian Weimer <fweimer@redhat.com> - 2.29-6
- Remove LRA bug on POWER workaround, fixed in gcc-9.0.1-0.4.fc30 (#1673018)
* Mon Feb 11 2019 Florian Weimer <fweimer@redhat.com> - 2.29-5
- Auto-sync with upstream branch release/2.29/master,
commit c096b008d2671028c21ac8cf01f18a2083e73c44:
- nptl: Avoid fork handler lock for async-signal-safe fork (swbz#24161)
- nptl: Add compiler barriers in pthread_mutex_trylock (swbz#24180)
* Thu Feb 7 2019 Florian Weimer <fweimer@redhat.com> - 2.29-4
- Work around LRA hang on ppc64le (#1673018)
* Wed Feb 06 2019 Florian Weimer <fweimer@redhat.com> - 2.29-3
- Auto-sync with upstream branch release/2.29/master,
commit 2de15ac95713a238dc258eb8977ecdfca811fc19:
- arm: Use "nr" constraint for Systemtap probes (#1196181)
* Fri Feb 1 2019 Florian Weimer <fweimer@redhat.com> - 2.29-2
- Eliminate %%glibcrelease macro.
- Switch to regular Release: pattern.
* Thu Jan 31 2019 Carlos O'Donell <carlos@redhat.com> - 2.29-1
- Auto-sync with upstream branch release/2.29/master,
commit 86013ef5cea322b8f4b9c22f230c22cce369e947.
- nptl: Fix pthread_rwlock_try*lock stalls (swbz#23844)
* Thu Jan 31 2019 Fedora Release Engineering <releng@fedoraproject.org>
- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild
* Mon Jan 28 2019 DJ Delorie <dj@redhat.com> - 2.28.9000-37
- Auto-sync with upstream branch master,
commit e1e47c912a8e557508362715f7468091def3ec4f.
- Update translations.