Compare commits

..

3 Commits

Author SHA1 Message Date
091eeafd9d
Backport compilation fix for 5.3 kernel
Signed-off-by: David Abdurachmanov <david.abdurachmanov@sifive.com>
2019-09-24 08:04:21 +03:00
4be26d7c24
Merge commit '293db26d857ebdef0ceeea5da44f166d91d0e5fb' into master-riscv64
Signed-off-by: David Abdurachmanov <david.abdurachmanov@sifive.com>
2019-09-24 08:00:47 +03:00
ff3d4d76c0
Backport upstream patch to solve elfutils issue on RISC-V
Signed-off-by: David Abdurachmanov <david.abdurachmanov@gmail.com>
2019-02-14 11:53:08 +01:00
8 changed files with 278 additions and 163 deletions

View File

@ -0,0 +1,47 @@
From a6aaabd036d735a1b412f441bf6c706832655598 Mon Sep 17 00:00:00 2001
From: Joseph Myers <joseph@codesourcery.com>
Date: Wed, 18 Sep 2019 13:22:24 +0000
Subject: [PATCH] Fix RISC-V vfork build with Linux 5.3 kernel headers.
Building glibc for RISC-V with Linux 5.3 kernel headers fails because
<linux/sched.h>, included in vfork.S for CLONE_* constants, contains a
structure definition not safe for inclusion in assembly code.
All other architectures already avoid use of that header in vfork.S,
either defining the CLONE_* constants locally or embedding the
required values directly in the relevant instruction, where they
implement vfork using the clone syscall (see the implementations for
aarch64, ia64, mips and nios2). This patch makes the RISC-V version
define the constants locally like the other architectures.
Tested build for all three RISC-V configurations in
build-many-glibcs.py with Linux 5.3 headers.
* sysdeps/unix/sysv/linux/riscv/vfork.S: Do not include
<linux/sched.h>.
(CLONE_VM): New macro.
(CLONE_VFORK): Likewise.
(cherry picked from commit 8cacbcf4a984ccac24efedb795d9c8a7f149d17b)
---
sysdeps/unix/sysv/linux/riscv/vfork.S | 5 ++++-
2 files changed, 11 insertions(+), 1 deletion(-)
diff --git a/sysdeps/unix/sysv/linux/riscv/vfork.S b/sysdeps/unix/sysv/linux/riscv/vfork.S
index 67373f181b..dc173d6b47 100644
--- a/sysdeps/unix/sysv/linux/riscv/vfork.S
+++ b/sysdeps/unix/sysv/linux/riscv/vfork.S
@@ -21,9 +21,12 @@
#include <sys/asm.h>
#include <sysdep.h>
#define __ASSEMBLY__
-#include <linux/sched.h>
#include <asm/signal.h>
+#define CLONE_VM 0x00000100 /* Set if VM shared between processes. */
+#define CLONE_VFORK 0x00004000 /* Set if the parent wants the child to
+ wake it up on mm_release. */
+
.text
LEAF (__libc_vfork)

View File

@ -88,21 +88,21 @@ index 0000000..fdf460e
+<U0000>
+..
+<UFFFF>
+<U00010000>
+<U10000>
+..
+<U0001FFFF>
+<U00020000>
+<U1FFFF>
+<U20000>
+..
+<U0002FFFF>
+<U000E0000>
+<U2FFFF>
+<UE0000>
+..
+<U000EFFFF>
+<U000F0000>
+<UEFFFF>
+<UF0000>
+..
+<U000FFFFF>
+<U00100000>
+<UFFFFF>
+<U100000>
+..
+<U0010FFFF>
+<U10FFFF>
+UNDEFINED
+order_end
+END LC_COLLATE

View File

@ -0,0 +1,30 @@
Fedora-specific warnings about using nscd with sssd, and that
shared mappings don't show up in nscd -g statistics.
diff --git a/nscd/nscd.conf b/nscd/nscd.conf
index 3730835c50a349c4..b66faa3ca33b4b64 100644
--- a/nscd/nscd.conf
+++ b/nscd/nscd.conf
@@ -3,6 +3,9 @@
#
# An example Name Service Cache config file. This file is needed by nscd.
#
+# WARNING: Running nscd with a secondary caching service like sssd may lead to
+# unexpected behaviour, especially with how long entries are cached.
+#
# Legal entries are:
#
# logfile <file>
@@ -22,7 +25,12 @@
# suggested-size <service> <prime number>
# check-files <service> <yes|no>
# persistent <service> <yes|no>
+#
# shared <service> <yes|no>
+# NOTE: Setting 'shared' to a value of 'yes' will accelerate the lookup
+# with the help of the client, but these lookups will not be
+# counted as cache hits i.e. 'nscd -g' may show '0%'.
+#
# max-db-size <service> <number bytes>
# auto-propagate <service> <yes|no>
#

View File

@ -1,45 +0,0 @@
The Fedora /etc/nsswitch.conf is based largely on the upstream
version with minor downstream distribution modifications for
use with SSSD and systemd.
diff --git a/nss/nsswitch.conf b/nss/nsswitch.conf
index f55358811495c9f1..14c3cde8080a848c 100644
--- a/nss/nsswitch.conf
+++ b/nss/nsswitch.conf
@@ -1,7 +1,7 @@
#
# /etc/nsswitch.conf
#
-# An example Name Service Switch config file. This file should be
+# Name Service Switch config file. This file should be
# sorted with the most-used services at the beginning.
#
# Valid databases are: aliases, ethers, group, gshadow, hosts,
@@ -52,18 +52,20 @@
# shadow: db files
# group: db files
-# In alphabetical order. Re-order as required to optimize peformance.
+# In order of likelihood of use to accelerate lookup.
+passwd: sss files
+shadow: files sss
+group: sss files
+hosts: files dns myhostname
+services: files sss
+netgroup: sss
+automount: files sss
+
aliases: files
ethers: files
-group: files
gshadow: files
-hosts: files dns
initgroups: files
-netgroup: files
networks: files dns
-passwd: files
protocols: files
publickey: files
rpc: files
-shadow: files
-services: files

View File

@ -0,0 +1,106 @@
diff --git a/elf/Makefile b/elf/Makefile
index 7315c253..b3205c26 100644
--- a/elf/Makefile
+++ b/elf/Makefile
@@ -1507,4 +1507,4 @@ $(objpfx)tst-big-note: $(objpfx)tst-big-note-lib.so
$(objpfx)tst-unwind-ctor: $(objpfx)tst-unwind-ctor-lib.so
-CFLAGS-tst-unwind-main.c += -funwind-tables
+CFLAGS-tst-unwind-main.c += -funwind-tables -DUSE_PTHREADS=0
diff --git a/elf/tst-unwind-main.c b/elf/tst-unwind-main.c
index 4089e7e9..0c345dc3 100644
--- a/elf/tst-unwind-main.c
+++ b/elf/tst-unwind-main.c
@@ -20,19 +20,41 @@
#include <unistd.h>
#include <support/test-driver.h>
+#if USE_PTHREADS
+# include <pthread.h>
+# include <error.h>
+#endif
+
static _Unwind_Reason_Code
callback (struct _Unwind_Context *ctx, void *arg)
{
return _URC_NO_REASON;
}
-int
-main (void)
+static void *
+func (void *a)
{
/* Arrange for this test to be killed if _Unwind_Backtrace runs into an
endless loop. We cannot use the test driver because the complete
call chain needs to be compiled with -funwind-tables so that
- _Unwind_Backtrace is able to reach _start. */
+ _Unwind_Backtrace is able to reach the start routine. */
alarm (DEFAULT_TIMEOUT);
_Unwind_Backtrace (callback, 0);
+ return a;
+}
+
+int
+main (void)
+{
+#if USE_PTHREADS
+ pthread_t thr;
+ int rc = pthread_create (&thr, NULL, &func, NULL);
+ if (rc)
+ error (1, rc, "pthread_create");
+ rc = pthread_join (thr, NULL);
+ if (rc)
+ error (1, rc, "pthread_join");
+#else
+ func (NULL);
+#endif
}
diff --git a/nptl/Makefile b/nptl/Makefile
index 0e316edf..8719f4ef 100644
--- a/nptl/Makefile
+++ b/nptl/Makefile
@@ -320,7 +320,8 @@ tests = tst-attr1 tst-attr2 tst-attr3 tst-default-attr \
tst-cnd-timedwait tst-thrd-detach tst-mtx-basic tst-thrd-sleep \
tst-mtx-recursive tst-tss-basic tst-call-once tst-mtx-timedlock \
tst-rwlock-pwn \
- tst-rwlock-tryrdlock-stall tst-rwlock-trywrlock-stall
+ tst-rwlock-tryrdlock-stall tst-rwlock-trywrlock-stall \
+ tst-unwind-thread
tests-internal := tst-rwlock19 tst-rwlock20 \
tst-sem11 tst-sem12 tst-sem13 \
@@ -710,6 +711,8 @@ $(objpfx)tst-audit-threads: $(objpfx)tst-audit-threads-mod2.so
$(objpfx)tst-audit-threads.out: $(objpfx)tst-audit-threads-mod1.so
tst-audit-threads-ENV = LD_AUDIT=$(objpfx)tst-audit-threads-mod1.so
+CFLAGS-tst-unwind-thread.c += -funwind-tables
+
# The tests here better do not run in parallel
ifneq ($(filter %tests,$(MAKECMDGOALS)),)
.NOTPARALLEL:
diff --git a/nptl/tst-unwind-thread.c b/nptl/tst-unwind-thread.c
new file mode 100644
index 00000000..d5c38e37
--- /dev/null
+++ b/nptl/tst-unwind-thread.c
@@ -0,0 +1,2 @@
+#define USE_PTHREADS 1
+#include "../elf/tst-unwind-main.c"
diff --git a/sysdeps/unix/sysv/linux/riscv/clone.S b/sysdeps/unix/sysv/linux/riscv/clone.S
index c079c1fb..0ff9ab3f 100644
--- a/sysdeps/unix/sysv/linux/riscv/clone.S
+++ b/sysdeps/unix/sysv/linux/riscv/clone.S
@@ -69,6 +69,11 @@ L (error):
ENTRY (__thread_start)
L (thread_start):
+ /* Terminate call stack by noting ra is undefined. Use a dummy
+ .cfi_label to force starting the FDE. */
+ .cfi_label .Ldummy
+ cfi_undefined (ra)
+
/* Restore the arg for user's function. */
REG_L a1,0(sp) /* Function pointer. */
REG_L a0,SZREG(sp) /* Argument pointer. */

View File

@ -1,5 +1,5 @@
%define glibcsrcdir glibc-2.30.9000-100-g1a6566094d
%define glibcversion 2.30.9000
%define glibcsrcdir glibc-2.30-1-gbe9a328c93
%define glibcversion 2.30
# Pre-release tarballs are pulled in from git using a command that is
# effectively:
#
@ -87,7 +87,7 @@
Summary: The GNU libc libraries
Name: glibc
Version: %{glibcversion}
Release: 7%{?dist}
Release: 1.0.riscv64%{?dist}
# In general, GPLv2+ is used by programs, LGPLv2+ is used for
# libraries.
@ -118,9 +118,11 @@ License: LGPLv2+ and LGPLv2+ with exceptions and GPLv2+ and GPLv2+ with exceptio
URL: http://www.gnu.org/software/glibc/
Source0: %{?glibc_release_url}%{glibcsrcdir}.tar.xz
Source1: nscd.conf
Source2: bench.mk
Source3: glibc-bench-compare
Source4: nscd.conf
Source7: nsswitch.conf
Source8: power6emul.c
Source9: bench.mk
Source10: 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.
@ -134,7 +136,7 @@ Source12: ChangeLog.old
# - See each individual patch file for origin and upstream status.
# - For new patches follow template.patch format.
##############################################################################
Patch1: glibc-fedora-nscd.patch
Patch2: glibc-fedora-nscd.patch
Patch3: glibc-rh697421.patch
Patch4: glibc-fedora-linux-tcsetattr.patch
Patch5: glibc-rh741105.patch
@ -151,7 +153,16 @@ Patch17: glibc-cs-path.patch
Patch18: glibc-c-utf8-locale.patch
Patch23: glibc-python3.patch
Patch28: glibc-rh1615608.patch
Patch29: glibc-fedora-nsswitch.patch
# In progress upstream submission for nsswitch.conf changes:
# https://www.sourceware.org/ml/libc-alpha/2019-03/msg00425.html
# In progress upstream submission for nscd.conf changes:
# https://www.sourceware.org/ml/libc-alpha/2019-03/msg00436.html
Patch31: glibc-fedora-nscd-warnings.patch
# Fix compilation error on RISC-V with 5.3 kernel
# https://github.com/bminor/glibc/commit/a6aaabd036d735a1b412f441bf6c706832655598
Patch100: a6aaabd036d735a1b412f441bf6c706832655598.patch
##############################################################################
# Continued list of core "glibc" package information:
@ -1063,13 +1074,13 @@ mv %{glibc_sysroot}%{_prefix}/lib/locale/*.filelist .
# Install configuration files for services
##############################################################################
install -p -m 644 nss/nsswitch.conf %{glibc_sysroot}/etc/nsswitch.conf
install -p -m 644 %{SOURCE7} %{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}
install -m 644 %{SOURCE4} %{buildroot}%{_tmpfilesdir}
mkdir -p %{glibc_sysroot}/lib/systemd/system
install -m 644 nscd/nscd.service nscd/nscd.socket %{glibc_sysroot}/lib/systemd/system
%endif
@ -1138,7 +1149,7 @@ popd
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
for b in %{SOURCE9} %{SOURCE10}; do
cp $b %{glibc_sysroot}%{_prefix}/libexec/glibc-benchtests/
done
# .. and finally, the comparison scripts.
@ -1433,10 +1444,8 @@ grep '%{_libdir}/lib.*\.a' < master.filelist \
# 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
# gconv-modules.cache.
grep '%{_prefix}/bin' master.filelist >> common.filelist
grep '%{_prefix}/sbin' master.filelist \
| grep -v '%{_prefix}/sbin/iconvconfig' \
| grep -v 'nscd' >> common.filelist
@ -1484,7 +1493,6 @@ 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
@ -1512,7 +1520,7 @@ 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
for b in %{SOURCE9} %{SOURCE10}; do
echo "%{_prefix}/libexec/glibc-benchtests/$(basename $b)" >> benchtests.filelist
done
# ... and finally, the comparison scripts.
@ -2011,96 +2019,6 @@ fi
%files -f compat-libpthread-nonshared.filelist -n compat-libpthread-nonshared
%changelog
* 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,

59
nsswitch.conf Normal file
View File

@ -0,0 +1,59 @@
#
# /etc/nsswitch.conf
#
# An example Name Service Switch config file. This file should be
# sorted with the most-used services at the beginning.
#
# The entry '[NOTFOUND=return]' means that the search for an
# entry should stop if the search in the previous entry turned
# up nothing. Note that if the search failed due to some other reason
# (like no NIS server responding) then the search continues with the
# next entry.
#
# Valid entries include:
#
# nisplus Use NIS+ (NIS version 3)
# nis Use NIS (NIS version 2), also called YP
# dns Use DNS (Domain Name Service)
# files Use the local files in /etc
# db Use the pre-processed /var/db files
# compat Use /etc files plus *_compat pseudo-databases
# hesiod Use Hesiod (DNS) for user lookups
# sss Use sssd (System Security Services Daemon)
# [NOTFOUND=return] Stop searching if not found so far
#
# 'sssd' performs its own 'files'-based caching, so it should
# generally come before 'files'.
#
# WARNING: Running nscd with a secondary caching service like sssd may lead to
# unexpected behaviour, especially with how long entries are cached.
# To use 'db', install the nss_db package, and put the 'db' in front
# of 'files' for entries you want to be looked up first in the
# databases, like this:
#
# passwd: db files
# shadow: db files
# group: db files
passwd: sss files
shadow: files sss
group: sss files
hosts: files dns myhostname
bootparams: files
ethers: files
netmasks: files
networks: files
protocols: files
rpc: files
services: files sss
netgroup: sss
publickey: files
automount: files sss
aliases: files

View File

@ -1 +1 @@
SHA512 (glibc-2.30.9000-100-g1a6566094d.tar.xz) = e6054a8f1367fde262f023c76f7eaf5ce588613c4894b8d577c7e1c3159a2dfcefb7c60e301340b823cd8e6d2f8d264d7da83e61034b9180836d392d5db4c5ba
SHA512 (glibc-2.30-1-gbe9a328c93.tar.xz) = ad471d2b9d81a12e36e100a18685fe1de3461a372151506b8021f52aeb7180727f807044b9cbdbda61911f2ed48192c906f743c46677fc55e608530b8bb856d0