Compare commits

...

63 Commits
master ... f27

Author SHA1 Message Date
Florian Weimer 51aa1990e5 Do not use parallel make for building locales (#1652228) 2018-11-26 15:35:58 +01:00
Florian Weimer 4ae360fa74 Auto-sync with upstream branch release/2.26/master
Upstream commit: 174709d879a15590e00119c7f91dc2460aaf571c

- CVE-2018-11237: Buffer overflow in mempcpy for Xeon Phi (#1581275)
- nptl: Fix waiters-after-spinning case in pthread_cond_broadcast (#1622669)
- x86: Correct index_cpu_LZCNT (swbz#23456)
- x86: Populate COMMON_CPUID_INDEX_80000001 for Intel CPUs (swbz#23459)
- stdio-common/tst-printf.c: Remove part under a non-free license (swbz#23363)
- libio: Disable vtable validation in case of interposition (swbz#23313)
- if_nametoindex: Check length of ifname before copying (swbz#22442)
- getifaddrs: Don't return ifa entries with NULL names (swbz#21812)
- time: Use _STRUCT_TIMESPEC as guard in <bits/types/struct_timespec.h>
  (swbz#23349)
- math: Fix parameter type in C++ version of iseqsig (swbz#23171)
- libio: Avoid _allocate_buffer, _free_buffer function pointers (swbz#23236)
2018-08-29 12:09:45 +02:00
Carlos O'Donell 547a280036 Resolves: #1615608
- Remove abort() warning in manual (#1615608)
2018-08-14 00:50:00 -04:00
Florian Weimer 43d8a2ad5f Add release-independent .gitignore file 2018-08-01 13:18:37 +02:00
Florian Weimer 9143849657 Add Provides: bundled(gnulib), Provides: bundled(libidn) 2018-07-23 14:27:02 +02:00
Florian Weimer 9845400556 Add CVE-2018-11236 reference 2018-06-18 14:59:02 +02:00
Florian Weimer 5b28ffba5c Add CVE-2017-18269 reference 2018-05-22 07:32:55 +02:00
Florian Weimer 9398a19ada Auto-sync with upstream branch release/2.26/master
Upstream commit: af7519f7b35024224c163e32a89fb247b0c446fc

- Fix path length overflow in realpath (swbz#22786)
- Fix stack overflow with huge PT_NOTE segment (swbz#20419)
- Fix signed integer overflow in random_r (swbz#17343)
- i386: Fix i386 sigaction sa_restorer initialization (swbz#21269)
- nscd: Fix netgroup cache keys (swbz#22342)
- Fix i386 memmove issue (swbz#22644)
- Fix crash in resolver on memory allocation failure (swbz#23005)
- getlogin_r: return early when linux sentinel value is set (swbz#23024)
- resolv: Fully initialize struct mmsghdr in send_dg (swbz#23037)
2018-05-18 10:58:08 +02:00
Florian Weimer a50c0ee87a Do not run telinit u on upgrades (#1579225) 2018-05-17 13:52:23 +02:00
Florian Weimer 123bb3ec74 Remove sshd restart from glibc_post_upgrade
/etc/rc.d/init.d/sshd no longer exists in Fedora, so the code never
runs.
2018-05-17 13:52:18 +02:00
Florian Weimer 649ca9a275 Inherit compiler flags in the original order 2018-05-17 13:51:17 +02:00
Florian Weimer 1ec8282914 Restore unwind tables on POWER (#1550914) 2018-03-02 10:38:29 +01:00
Florian Weimer 94d67e5f79 Auto-sync with upstream branch release/2.26/master
Upstream commit: d300041c533a3d837c9f37a099bcc95466860e98

- CVE-2018-6485, CVE-2018-6551: Fix integer overflows in internal
  memalign and malloc (#1542102, #1542119)
- powerpc: Fix syscalls during early process initialization (swbz#22685)
- math: Provide a C++ version of iseqsig (swbz#22377)
- aarch: Rewrite elf_machine_load_address using _DYNAMIC symbol
- x86-64: Properly align La_x86_64_retval to VEC_SIZE (swbz#22715)
2018-03-01 12:51:28 +01:00
Florian Weimer 96a1fd1362 Update release 2018-01-17 19:47:56 +01:00
Carlos O'Donell 9ca2763b1a Update comments on python3 selection. 2018-01-17 19:20:01 +01:00
Florian Weimer 472eddc8ca Use python3 instead of python during builds 2018-01-17 19:19:54 +01:00
Florian Weimer 24d2c3db0a Auto-sync with upstream branch release/2.26/master
Upstream commit: 247c1ddd309e3f4135045eab554f3817b7d765be

PTHREAD_STACK_MIN is too small on x86-64 (#1527887)
2018-01-15 16:37:51 +01:00
Florian Weimer 0bb12ed58d Auto-sync with upstream branch release/2.26/master
Upstream commit: fabef2edbc29424a8048bdd60eba1a201f95682b

- CVE-2018-1000001: Make getcwd fail if it cannot obtain an absolute path
  (#1533837)
- CVE-2017-16997: Check for empty tokens before dynamic string token
- elf: do not substitute dst in $LD_LIBRARY_PATH twice (swbz#22627)
2018-01-15 09:13:58 +01:00
Florian Weimer 55faf11b9b Update NVR 2018-01-15 07:40:35 +01:00
Florian Weimer a573df9d5a Add BuildRequires: cpp (for rpcgen) 2018-01-15 07:37:00 +01:00
Florian Weimer 0265fb3327 Auto-sync with upstream branch release/2.26/master
Upstream commit: 069c3dd05abc91fced6e1e119e425c361ad97644

- bash no longer has job control under systemd-nspawn (via mock) (#1468837)
- CVE-2017-1000409: Count in expanded path in _dl_init_path (#1524867)
- CVE-2017-1000408: Compute correct array size in _dl_init_paths (#1524867)
2017-12-22 16:18:34 +01:00
Florian Weimer 8cca31a681 Auto-sync with upstream branch release/2.26/master
Upstream commit: 73a92363619e52c458146e903dfb9b1ba823aa40

- malloc: Fix -Werror compilation failure with -O3 (swbz#22052)
2017-12-06 16:44:51 +01:00
Florian Weimer b1baf5deba Auto-sync with upstream branch release/2.26/master
Upstream commit: df8c219cb987cfe85c550efa693a1383a11e38aa

- CVE-2017-17426: malloc: Fix integer overflow in tcache (swbz#22375)
- CVE-2017-15804: glob: Fix overflow in GLOB_TILDE unescaping (swbz#22332)
- malloc: Add single-threaded path to _int_malloc
- powerpc: Update AT_HWCAP2 bits
- malloc: Abort on heap corruption, without a backtrace (swbz#21754)
- Don't use IFUNC resolver for longjmp or system in libpthread (swbz#21041)
- powerpc: Replace lxvd2x/stxvd2x with lvx/stvx in P7's memcpy/memmove
2017-12-06 15:11:26 +01:00
Florian Weimer 04928e64a4 Auto-sync with upstream branch release/2.26/master
Upstream commit: 2767ebd8bc34c8b632ea737296200a86f57289ad

- crypt: Use NSPR header files in addition to NSS header files (#1489339)
- malloc: Use relaxed atomics for have_fastchunks
- malloc: Inline tcache functions
- x86-64: Regenerate libm-test-ulps for AVX512 mathvec tests
2017-11-18 19:45:00 +01:00
Florian Weimer 1bcaea6ffe Auto-sync with upstream branch release/2.26/master
Upstream commit: a81c1156c1a9a6161d49b295a09a4e4cff7a88d0

- posix: Fix improper assert in Linux posix_spawn (swbz#22273)
- posix: Do not use WNOHANG in waitpid call for Linux posix_spawn
- posix: Fix compat glob code on s390 and alpha
- posix: Consolidate Linux glob implementation
- Fix range check in do_tunable_update_val
- Let signbit use the builtin in C++ mode with gcc < 6.x (swbz#22296)
- x86-64: Don't set GLRO(dl_platform) to NULL (swbz#22299)
- x86-64: Use fxsave/xsave/xsavec in _dl_runtime_resolve (swbz#21265)
2017-11-13 13:34:44 +01:00
Florian Weimer cc6e84070f Resolves: #1506802
x86: Add x86_64 to x86-64 HWCAP
2017-11-02 08:46:09 +01:00
Florian Weimer d629b47ec4 Auto-sync with upstream branch release/2.26/master
Upstream commit: a76376df7c07e577a9515c3faa5dbd50bda5da07

- CVE-2017-15670: glob: Fix one-byte overflow (#1504807)
- CVE-2017-15671: glob: Fix memory leak (#1504807)
- sysconf: Fix missing definition of UIO_MAXIOV on Linux (#1504165)
- nss_files: Avoid large buffers with many host addresses (swbz#22078)
- nss_files: Use struct scratch_buffer for gethostbyname (swbz#18023)
- aarch64: Optimized implementation of memcpy, memmove for Qualcomm Falkor
2017-10-21 15:26:35 +02:00
Florian Weimer c5dc50cba8 Define glibc_release_url based on glibcsrcdir, not glibcversion
The former is more reliable because glibcsrcdir changes in case of a
release off the release/*/master branch (which does not have a
tarball), but glibcversion remains the same.
2017-10-21 15:25:55 +02:00
Carlos O'Donell fe99e84bf2 Resolves: #1499260
- Disable lock elision for IBM z Series (#1499260)
- As a precaution escape all % in spec file comments.
2017-10-13 22:18:35 -07:00
Florian Weimer bd1848f1a8 Move /var/db/Makefile to nss_db (#1498900) 2017-10-09 13:13:46 +02:00
Carlos O'Donell ec32b87b21 Auto-sync with upstream release/2.26/master
Upstream commit: d5c6dea2d5b4b5c64625c5386f6baec7bf2d89b3

- malloc: Fix tcache leak after thread destruction (swbz#22111)
- Add C++ versions of iscanonical (swbz#22235)
2017-10-07 08:26:43 -07:00
Florian Weimer 3a2b0c367b Rotate RPM changelog 2017-10-07 12:57:14 +02:00
Florian Weimer deb4736b77 Rewrite langpack generation Lua
The existing shell-based approach required super-linear processing
time for the SUPPORTED file.
2017-10-07 12:56:51 +02:00
Florian Weimer 93a30c9f28 Move nss_compat to the main glibc package (#1400538) 2017-10-07 12:54:33 +02:00
Florian Weimer 35d9ec52c8 Remove libnsl dependency from nss_compat 2017-10-07 12:53:49 +02:00
Florian Weimer 4e3daedbc7 Make build of nscd reproducible 2017-10-07 12:52:17 +02:00
Florian Weimer 81fbb9ed38 Remove stray comment from spec file 2017-10-07 12:49:35 +02:00
Florian Weimer 62a7902949 Do not flush stdio streams on abort, assertion failure (#1498880) 2017-10-07 12:47:55 +02:00
Florian Weimer eb8447b64e Auto-sync with upstream release/2.26/master
Upstream commit: fdf58ebc60ce0eb459fd616241b52872b3571ac1

- Drop glibc-gcc-strict-overflow.patch, different workaround applied upstream.
- Fix nearbyint arithmetic moved before feholdexcept (swbz#22225)
- Avoid __MATH_TG in C++ mode with -Os for fpclassify (swbz#22146)
- Place $(elf-objpfx)sofini.os last (swbz#22051)
- __libc_dynarray_emplace_enlarge: Add missing else
- dynarray: Set errno on overflow-induced allocation failure
- resolv: __resolv_conf_attach must not free passed conf object (swbz#22096)
- resolv: Fix memory leak with OOM during resolv.conf parsing (swbz#22095)
- nss_dns: Remove dead PTR IPv4-to-IPv6 mapping code
2017-10-01 17:50:48 +02:00
Florian Weimer 58b49c298b Resolves: #1416405
Add IBM858 charset
2017-09-30 09:25:57 +02:00
Florian Weimer dd1684633a Restore ARM EABI dynamic loader support (#1491974)
This is needed until fpc is fixed, which will not happen for F27.
2017-09-15 10:02:38 +02:00
Florian Weimer 4211faf2dd Fix accidentially inserted typo 2017-09-14 17:42:42 +02:00
Florian Weimer 9c124d1b8c Auto-sync with upstream release/2.26/master
Upstream commit: a71a3374cd8cf53776c33994f69ec184c26f2129

- Provide a C++ version of issignaling that does not use __MATH_TG
- Provide a C++ version of iszero that does not use __MATH_TG (swbz#21930)
- getaddrinfo: Return EAI_NODATA if gethostbyname2_r with NO_DATA (swzbz#21922)
- getaddrinfo: Fix error handling in gethosts (swbz#21915)
2017-09-04 19:42:08 +02:00
Mark Wielaard e4a37ded6e Run valgrind check with --error-exitcode=1. Fix valgrind BuildRequires. 2017-08-30 14:00:20 +02:00
Florian Weimer 5c43ec8cb6 Drop glibc-rh1009145.patch
It has since been obsoleted by multiple mass rebuilds.
2017-08-29 12:51:29 +02:00
Florian Weimer 059710a469 Auto-sync with upstream release/2.26/master
Upstream commit: 6043d77a47de297b62084c1c261cdada082bf09c
2017-08-28 20:12:34 +02:00
Florian Weimer bdd48b3297 Include misc/tst-syscall-list.out in the build log 2017-08-28 19:59:48 +02:00
Florian Weimer 7736442db8 glibc-rh1484729.patch was committed upstream
Sync glibc-rh1484729-syscall-names.patch as well.
2017-08-28 19:59:15 +02:00
Florian Weimer d5c6c6bc79 Drop glibc-rh825061.patch
The Perl Info generator in Texinfo 5.0 uses the input basename in the
output file, so the multi-arch conflict no longer happens, and the
Makefile tweak is not needed anymore.
2017-08-28 19:55:12 +02:00
Florian Weimer 396fa0e6a8 Rework handling of asynchronous unwind tables compiler flag
This commit drops an overridden -fasynchronous-unwind-tables flag, which
had no effect.

We compile all of glibc with -fno-asynchronous-unwind-tables, so we can
drop glibc-fedora-ppc-unwind.patch.
2017-08-28 19:54:42 +02:00
Florian Weimer 8225a76dfe Drop glibc-fedora-ldd.patch (applied to 2.26 branch) 2017-08-28 19:54:16 +02:00
Florian Weimer 1a3836ae13 Update system call list to Linux 4.12 (#1484729) 2017-08-25 11:30:17 +02:00
Florian Weimer 65a208b15b Drop glibc-fedora-include-bits-ldbl.patch (#1482105) 2017-08-24 17:19:27 +02:00
Florian Weimer e2fde003ee Drop glibc-arm-hardfloat-3.patch and associated hack 2017-08-24 17:19:23 +02:00
Florian Weimer 55232187b3 Use an architecture-independent system call list (#1484729) 2017-08-24 17:18:23 +02:00
Florian Weimer 08af85436f Auto-sync with upstream release/2.26/master
Upstream commit: fb9a781e9d62c5d7a1f4196915cdfb7c6db59a0c

- assert: Support types without operator== (int) (#1483005)
2017-08-21 17:02:02 +02:00
Florian Weimer 2ee609cfa3 Auto-sync with upstream release/2.26/master
Upstream commit: 5e989c36934d0f0cf13b7a53ef2fa440bce39210
2017-08-21 14:43:38 +02:00
Florian Weimer 53dc95aa44 Change invocation style for find-debuginfo.sh
Using eval affects command line parsing in the shell script.  Call the
script directly, but do not quote $find_debuginfo_args, to splice its
contents into the argument list.
2017-08-16 13:58:31 +02:00
Florian Weimer 91ff01f7d2 Replace create_lang_packages macro with its Lua code
This works around an RPM change in the processing of macro argument lists.
Newer RPM versions split the argument list, so that %1 contains just eo,
and not the whole language list.

Instead, use %language_list directly.  This is compatible with earlier
RPM versions, too.
2017-08-16 13:17:50 +02:00
Florian Weimer 5086664344 Remove unused require_langpacks macro 2017-08-16 13:17:48 +02:00
Florian Weimer 3f68e5fe05 Auto-sync with upstream release/2.26/master
Upstream commit: 2aa1a7a8f8b9b7879bc6eb1c34d1580f992c406d

- Disable SSE2 usage on i686 (#1471427)
- assert: Suppress pedantic warning caused by statement expression (swbz#21242)
- malloc: Avoid optimizer warning with GCC 7 and -O3 (#1470060)
- nss: Call __resolv_context_put before early return in get*_r (swbz#21932)
- x86-64: Use _dl_runtime_resolve_opt only with AVX512F (swbz#21871)
- getaddrinfo: Release resolver context on error in gethosts (swbz#21885)
2017-08-16 11:25:22 +02:00
Florian Weimer 72775d1371 Disable multi-arch (IFUNC string functions) on i686 (#1471427) 2017-08-16 11:15:10 +02:00
Florian Weimer f1ceb75c3f Use upstream default for multi-arch support
Drop binutils run-time conflict.  If we still want those, they should
be on glibc-devel, not the main package.
2017-08-16 11:15:08 +02:00
23 changed files with 3736 additions and 1693 deletions

6
.gitignore vendored Normal file
View File

@ -0,0 +1,6 @@
# Release tarballs.
/glibc-*.tar.[gx]z
# Generated (source) RPMs.
/*.rpm
# Expanded source trees.
/glibc-*/

View File

@ -1,3 +1,793 @@
* Wed Feb 08 2017 Carlos O'Donell <carlos@redhat.com> - 2.24.90-31
- Fix builds with GCC 7.0.
* Wed Feb 01 2017 Carlos O'Donell <carlos@redhat.com> - 2.24.90-30
- Optimize IBM z System builds for zEC12.
* Wed Jan 25 2017 Florian Weimer <fweimer@redhat.com> - 2.24.90-29
- Use vpath in crypt-glibc/Makefile to obtain the test input file.
- Auto-sync with upstream master,
commit 5653ab12b4ae15b32d41de7c56b2a4626cd0437a, fixing:
- ARM fpu_control.h for assemblers requiring VFP insn names (swbz#21047)
- FAIL in test string/tst-xbzero-opt (swbz#21006)
- Make soft-float powerpc swapcontext restore the signal mask (swbz#21045)
- Clear list of acquired robust mutexes in the child after fork (swbz#19402)
* Thu Jan 12 2017 Carlos O'Donell <carlos@systemhalted.org> - 2.24.90-28
- Auto-sync with upstream master,
commit 468e525c81a4af10f2e613289b6ff7c950773a9e:
- Drop rwlock related patches applied upstream.
- Fix i686 memchr for large input sizes (swbz#21014)
- Fix x86 strncat for large input sizes (swbz#19390)
- powerpc: Fix write-after-destroy in lock elision (swbz#20822)
- New pthread rwlock that is more scalable.
- Fix testsuite build for GCC 7 -Wformat-truncation.
* Mon Jan 02 2017 Florian Weimer <fweimer@redhat.com> - 2.24.90-27
- Auto-sync with upstream master,
commit 73dfd088936b9237599e4ab737c7ae2ea7d710e1:
- Enable tunables.
- Drop condvar-related patches applied upstream.
- Update DNS RR type definitions (swbz#20593)
- CVE-2015-5180: resolv: Fix crash with internal QTYPE (#1249603)
- sunrpc: Always obtain AF_INET addresses from NSS (swbz#20964)
* Mon Dec 26 2016 Florian Weimer <fweimer@redhat.com> - 2.24.90-26
- Auto-sync with upstream master,
commit cecbc7967f0bcac718b6f8f8942b58403c0e917c
- Enable stack protector for most of glibc (#1406731)
* Fri Dec 23 2016 Carlos O'Donell <carlos@systemhalted.org> - 2.24.90-25
- Auto-sync with upstream master,
commit 81e0662e5f2c342ffa413826b7b100d56677b613, fixing:
- Shared object unload assert when calling dlclose (#1398370, swbz#11941)
- Fix nss_nisplus build with mainline GCC (swbz#20978)
- Add Intel TSX blacklist for silicon with known errata.
- Add fmax, fmin, fmaxf, fminf microbenchmarks.
- Robust mutexes: Fix lost wake-up (swbz#20973).
- Add fmaxmag, fminmag, roundeven, roundevenf, roundevenl functions.
* Sun Dec 18 2016 Florian Weimer <fweimer@redhat.com> - 2.24.90-24
- Auto-sync with upstream master,
commit e077349ce589466eecd47213db4fae6b80ec18c4, fixing:
- Warn about assignment in assertions (#1105335)
- powerpc64/power7 memchr for large input sizes (swbz#20971)
- fmax, fmin sNaN handling (swbz#20947)
* Mon Dec 12 2016 Florian Weimer <fweimer@redhat.com> - 2.24.90-23
- Auto-sync with upstream master,
commit 92dcaa3e2f7bf0f7f1c04cd2fb6a317df1a4e225, fixing:
- Add getrandom, getentropy (#1172273)
- Add additional compiler barriers to backtrace tests (swbz#20956)
* Fri Dec 09 2016 Florian Weimer <fweimer@redhat.com> - 2.24.90-22
- Auto-sync with upstream master,
commit 0abbe7cd700951082b314182a0958d65238297ef, changing:
- IN6_IS_ADDR_ does not require enabling non-standard extensions (#1138893)
- Install libm.a as linker script (swbz#20539)
- Fix writes past the allocated array bounds in execvpe (swbz#20847)
- Fix hypot sNaN handling (swbz#20940)
- Fix x86_64/x86 powl handling of sNaN arguments (swbz#20916)
- Fix sysdeps/ieee754 pow handling of sNaN arguments (swbz#20916)
- Fix pow (qNaN, 0) result with -lieee (swbz#20919)
- Fix --enable-nss-crypt failure of tst-linkall-static (swbz#20918)
* Fri Dec 02 2016 Florian Weimer <fweimer@redhat.com> - 2.24.90-21
- Auto-sync with upstream master,
commit 01b23a30b42a90b1ebd882a0d81110a1542e504a, fixing:
- aarch64: Incorrect dynamic TLS resolution (#1400347)
* Wed Nov 30 2016 Florian Weimer <fweimer@redhat.com> - 2.24.90-20
- Auto-sync with upstream master,
commit 9e78f6f6e7134a5f299cc8de77370218f8019237, fixing:
- stdio buffering with certain network file systems (#1400144)
- libpthread initialization breaks ld.so exceptions (#1393909)
- x86_64: Use of PLT and GOT in static archives (swbz#20750)
- localedata, iconvdata: 0x80->Euro sign mapping for GBK (swbz#20864)
- math: x86_64 -mfpmath=387 float_t, double_t (swbz#20787)
* Wed Nov 23 2016 Florian Weimer <fweimer@redhat.com> - 2.24.90-19
- Auto-sync with upstream master,
commit 7a5e3d9d633c828d84a9535f26b202a6179978e7:
- Fix default float_t definition (swbz#20855)
- Fix writes past the allocated array bounds in execvpe (swbz#20847)
* Tue Nov 22 2016 Florian Weimer <fweimer@redhat.com> - 2.24.90-18
- Auto-sync with upstream master,
commit 5ee1a4443a3eb0868cef1fe506ae6fb6af33d4ad.
* Wed Nov 16 2016 Carlos O'Donell <carlos@redhat.com> - 2.24.90-17
* Add new scalable implementation of POSIX read-write locks.
* Wed Nov 16 2016 Florian Weimer <fweimer@redhat.com> - 2.24.90-16
- Do not try to link libcrypt statically during tests
* Wed Nov 16 2016 Florian Weimer <fweimer@redhat.com> - 2.24.90-15
- Auto-sync with upstream master,
commit 530862a63e0929128dc98fbbd463b120934434fb, fixing:
- Fix rpcgen buffer overrun (swbz#20790)
- Fix ppc64 build failure to swbz#20729 fix attempt
* Wed Nov 2 2016 Florian Weimer <fweimer@redhat.com> - 2.24.90-14
- Drop glibc-swbz20019.patch, applied upstream.
- dlerror returns NULL after dlsym (RTLD_NEXT) lookup failure (#1333945)
(fixed by dropping the revert)
- Auto-sync with upstream master,
commit 9032070deaa03431921315f973c548c2c403fecc, fixing:
- Correct clog10 documentation (swbz#19673)
- Fix building with -Os (swbz#20729)
- Properly initialize glob structure with GLOB_BRACE|GLOB_DOOFFS (swbz#20707)
- powerpc: Fix TOC stub on powerpc64 clone (swbz#20728)
- math: Make strtod raise "inexact" exceptions (swbz#19380)
- malloc: Remove malloc_get_state, malloc_set_state (swbz#19473)
* Sat Oct 22 2016 Florian Weimer <fweimer@redhat.com> - 2.24.90-13
- Auto-sync with upstream master,
commit e37208ce86916af9510ffb9ce7b3c187986f07de, changing:
- Restore <math.h> compatbility with extern "C" wrappers
* Fri Oct 21 2016 Florian Weimer <fweimer@redhat.com> - 2.24.90-12
- Auto-sync with upstream master,
commit b3918c44db615637b26d919ce599cd86592316b3, fixing:
- math: Turn iszero into a function template (#1387415)
- ARM: Use VSQRT instruction (swbz#20660)
- math: Stop powerpc copysignl raising "invalid" for sNaN (swbz#20718)
- x86: Fix FMA and AVX2 detection (swbz#20689)
- x86: Avoid assertion failure on older Intel CPus (swbz#20647)
* Mon Oct 17 2016 Carlos O'Donell <carlos@systemhalted.org> - 2.24.90-11
- Add prototype support for detecting invalid IFUNC calls (swbz#20019).
- New POSIX thread condition variable implementation (swbz#13165).
* Fri Oct 07 2016 Florian Weimer <fweimer@redhat.com> - 2.24.90-10
- Auto-sync with upstream master,
commit 5140d036f9c16585448b5908c3a219bd96842161, fixing:
- resolv: Remove RES_USEBSTRING and its implementation (swbz#20629)
- Refactor ifunc resolvers due to false debuginfo (swbz#20478)
* Tue Oct 04 2016 Florian Weimer <fweimer@redhat.com> - 2.24.90-9
- Auto-sync with upstream master,
commit ff88ee7edfaa439e23c42fccaf3a36cd5f041894, fixing:
- LONG_WIDTH is incorrectly set to the 64 on 32-bit platforms (#1381582)
- libio: Multiple fixes for open_{w}memstream (swbz#18241, swbz#20181)
- Simplify and test _dl_addr_inside_object (swbz#20292)
* Thu Sep 22 2016 Florian Weimer <fweimer@redhat.com> - 2.24.90-8
- Add support for MIPS (#1377795)
- Drop glibc-rh1315476-1.patch (sln pre-processor cleanup), it was
applied upstream.
- Auto-sync with upstream master,
commit 17af5da98cd2c9ec958421ae2108f877e0945451, fixing the following bugs:
- Fix non-LE TLS in static programs (swbz#19826)
- resolv: Remove unsupported hook functions from the API (swbz#20016)
- Remove RR type classification macros (swbz#20592)
- Remove obsolete DNSSEC support (swbz#20591)
- manual: Clarify the documentation of strverscmp (swbz#20524)
* Tue Sep 20 2016 Carlos O'Donell <carlos@systemhalted.org> - 2.24.90-7
- Auto-sync with upstream master.
* Thu Sep 01 2016 Florian Weimer <fweimer@redhat.com> - 2.24.90-6
- Auto-sync with upstream master,
commit 4d728087ef8cc826b05bd21d0c74d4eca9b1a27d, fixing:
- Base <sys/quota.h> on Linux headers (#1360480)
- Simplify static malloc interposition (swbz#20432)
* Fri Aug 26 2016 Florian Weimer <fweimer@redhat.com> - 2.24.90-5
- Auto-sync with upstream master,
commit 7e625f7e85b4e88f10dbde35a0641742af581806, fixing:
- lt_LT locale: use hyphens in d_fmt (swbz#20497)
- nptl test time reductions (swbz#19946)
* Sun Aug 21 2016 Florian Weimer <fweimer@redhat.com> - 2.24.90-4
- Auto-sync with upstream master,
commit 66abf9bfbe24ac1e7207d26ccad725ed938dc52c, fixing:
- argp: Do not override GCC keywords with macros (#1366830)
* Wed Aug 17 2016 Florian Weimer <fweimer@redhat.com> - 2.24.90-3
- Auto-sync with upstream master,
commit d9067fca40b8aac156d73cfa44d6875813555a6c, with these changes:
- Avoid duplicating object files already in libc.a (#1352625)
- CVE-2016-6323: Backtraces can hang on ARM EABI (32-bit) (swbz#20435)
- et_EE: locale has wrong {p,n}_cs_precedes value (swbz#20459
* Thu Aug 11 2016 Florian Weimer <fweimer@redhat.com> - 2.24.90-2
- Auto-sync with upstream master,
commit f79211792127f38d5954419bb3784c8eb7f5e4e5
* Mon Aug 08 2016 Carlos O'Donell <carlos@systemhalted.org> - 2.24.90-1
- Set version to 2.24.90 to match upstream development.
* Mon Aug 08 2016 Carlos O'Donell <carlos@systemhalted.org> - 2.23.90-31
- Auto-sync with upstream master.
* Thu Jul 21 2016 Florian Weimer <fweimer@redhat.com> - 2.23.90-30
- Drop sendmsg/recvmsg compatibility patch (#1344830)
- glibc-devel depends on libgcc%%{_isa} (#1289356)
- Drop Requires(pre) on libgcc
- Introduce libcrypt and libcrypt-nss (#1324623)
- Do not try to install mtrace when bootstrapping
* Wed Jul 20 2016 Florian Weimer <fweimer@redhat.com> - 2.23.90-29
- Move NSS modules to subpackages (#1338889)
* Wed Jul 13 2016 Florian Weimer <fweimer@redhat.com> - 2.23.90-28
- Auto-sync with upstream master, commit
f531f93056b34800383c5154280e7ba5112563c7.
- Add de_LI.UTF-8 locale.
- Make ldconfig and sln the same binary. (#1315476)
* Fri Jul 08 2016 Mike FABIAN <mfabian@redhat.com> - 2.23.90-27
- Unicode 9.0.0 updates (ctype, charmap, transliteration) (#1351108)
* Tue Jul 05 2016 Florian Weimer <fweimer@redhat.com> - 2.23.90-26
- Auto-sync with upstream master, up to commit
30e4cc5413f72c2c728a544389da0c48500d9904, fixing these bug:
- strcasecmp failure on ppc64le (#nscd breaks initgroups with nis (initgroups are empty) (#1294574)
* Fri Jun 24 2016 Carlos O'Donell <carlos@redhat.com> - 2.23.90-25
- Properly handle more invalid --install-langs arguments (#1349906).
* Tue Jun 21 2016 Florian Weimer <fweimer@redhat.com> - 2.23.90-24
- Auto-sync with upstream master, commit
a3b473373ee43a292f5ec68a7fda6b9cfb26a9b0, fixing these bugs:
- Unnecessary mmap fallback in malloc (#1348620)
- pwritev system call passes incorrect offset to kernel (#1346070)
* Sat Jun 18 2016 Carlos O'Donell <carlos@redhat.com> - 2.23.90-23
- Use scriptlet expansion in all-langpacks posttrans script to expand
_install_langes macro.
* Mon Jun 13 2016 Florian Weimer <fweimer@redhat.com> - 2.23.90-22
- Remove glibc-fedora-uname-getrlimit.patch. This patch was
introduced to fix bug rhbz#579086 (Preloading a replacement uname
is causing environment to be cleaned if libpthread is loaded).
UTS namespaces should now offer a cleaner way yo do this.
- Drop sendmmsg/recvmmsg compat symbols on 32-bit architectures (#1344830)
* Sat Jun 11 2016 Florian Weimer <fweimer@redhat.com> - 2.23.90-21
- First phase of sendmsg/recvmsg/sendmmsg/recvmmsg ABI revert:
GLIBC_2.24 compatibility symbols (#1344830)
- Auto-sync with upstream master
(commit 31d0a4fa646db8b8c97ce24e0ec0a7b73de4fca1),
fixing the following bugs:
- Add eo locale
- Crash in the nss_db NSS service module during iteration (#1344480)
* Thu Jun 09 2016 Florian Weimer <fweimer@redhat.com> - 2.23.90-20
- Auto-sync with upstream master, fixing this bug:
- Emacs crashes on startup (#1342976)
* Wed Jun 01 2016 Florian Weimer <fweimer@redhat.com> - 2.23.90-19
- Auto-sync with upstream master.
- Adjust glibc-rh1315108.patch accordingly.
- Fix fork redirection in libpthread (#1326903)
- CVE-2016-4429: stack overflow in Sun RPC clntudp_call (#1337140)
- Do not disable assertions in release builds (#1338887)
* Wed May 11 2016 Carlos O'Donell <carlos@redhat.com> - 2.23.90-18
- Move support for building GCC 2.96 into compat-gcc-296.
* Wed May 11 2016 Florian Weimer <fweimer@redhat.com> - 2.23.90-17
- Temporily revert dlsym (RTLD_NEXT)/dlerror change, to unbreak
ASAN until it is fixed (#1335011)
* Mon May 9 2016 Florian Weimer <fweimer@redhat.com> - 2.23.90-16
- Drop the “fix” for fork/vfork NULL symbols in libpthread. It does
not work because ld.so apparently supports some variant of direct
binding.
* Mon May 09 2016 Florian Weimer <fweimer@redhat.com> - 2.23.90-15
- Auto-sync with upstream master.
- Drop glibc-nsswitch-Add-group-merging-support.patch, applied upstream.
- Drop glibc-rh1252570.patch, alternative fixes applied upstream.
- Adjust glibc-rh1315108.patch to minor upstream change.
- Update SUPPORTED file.
- Experimental fix for NULL fork/vfork symbols in libpthread (#1326903)
* Tue May 03 2016 Carlos O'Donell <carlos@systemhalted.org> - 2.23.90-14
- Require libselinux for nscd in non-bootstrap configuration.
* Fri Apr 29 2016 Carlos O'Donell <carlos@systemhalted.org> - 2.23.90-13
- Auto-sync with upstream master.
* Thu Apr 28 2016 Carlos O'Donell <carlos@redhat.com> - 2.23.90-12
- Move spec file system information logging to the build stage.
* Thu Apr 14 2016 Florian Weimer <fweimer@redhat.com> - 2.23.90-11
- Auto-sync with upstream master.
- Unbreak pread/pread64 on armhfp (#1327277)
* Thu Apr 14 2016 Florian Weimer <fweimer@redhat.com> - 2.23.90-10
- Auto-sync with upstream master.
* Thu Apr 14 2016 Florian Weimer <fweimer@redhat.com> - 2.23.90-9
- Auto-sync with upstream master. Removes type union wait.
- Update SUPPORTED locales file.
* Fri Apr 08 2016 Florian Weimer <fweimer@redhat.com> - 2.23.90-8
- Auto-sync with upstream master.
* Tue Mar 29 2016 Florian Weimer <fweimer@redhat.com> - 2.23.90-7
- Auto-sync with upstream master.
- Adjust glibc-rh1252570.patch to partial upstream fix.
- Drop glibc-fix-an_ES.patch, now included upstream.
* Wed Mar 16 2016 Carlos O'Donell <carlos@redhat.com> - 2.23.90-6
- Use 'an' as language abbreviation for an_ES.
* Mon Mar 07 2016 Carlos O'Donell <carlos@systemhalted.org> - 2.23.90-5
- Auto-sync with upstream master.
* Sun Mar 6 2016 Florian Weimer <fweimer@redhat.com> - 2.23.90-4
- Remove extend_alloca (#1315108)
* Mon Feb 29 2016 Carlos O'Donell <carlos@redhat.com> - 2.23.90-3
- Enhance support for upgrading from a non-language-pack system.
* Fri Feb 26 2016 Mike FABIAN <mfabian@redhat.com> - 2.23.90-2
- Create new language packages for all supported languages.
Locales, translations, and locale sources are split into
distinct sub-packages. A meta-package is created for users
to install all languages. Transparent installation support
is provided via dnf langpacks.
* Fri Feb 26 2016 Carlos O'Donell <carlos@systemhalted.org> - 2.23.90-1
- Upstream development version is now 2.23.90.
* Thu Feb 25 2016 Carlos O'Donell <carlos@systemhalted.org> - 2.22.90-38
- Auto-sync with upstream master.
* Fri Feb 19 2016 Florian Weimer <fweimer@redhat.com> - 2.22.90-37
- Remove stray newline from Serbian locales (#1114591).
* Tue Feb 16 2016 CArlos O'Donell <carlos@redhat.com> - 2.22.90-36
- Fix CVE-2015-7547: getaddrinfo() stack-based buffer overflow (#1308943).
* Mon Feb 15 2016 Florian Weimer <fweimer@redhat.com> - 2.22.90-35
- Revert may_alias attribute for struct sockaddr (#1306511).
- Revert upstream commit 2212c1420c92a33b0e0bd9a34938c9814a56c0f7 (#1252570).
* Sat Feb 13 2016 Florian Weimer <fweimer@redhat.com> - 2.22.90-34
- Auto-sync with upstream master.
- Support aliasing with struct sockaddr pointers (#1306511).
* Tue Feb 09 2016 Carlos O'Donell <carlos@redhat.com> - 2.22.90-33
- Use --with-cpu=power8 for ppc64le default runtime (#1227361).
* Tue Feb 02 2016 Florian Weimer <fweimer@redhat.com> - 2.22.90-32
- Auto-sync with upstream master.
- Add glibc-isinf-cxx11.patch to improve C++11 compatibility.
* Thu Jan 28 2016 Florian Weimer <fweimer@redhat.com> - 2.22.90-31
- Add workaround for GCC PR69537.
* Thu Jan 28 2016 Florian Weimer <fweimer@redhat.com> - 2.22.90-30
- Auto-sync with upstream master.
* Wed Jan 13 2016 Carlos O'Donell <carlos@redhat.com> - 2.22.90-29
- New pthread_barrier algorithm with improved standards compliance.
* Wed Jan 13 2016 Carlos O'Donell <carlos@redhat.com> - 2.22.90-28
- Add group merging support for distributed management (#1146822).
* Tue Jan 12 2016 Carlos O'Donell <carlos@redhat.com> - 2.22.90-27
- Remove 32-bit POWER support.
- Add 64-bit POWER7 BE and 64-bit POWER8 BE optimized libraries.
* Mon Dec 21 2015 Florian Weimer <fweimer@redhat.com> - 2.22.90-26
- Auto-sync with upstream master.
* Wed Dec 16 2015 Florian Weimer <fweimer@redhat.com> - 2.22.90-25
- Auto-sync with upstream master.
- Includes fix for malloc assertion failure in get_free_list. (#1281714)
- Drop Unicode 8.0 patches (now merged upstream).
* Sat Dec 5 2015 Florian Weimer <fweimer@redhat.com> - 2.22.90-24
- Put libmvec_nonshared.a into the -devel package. (#1288738)
* Sat Dec 05 2015 Florian Weimer <fweimer@redhat.com> - 2.22.90-23
- Auto-sync with upstream master.
* Thu Nov 26 2015 Carlos O'Donell <carlos@redhat.com> - 2.22.90-22
- The generic hidden directive support is already used for
preinit/init/fini-array symbols so we drop the Fedora-specific
patch that does the same thing.
Reported by Dmitry V. Levin <ldv@altlinux.org>
* Thu Nov 26 2015 DJ Delorie <dj@redhat.com> - 2.22.90-22
- Require glibc-static for C++ tests.
- Require gcc-c++, libstdc++-static, and glibc-static only when needed.
- Fix --without docs to not leave info files.
* Fri Nov 20 2015 Florian Weimer <fweimer@redhat.com> - 2.22.90-21
- Auto-sync with upstream master.
* Wed Nov 18 2015 Florian Weimer <fweimer@redhat.com> - 2.22.90-20
- Auto-sync with upstream master.
* Wed Nov 18 2015 Florian Weimer <fweimer@redhat.com> - 2.22.90-19
- Disable -Werror on s390 (#1283184).
* Mon Nov 16 2015 Florian Weimer <fweimer@redhat.com> - 2.22.90-18
- Auto-sync with upstream master.
* Mon Nov 16 2015 Florian Weimer <fweimer@redhat.com> - 2.22.90-17
- Revert temporary armhfp build fix.
* Mon Nov 9 2015 Florian Weimer <fweimer@redhat.com> - 2.22.90-16
- Apply temporary fix for armhfp build issue.
* Mon Nov 09 2015 Florian Weimer <fweimer@redhat.com> - 2.22.90-15
- Auto-sync with upstream master.
* Tue Nov 3 2015 Florian Weimer <fweimer@redhat.com> - 2.22.90-14
- Log uname, cpuinfo, meminfo during build (#1276636)
* Fri Oct 30 2015 Florian Weimer <fweimer@redhat.com> - 2.22.90-13
- Auto-sync with upstream master.
* Fri Oct 30 2015 Florian Weimer <fweimer@redhat.com> - 2.22.90-12
- Revert to upstream implementation of condition variables (#1229659)
* Wed Oct 28 2015 Florian Weimer <fweimer@redhat.com> - 2.22.90-11
- Disable valgrind test on ppc64p7, too.
* Mon Oct 26 2015 Carlos O'Donell <carlos@redhat.com> - 2.22.90-10
- Disable valgrind test for ppc64.
* Wed Oct 21 2015 Carlos O'Donell <carlos@redhat.com> - 2.22.90-9
- Sync with upstream master.
- Update new condvar implementation.
* Fri Oct 9 2015 Carlos O'Donell <carlos@redhat.com> - 2.22.90-8
- Remove libbsd.a (#1193168).
* Wed Sep 16 2015 Mike FABIAN <mfabian@redhat.com> - 2.22.90-7
- Add the C.UTF-8 locale (#902094).
* Wed Sep 16 2015 Carlos O'Donell <carlos@systemhalted.org> - 2.22.90-6
- Fix GCC 5 and -Werror related build failures.
- Fix --install-langs bug which causes SIGABRT (#1262040).
* Fri Aug 28 2015 Carlos O'Donell <carlos@systemhalted.org> - 2.22.90-5
- Auto-sync with upstream master.
* Thu Aug 27 2015 Carlos O'Donell <carlos@redhat.com> - 2.22.90-4
- Build require gcc-c++ for the C++ tests.
- Support --without testsuite option to disable testing after build.
- Support --without benchtests option to disable microbenchmarks.
- Update --with bootstrap to disable benchtests, valgrind, documentation,
selinux, and nss-crypt during bootstrap.
- Support --without werror to disable building with -Werror.
- Support --without docs to disable build requirement on texinfo.
- Support --without valgrind to disable testing with valgrind.
- Remove c_stubs add-on and enable fuller support for static binaries.
- Remove librtkaio support (#1227855).
* Sun Aug 16 2015 Siddhesh Poyarekar <siddhesh@redhat.com> - 2.22.90-3
- Auto-sync with upstream master.
* Fri Aug 14 2015 Siddhesh Poyarekar <siddhesh@redhat.com> - 2.22.90-2
- Remove initgroups from the default nsswitch.conf (#751450).
* Fri Aug 14 2015 Siddhesh Poyarekar <siddhesh@redhat.com> - 2.22.90-1
- Sync with upstream master.
* Tue Jul 28 2015 Siddhesh Poyarekar <siddhesh@redhat.com> - 2.21.90-20
- Sync with upstream master.
* Thu Jul 23 2015 Mike FABIAN <mfabian@redhat.com> - 2.21.90-19
- some more additions to the translit_neutral file by Marko Myllynen
* Tue Jul 14 2015 Mike FABIAN <mfabian@redhat.com> - 2.21.90-18
- Unicode 8.0.0 updates, including the transliteration files (#1238412).
* Sun Jun 21 2015 Carlos O'Donell <carlos@redhat.com> - 2.21.90-17
- Remove all linuxthreads handling from glibc spec file.
* Wed Jun 17 2015 Carlos O'Donell <carlos@redhat.com> - 2.21.90-16
- Move split out architecture-dependent header files into devel package
and keep generic variant in headers package, thus keeping headers package
content and file list identical across multilib rpms.
* Wed Jun 17 2015 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 2.21.90-15.1
- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild
* Wed Jun 3 2015 Carlos O'Donell <carlos@redhat.com> - 2.21.90-15
- Remove patch to increase DTV surplus which is no longer needed after
upstream commit f8aeae347377f3dfa8cbadde057adf1827fb1d44.
* Sat May 30 2015 Siddhesh Poyarekar <siddhesh@redhat.com> - 2.21.90-14
- Fix build failure on aarch64 (#1226459).
* Mon May 18 2015 Siddhesh Poyarekar <siddhesh@redhat.com> - 2.21.90-13
- Sync with upstream master.
- Install new condvar implementation.
* Fri May 08 2015 Siddhesh Poyarekar <siddhesh@redhat.com> - 2.21.90-12
- Add benchmark comparison scripts.
* Thu May 07 2015 Siddhesh Poyarekar <siddhesh@redhat.com> - 2.21.90-11
- Auto-sync with upstream master.
- Revert arena threshold fix to work around #1209451.
* Tue Apr 07 2015 Siddhesh Poyarekar <siddhesh@redhat.com> - 2.21.90-10
- Revert last auto-sync (#1209451).
* Mon Apr 06 2015 Siddhesh Poyarekar <siddhesh@redhat.com> - 2.21.90-9
- Auto-sync with upstream master.
* Tue Mar 24 2015 Siddhesh Poyarekar <siddhesh@redhat.com> - 2.21.90-8
- Auto-sync with upstream master.
* Tue Mar 17 2015 Carlos O'Donell <carlos@redhat.com> - 2.21.90-7
- Use rpm.expand in scripts to reduce set of required RPM features.
* Thu Mar 12 2015 Siddhesh Poyarekar <siddhesh@redhat.com> - 2.21.90-6
- Auto-sync with upstream master.
* Tue Mar 3 2015 Mike Fabian <mfabian@redhat.com> - 2.21.90-5
- Support installing only those locales specified by the RPM macro
%%_install_langs (#156477).
* Mon Feb 23 2015 Siddhesh Poyarekar <siddhesh@redhat.com> - 2.21.90-4
- Auto-sync with upstream master.
* Sat Feb 21 2015 Till Maas <opensource@till.name> - 2.21.90-3.1
- Rebuilt for Fedora 23 Change
https://fedoraproject.org/wiki/Changes/Harden_all_packages_with_position-independent_code
* Thu Feb 12 2015 Carlos O'Donell <carlos@systemhalted.org> - 2.21.90-3
- Fix missing clock_* IFUNCs in librtkaio.
* Thu Feb 12 2015 Carlos O'Donell <carlos@systemhalted.org> - 2.21.90-2
- Auto-sync with upstream master.
* Wed Feb 11 2015 Carlos O'Donell <carlos@systemhalted.org> - 2.21.90-1
- Add back x86 vDSO support.
- Fix rtkaio build to reference clock_* functions from libc.
* Wed Jan 21 2015 Siddhesh Poyarekar <siddhesh@redhat.com> - 2.20.90-20
- Sync with upstream master.
- Disable werror on s390x.
- Revert x86 vDSO support since it breaks i686 rtkaio build.
* Tue Jan 20 2015 Peter Robinson <pbrobinson@fedoraproject.org> 2.20.90-19
- Drop large ancient ChangeLogs (rhbz #1169546)
* Mon Jan 12 2015 Siddhesh Poyarekar <siddhesh@redhat.com> - 2.20.90-18
- Pass address of main_arena.mutex to mutex_lock/unlock.
* Thu Jan 08 2015 Siddhesh Poyarekar <siddhesh@redhat.com> - 2.20.90-17
- Define a __tls_get_addr macro to avoid a conflicting declaration.
* Wed Jan 07 2015 Siddhesh Poyarekar <siddhesh.poyarekar@gmail.com> - 2.20.90-16
- Disable -Werror for s390 as well.
* Wed Jan 07 2015 Siddhesh Poyarekar <siddhesh.poyarekar@gmail.com> - 2.20.90-14
- Sync with upstream master.
- Disable -Werror on powerpc and armv7hl.
- Temporarily disable valgrind test on ppc64.
* Sun Dec 28 2014 Dan Horák <dan[at]danny.cz>
- valgrind available only on selected arches (missing on s390)
* Wed Dec 10 2014 Kyle McMartin <kmcmarti@redhat.com>
- aarch64: Drop strchrnul.S revert, apply fix from Richard Earnshaw.
* Fri Dec 05 2014 Carlos O'Donell <carlos@redhat.com> - 2.20.90-13
- Fix permission of debuginfo source files to allow multiarch
debuginfo packages to be installed and upgraded.
* Fri Dec 05 2014 Siddhesh Poyarekar <siddhesh@redhat.com> - 2.20.90-12
- Remove LIB_LANG since we don't install locales in /usr/lib/locale anymore.
- Don't own any directories in /usr/share/locale (#1167445).
- Use the %%find_lang macro to get the *.mo files (#1167445).
- Add %%lang tags to language locale files in /usr/share/i18n/locale (#1169044).
* Wed Dec 03 2014 Kyle McMartin <kyle@fedoraproject.org> - 2.20.90-11
- aarch64: revert optimized strchrnul.S implementation (rhbz#1167501)
until it can be debugged.
* Fri Nov 28 2014 Carlos O'Donell <carlos@redhat.com> - 2.20.90-10
- Auto-sync with upstream master.
* Wed Nov 19 2014 Carlos O'Donell <carlos@redhat.com> - 2.20.90-9
- Sync with upstream master.
* Wed Nov 05 2014 Siddhesh Poyarekar <siddhesh@redhat.com> - 2.20.90-8
- Make getconf return only /usr/bin (#1138835).
- Sync with upstream master.
* Tue Nov 04 2014 Arjun Shankar <arjun.is@lostca.se> - 2.20.90-7
- Add patch that modifies several tests to use test-skeleton.c.
The patch is accepted but not yet committed upstream.
https://sourceware.org/ml/libc-alpha/2014-10/msg00744.html
* Tue Sep 30 2014 Siddhesh Poyarekar <siddhesh@redhat.com> - 2.20.90-6
- Sync with upstream master.
- Disable more Intel TSX usage in rwlocks (#1146967).
- Enable lock elision again on s390 and s390x.
- Enable Systemtap SDT probes for all architectures (#985109).
* Fri Sep 26 2014 Carlos O'Donell <carlos@redhat.com> - 2.20.90-5
- Disable lock elision support for Intel hardware until microcode
updates can be done in early bootup (#1146967).
- Fix building test tst-strtod-round for ARM.
* Tue Sep 23 2014 Siddhesh Poyarekar <siddhesh@redhat.com> - 2.20.90-4
- Sync with upstream master.
- Don't own the common debuginfo directories (#1144853).
- Run valgrind in the %%check section to ensure that it does not break.
* Tue Sep 16 2014 Siddhesh Poyarekar <siddhesh@redhat.com> - 2.20.90-3
- Sync with upstream master.
- Revert patch for #737223.
* Mon Sep 08 2014 Siddhesh Poyarekar <siddhesh@redhat.com> - 2.20.90-2
- Build build-locale-archive statically again.
* Mon Sep 08 2014 Siddhesh Poyarekar <siddhesh@redhat.com> - 2.20.90-1
- Sync with upstream master.
* Thu Sep 4 2014 Carlos O'Donell <carlos@redhat.com> - 2.19.90-36
- Allow up to 32 dlopened modules to use static TLS (#1124987).
- Run glibc tests in %%check section of RPM spec file.
- Do not run tests with `-k` and fail if any test fails to build.
* Tue Aug 26 2014 Siddhesh Poyarekar <siddhesh@redhat.com> - 2.19.90-35
- Sync with upstream master.
- Use INTERNAL_SYSCALL in TLS_INIT_TP (#1133134).
- Remove gconv loadable module transliteration support (CVE-2014-5119, #1119128).
* Fri Aug 22 2014 Dennis Gilmore <dennis@ausil.us> - 2.19.90-34
- add back sss to nsswitch.conf we have added workarounds in the tools
* Thu Aug 21 2014 Kevin Fenzi <kevin@scrye.com> - 2.19.90-33.1
- Rebuild for rpm bug 1131960
* Tue Aug 19 2014 Dennis Gilmore <dennis@ausil.us> - 2.19.90-33
- remove sss from default nsswitch.conf it causes issues with live image composing
* Wed Aug 13 2014 Siddhesh Poyarekar <siddhesh@redhat.com> - 2.19.90-32
- Auto-sync with upstream master.
- Revert to only defining __extern_always_inline for g++-4.3+.
- Fix build failure in compat-gcc-32 (#186410).
* Mon Jul 28 2014 Siddhesh Poyarekar <siddhesh@redhat.com> - 2.19.90-31
- Auto-sync with upstream master.
* Wed Jul 23 2014 Siddhesh Poyarekar <siddhesh@redhat.com> - 2.19.90-30
- Undo last master sync to fix up rawhide.
* Tue Jul 15 2014 Siddhesh Poyarekar <siddhesh@redhat.com> - 2.19.90-29
- Auto-sync with upstream master.
* Sat Jul 12 2014 Tom Callaway <spot@fedoraproject.org> - 2.19.90-28
- fix license handling
* Mon Jul 07 2014 Siddhesh Poyarekar <siddhesh@redhat.com> - 2.19.90-27
- Auto-sync with upstream master.
* Fri Jul 04 2014 Siddhesh Poyarekar <siddhesh@redhat.com> - 2.19.90-26
- Sync with upstream roland/nptl branch.
- Improve testsuite failure outputs in build.log
* Thu Jul 03 2014 Siddhesh Poyarekar <siddhesh@redhat.com> - 2.19.90-25
- Sync with upstream roland/nptl branch.
* Wed Jul 02 2014 Siddhesh Poyarekar <siddhesh@redhat.com> - 2.19.90-24
- Sync with upstream master.
* Tue Jun 24 2014 Siddhesh Poyarekar <siddhesh@redhat.com> - 2.19.90-23
- Sync with upstream master.
- Add fix to unbreak i386 ABI breakage due to a change in scalbn.
* Fri Jun 20 2014 Kyle McMartin <kmcmarti@redhat.com> - 2.19.90-22
- AArch64: Save & restore NZCV (flags) upon entry to _dl_tlsdesc_dynamic
in order to work around GCC reordering compares across the TLS
descriptor sequence (GCC PR61545.) Committing a (temporary) fix here
allows us to avoid rebuilding the world with gcc 4.9.0-11.fc21.
* Mon Jun 16 2014 Kyle McMartin <kmcmarti@redhat.com> - 2.19.90-21
- Auto-sync with upstream master.
* Thu Jun 12 2014 Siddhesh Poyarekar <siddhesh@redhat.com> - 2.19.90-20
- Auto-sync with upstream master.
* Sat Jun 07 2014 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 2.19.90-19.1
- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild
* Tue Jun 03 2014 Siddhesh Poyarekar <siddhesh@redhat.com> - 2.19.90-19
- Sync with upstream master.
* Mon May 26 2014 Siddhesh Poyarekar <siddhesh@redhat.com> - 2.19.90-18
- Sync with upstream master.
- Adjust rtkaio patches to build with upstream master.
* Wed May 21 2014 Kyle McMartin <kyle@fedoraproject.org> - 2.19.90-17
- Backport some upstream-wards patches to fix TLS issues on AArch64.
* Wed May 21 2014 Kyle McMartin <kyle@fedoraproject.org> - 2.19.90-16
- AArch64: Fix handling of nocancel syscall failures (#1098327)
* Thu May 15 2014 Siddhesh Poyarekar <siddhesh@redhat.com> - 2.19.90-15
- Sync with upstream master.
* Wed May 14 2014 Carlos O'Donell <carlos@redhat.com> - 2.19.90-14
- Add support for displaying all test results in build logs.
* Wed May 14 2014 Carlos O'Donell <carlos@redhat.com> - 2.19.90-13
- Add initial support for ppc64le.
* Tue Apr 29 2014 Siddhesh Poyarekar <siddhesh@redhat.com> - 2.19.90-12
- Auto-sync with upstream master.
- Remove ports addon.
* Fri Apr 18 2014 Siddhesh Poyarekar <siddhesh@redhat.com> - 2.19.90-11
- Sync with upstream master.
* Thu Apr 10 2014 Siddhesh Poyarekar <siddhesh@redhat.com> - 2.19.90-10
- Sync with upstream master.
* Thu Apr 03 2014 Siddhesh Poyarekar <siddhesh@redhat.com> - 2.19.90-9
- Sync with upstream master.
* Wed Mar 26 2014 Siddhesh Poyarekar <siddhesh@redhat.com> - 2.19.90-8
- Sync with upstream master.
* Wed Mar 19 2014 Siddhesh Poyarekar <siddhesh@redhat.com> - 2.19.90-7
- Sync with upstream master.
- Fix offset computation for append+ mode on switching from read (#1078355).
* Wed Mar 12 2014 Carlos O'Donell <carlos@redhat.com> - 2.19.90-6
- Sync with upstream master.
- Use cleaner upstream solution for -ftree-loop-distribute-patterns (#911307).
* Tue Mar 04 2014 Siddhesh Poyarekar <siddhesh@redhat.com> - 2.19.90-5
- Sync with upstream master.
* Thu Feb 27 2014 Siddhesh Poyarekar <siddhesh@redhat.com> - 2.19.90-4
- Use nscd service files from glibc sources.
- Make nscd service forking in systemd service file.
* Tue Feb 25 2014 Siddhesh Poyarekar <siddhesh@redhat.com> - 2.19.90-3
- Sync with upstream master.
- Separate ftell from fseek logic and avoid modifying FILE data (#1069559).
* Mon Feb 24 2014 Carlos O'Donell <carlos@redhat.com> - 2.19.90-2
- Fix build-locale-archive failure to open default template.
* Tue Feb 18 2014 Siddhesh Poyarekar <siddhesh@redhat.com> - 2.19.90-1
- Sync with upstream master.
* Tue Feb 04 2014 Siddhesh Poyarekar <siddhesh@redhat.com> - 2.18.90-27
- Sync with upstream master.
* Wed Jan 29 2014 Siddhesh Poyarekar <siddhesh@redhat.com> - 2.18.90-26
- Modify regular expressions to include powerpcle stubs-*.h (#1058258).
* Wed Jan 29 2014 Siddhesh Poyarekar <siddhesh@redhat.com> - 2.18.90-25
- Sync with upstream master.
* Sat Jan 25 2014 Ville Skyttä <ville.skytta@iki.fi> - 2.18.90-24
- Own the %%{_prefix}/lib/locale dir.
* Thu Jan 23 2014 Siddhesh Poyarekar <siddhesh@redhat.com> - 2.18.90-23
- Sync with upstream master.
* Thu Jan 16 2014 Siddhesh Poyarekar <siddhesh@redhat.com> - 2.18.90-22
- Back out ftell test case (#1052846).
* Tue Jan 14 2014 Siddhesh Poyarekar <siddhesh@redhat.com> - 2.18.90-21
- Sync with upstream master.
- Fix infinite loop in ftell when writing wide char data (#1052846).
* Tue Jan 7 2014 Siddhesh Poyarekar <siddhesh@redhat.com> - 2.18.90-20
- Sync with upstream master.
- Enable systemtap probes on Power and S/390.
* Fri Dec 27 2013 Siddhesh Poyarekar <siddhesh@redhat.com> - 2.18.90-19
- Sync with upstream master.

View File

@ -67,7 +67,6 @@ bg_BG.UTF-8/UTF-8 \
bg_BG/CP1251 \
bhb_IN.UTF-8/UTF-8 \
bho_IN/UTF-8 \
bho_NP/UTF-8 \
bi_VU/UTF-8 \
bn_BD/UTF-8 \
bn_IN/UTF-8 \

View File

@ -1,30 +0,0 @@
From 5eb4509a6651d19c7a28c4506d6aa582c9ee095a Mon Sep 17 00:00:00 2001
From: Jakub Jelinek <jakub@redhat.com>
Date: Wed, 1 Feb 2006 09:30:43 +0000
Subject: [PATCH] 128-bit long double fixes
* include/bits/stdlib-ldbl.h: New file.
* include/bits/wchar-ldbl.h: New file.
---
ChangeLog | 5 +++++
include/bits/stdlib-ldbl.h | 1 +
include/bits/wchar-ldbl.h | 1 +
3 files changed, 7 insertions(+), 0 deletions(-)
create mode 100644 include/bits/stdlib-ldbl.h
create mode 100644 include/bits/wchar-ldbl.h
diff --git a/include/bits/stdlib-ldbl.h b/include/bits/stdlib-ldbl.h
new file mode 100644
index 0000000..6250949
--- /dev/null
+++ b/include/bits/stdlib-ldbl.h
@@ -0,0 +1 @@
+#include <stdlib/bits/stdlib-ldbl.h>
diff --git a/include/bits/wchar-ldbl.h b/include/bits/wchar-ldbl.h
new file mode 100644
index 0000000..29baa2f
--- /dev/null
+++ b/include/bits/wchar-ldbl.h
@@ -0,0 +1 @@
+#include <wcsmbs/bits/wchar-ldbl.h>

View File

@ -1,42 +0,0 @@
From 83e5edd390eabe8f8e8e0d051f929b77a30c0767 Mon Sep 17 00:00:00 2001
From: Andreas Schwab <schwab@redhat.com>
Date: Fri, 18 Mar 2011 16:22:52 +0100
Subject: [PATCH] ldd: never run file directly
* elf/ldd.bash.in: Never run file directly.
---
ChangeLog | 4 ++++
elf/ldd.bash.in | 14 +-------------
2 files changed, 5 insertions(+), 13 deletions(-)
--- a/elf/ldd.bash.in
+++ b/elf/ldd.bash.in
@@ -166,18 +166,6 @@ warning: you do not have execution permission for" "\`$file'" >&2
fi
done
case $ret in
- 0)
- # If the program exits with exit code 5, it means the process has been
- # invoked with __libc_enable_secure. Fall back to running it through
- # the dynamic linker.
- try_trace "$file"
- rc=$?
- if [ $rc = 5 ]; then
- try_trace "$RTLD" "$file"
- rc=$?
- fi
- [ $rc = 0 ] || result=1
- ;;
1)
# This can be a non-ELF binary or no binary at all.
nonelf "$file" || {
@@ -185,7 +173,7 @@ warning: you do not have execution permission for" "\`$file'" >&2
result=1
}
;;
- 2)
+ 0|2)
try_trace "$RTLD" "$file" || result=1
;;
*)

View File

@ -1,20 +0,0 @@
glibc-2.3.3-1478-g37582bc
* Thu Nov 30 2006 Jakub Jelinek <jakub@redhat.com> 2.5.90-9
- on ppc64 build __libc_start_main without unwind info,
as it breaks MD_FROB_UPDATE_CONTEXT (#217729, #217775; in the
future that could be fixable just by providing .cfi_undefined r2
in __libc_start_main instead)
diff -Nrup a/sysdeps/powerpc/powerpc64/Makefile b/sysdeps/powerpc/powerpc64/Makefile
--- a/sysdeps/powerpc/powerpc64/Makefile 2012-06-05 07:42:49.000000000 -0600
+++ b/sysdeps/powerpc/powerpc64/Makefile 2012-06-07 12:15:21.828318633 -0600
@@ -35,6 +35,8 @@ CFLAGS-rtld-memmove.os = $(no-special-re
CFLAGS-rtld-memchr.os = $(no-special-regs)
CFLAGS-rtld-strnlen.os = $(no-special-regs)
+CFLAGS-libc-start.c += -fno-asynchronous-unwind-tables
+
ifeq ($(subdir),elf)
# help gcc inline asm code from dl-machine.h
+cflags += -finline-limit=2000

View File

@ -1,37 +0,0 @@
Builds with gcc 7.0 fail with:
../test-skeleton.c: In function legacy_test_function:
cc1: error: assuming signed overflow does not occur when \
assuming that (X - c) <= X is always true [-Werror=strict-overflow]
Ignoring this warning until the test or compiler is adjusted.
Disabled with -Wno-strict-overflow. Attempted -Wstrict-overflow=1,
but it still results in the same warning.
Index: glibc-2.24-661-g5653ab1/string/Makefile
===================================================================
--- glibc-2.24-661-g5653ab1.orig/string/Makefile
+++ glibc-2.24-661-g5653ab1/string/Makefile
@@ -71,7 +71,9 @@ include ../Rules
CFLAGS-inl-tester.c = -fno-builtin
CFLAGS-noinl-tester.c = -fno-builtin
CFLAGS-tst-strlen.c = -fno-builtin
-CFLAGS-stratcliff.c = -fno-builtin
+# Added '-Wno-strict-overflow' for gcc 7.0 until the test or compiler
+# is adjusted.
+CFLAGS-stratcliff.c = -fno-builtin -Wno-strict-overflow
CFLAGS-test-ffs.c = -fno-builtin
CFLAGS-tst-inlcall.c = -fno-builtin
CFLAGS-tst-xbzero-opt.c = -O3
Index: glibc-2.24-661-g5653ab1/wcsmbs/Makefile
===================================================================
--- glibc-2.24-661-g5653ab1.orig/wcsmbs/Makefile
+++ glibc-2.24-661-g5653ab1/wcsmbs/Makefile
@@ -102,3 +102,7 @@ CPPFLAGS += $(libio-mtsafe)
CPPFLAGS-wcstold_l.c = -I../stdlib
$(objpfx)tst-wcstod-nan-locale: $(libm)
+
+# Added '-Wno-strict-overflow' for gcc 7.0 until the test or compiler
+# is adjusted.
+CFLAGS-wcsatcliff.c = -Wno-strict-overflow

View File

@ -0,0 +1,70 @@
commit 1e9522c61c7a544d59db32cb7fbbd42e6793d848
Author: Florian Weimer <fweimer@redhat.com>
Date: Thu Oct 5 18:14:27 2017 +0200
nscd: Eliminate compilation time dependency in the build output
Reviewed-by: Carlos O'Donell <carlos@redhat.com>
diff --git a/nscd/nscd_stat.c b/nscd/nscd_stat.c
index feb1c98ac31edcb8..b1bc81bd6d7d7fd1 100644
--- a/nscd/nscd_stat.c
+++ b/nscd/nscd_stat.c
@@ -35,9 +35,23 @@
# include <selinux/avc.h>
#endif /* HAVE_SELINUX */
+/* We use this to make sure the receiver is the same. The lower 16
+ bits are reserved for flags indicating compilation variants. This
+ version needs to be updated if the definition of struct statdata
+ changes. */
+#define STATDATA_VERSION 0x01020000U
-/* We use this to make sure the receiver is the same. */
-static const char compilation[21] = __DATE__ " " __TIME__;
+#ifdef HAVE_SELINUX
+# define STATDATA_VERSION_SELINUX_FLAG 0x0001U
+#else
+# define STATDATA_VERSION_SELINUX_FLAG 0x0000U
+#endif
+
+/* All flags affecting the struct statdata layout. */
+#define STATDATA_VERSION_FLAGS STATDATA_VERSION_SELINUX_FLAG
+
+/* The full version number for struct statdata. */
+#define STATDATA_VERSION_FULL (STATDATA_VERSION | STATDATA_VERSION_FLAGS)
/* Statistic data for one database. */
struct dbstat
@@ -68,10 +82,11 @@ struct dbstat
uintmax_t addfailed;
};
-/* Record for transmitting statistics. */
+/* Record for transmitting statistics. If this definition changes,
+ update STATDATA_VERSION above. */
struct statdata
{
- char version[sizeof (compilation)];
+ unsigned int version; /* Must be STATDATA_VERSION_FULL. */
int debug_level;
time_t runtime;
unsigned long int client_queued;
@@ -96,7 +111,7 @@ send_stats (int fd, struct database_dyn dbs[lastdb])
memset (&data, 0, sizeof (data));
- memcpy (data.version, compilation, sizeof (compilation));
+ data.version = STATDATA_VERSION_FULL;
data.debug_level = debug_level;
data.runtime = time (NULL) - start_time;
data.client_queued = client_queued;
@@ -196,7 +211,7 @@ receive_print_stats (void)
/* Read as much data as we expect. */
if (TEMP_FAILURE_RETRY (read (fd, &data, sizeof (data))) != sizeof (data)
- || (memcmp (data.version, compilation, sizeof (compilation)) != 0
+ || (data.version != STATDATA_VERSION_FULL
/* Yes, this is an assignment! */
&& (errno = EINVAL)))
{

447
glibc-nss_compat.patch Normal file
View File

@ -0,0 +1,447 @@
commit 64d1e08ea822bf47cb2796ad0f727136227f983c
Author: Andreas Schwab <schwab@suse.de>
Date: Mon Oct 2 14:30:46 2017 +0200
Move nss_compat from nis to nss subdir and install it unconditionally
This has been tested that local lookup still works with and
without an installed libnss_nis, and that NIS lookup works when
libnss_nis is available.
diff --git a/nis/Makefile b/nis/Makefile
index 6b6f5ee72c80ec35..023916f44642ccfa 100644
--- a/nis/Makefile
+++ b/nis/Makefile
@@ -33,7 +33,7 @@ databases = proto service hosts network grp pwd rpc ethers \
spwd netgrp alias publickey
# Specify rules for the nss_* modules.
-services := nis nisplus compat
+services := nis nisplus
endif
extra-libs = libnsl
@@ -63,9 +63,6 @@ libnsl-routines = yp_xdr ypclnt ypupdate_xdr \
nis_clone_res nss-default
ifeq ($(build-obsolete-nsl),yes)
-libnss_compat-routines := $(addprefix compat-,grp pwd spwd initgroups)
-libnss_compat-inhibit-o = $(filter-out .os,$(object-suffixes))
-
libnss_nis-routines := $(addprefix nis-,$(databases)) nis-initgroups \
nss-nis
libnss_nis-inhibit-o = $(filter-out .os,$(object-suffixes))
@@ -79,7 +76,6 @@ include ../Rules
ifeq ($(build-obsolete-nsl),yes)
-$(objpfx)libnss_compat.so: $(objpfx)libnsl.so$(libnsl.so-version)
$(objpfx)libnss_nis.so: $(objpfx)libnsl.so$(libnsl.so-version) \
$(common-objpfx)nss/libnss_files.so
$(objpfx)libnss_nisplus.so: $(objpfx)libnsl.so$(libnsl.so-version)
diff --git a/nis/Versions b/nis/Versions
index ef9a5124174ec0e8..90d3d9dfaa3d853b 100644
--- a/nis/Versions
+++ b/nis/Versions
@@ -63,17 +63,6 @@ libnsl {
}
}
-libnss_compat {
- GLIBC_PRIVATE {
- _nss_compat_endgrent; _nss_compat_endpwent; _nss_compat_endspent;
- _nss_compat_getgrent_r; _nss_compat_getgrgid_r; _nss_compat_getgrnam_r;
- _nss_compat_getpwent_r; _nss_compat_getpwnam_r; _nss_compat_getpwuid_r;
- _nss_compat_getspent_r; _nss_compat_getspnam_r;
- _nss_compat_setgrent; _nss_compat_setpwent; _nss_compat_setspent;
- _nss_compat_initgroups_dyn;
- }
-}
-
libnss_nis {
GLIBC_PRIVATE {
_nss_nis_endaliasent; _nss_nis_endetherent; _nss_nis_endgrent;
diff --git a/nss/Makefile b/nss/Makefile
index 91b1c21567edaba8..bf9663224ab43333 100644
--- a/nss/Makefile
+++ b/nss/Makefile
@@ -70,7 +70,7 @@ tests += tst-cancel-getpwuid_r
endif
# Specify rules for the nss_* modules. We have some services.
-services := files db
+services := files db compat
extra-libs = $(services:%=libnss_%)
# These libraries will be built in the `others' pass rather than
@@ -93,11 +93,15 @@ libnss_db-routines := $(libnss_db-dbs) db-open db-init hash-string
generated += $(filter-out db-alias.c db-netgrp.c, \
$(addsuffix .c,$(libnss_db-dbs)))
+libnss_compat-routines := $(addprefix compat-,grp pwd spwd initgroups) \
+ nisdomain
+
install-others += $(inst_vardbdir)/Makefile
# Build static module into libc if requested
libnss_files-inhibit-o = $(filter-out .os,$(object-suffixes))
libnss_db-inhibit-o = $(filter-out .os,$(object-suffixes))
+libnss_compat-inhibit-o = $(filter-out .os,$(object-suffixes))
ifeq ($(build-static-nss),yes)
routines += $(libnss_files-routines)
static-only-routines += $(libnss_files-routines)
diff --git a/nss/Versions b/nss/Versions
index f8ababccc74d1dd2..14c2571468169e4d 100644
--- a/nss/Versions
+++ b/nss/Versions
@@ -160,3 +160,14 @@ libnss_db {
_nss_db_init;
}
}
+
+libnss_compat {
+ GLIBC_PRIVATE {
+ _nss_compat_endgrent; _nss_compat_endpwent; _nss_compat_endspent;
+ _nss_compat_getgrent_r; _nss_compat_getgrgid_r; _nss_compat_getgrnam_r;
+ _nss_compat_getpwent_r; _nss_compat_getpwnam_r; _nss_compat_getpwuid_r;
+ _nss_compat_getspent_r; _nss_compat_getspnam_r;
+ _nss_compat_setgrent; _nss_compat_setpwent; _nss_compat_setspent;
+ _nss_compat_initgroups_dyn;
+ }
+}
diff --git a/nis/nss_compat/compat-grp.c b/nss/nss_compat/compat-grp.c
similarity index 97%
rename from nis/nss_compat/compat-grp.c
rename to nss/nss_compat/compat-grp.c
index 0381458c0c0b9143..4d51fc95ed9321cd 100644
--- a/nis/nss_compat/compat-grp.c
+++ b/nss/nss_compat/compat-grp.c
@@ -24,7 +24,6 @@
#include <nsswitch.h>
#include <stdio_ext.h>
#include <string.h>
-#include <rpc/types.h>
#include <libc-lock.h>
#include <kernel-features.h>
@@ -58,21 +57,21 @@ struct blacklist_t
struct ent_t
{
- bool_t files;
+ bool files;
enum nss_status setent_status;
FILE *stream;
struct blacklist_t blacklist;
};
typedef struct ent_t ent_t;
-static ent_t ext_ent = { TRUE, NSS_STATUS_SUCCESS, NULL, { NULL, 0, 0 }};
+static ent_t ext_ent = { true, NSS_STATUS_SUCCESS, NULL, { NULL, 0, 0 }};
/* Protect global state against multiple changers. */
__libc_lock_define_initialized (static, lock)
/* Prototypes for local functions. */
static void blacklist_store_name (const char *, ent_t *);
-static int in_blacklist (const char *, int, ent_t *);
+static bool in_blacklist (const char *, int, ent_t *);
/* Initialize the NSS interface/functions. The calling function must
hold the lock. */
@@ -94,7 +93,7 @@ internal_setgrent (ent_t *ent, int stayopen, int needent)
{
enum nss_status status = NSS_STATUS_SUCCESS;
- ent->files = TRUE;
+ ent->files = true;
if (ent->blacklist.data != NULL)
{
@@ -321,7 +320,7 @@ getgrent_next_file (struct group *result, ent_t *ent,
/* +:... */
if (result->gr_name[0] == '+' && result->gr_name[1] == '\0')
{
- ent->files = FALSE;
+ ent->files = false;
return getgrent_next_nss (result, ent, buffer, buflen, errnop);
}
@@ -466,7 +465,7 @@ enum nss_status
_nss_compat_getgrnam_r (const char *name, struct group *grp,
char *buffer, size_t buflen, int *errnop)
{
- ent_t ent = { TRUE, NSS_STATUS_SUCCESS, NULL, { NULL, 0, 0 }};
+ ent_t ent = { true, NSS_STATUS_SUCCESS, NULL, { NULL, 0, 0 }};
enum nss_status result;
if (name[0] == '-' || name[0] == '+')
@@ -598,7 +597,7 @@ enum nss_status
_nss_compat_getgrgid_r (gid_t gid, struct group *grp,
char *buffer, size_t buflen, int *errnop)
{
- ent_t ent = { TRUE, NSS_STATUS_SUCCESS, NULL, { NULL, 0, 0 }};
+ ent_t ent = { true, NSS_STATUS_SUCCESS, NULL, { NULL, 0, 0 }};
enum nss_status result;
__libc_lock_lock (lock);
@@ -665,15 +664,15 @@ blacklist_store_name (const char *name, ent_t *ent)
return;
}
-/* returns TRUE if ent->blacklist contains name, else FALSE */
-static bool_t
+/* Return whether ent->blacklist contains name. */
+static bool
in_blacklist (const char *name, int namelen, ent_t *ent)
{
char buf[namelen + 3];
char *cp;
if (ent->blacklist.data == NULL)
- return FALSE;
+ return false;
buf[0] = '|';
cp = stpcpy (&buf[1], name);
diff --git a/nis/nss_compat/compat-initgroups.c b/nss/nss_compat/compat-initgroups.c
similarity index 98%
rename from nis/nss_compat/compat-initgroups.c
rename to nss/nss_compat/compat-initgroups.c
index 93b765ca952ffb0e..bae8765afbd109e9 100644
--- a/nis/nss_compat/compat-initgroups.c
+++ b/nss/nss_compat/compat-initgroups.c
@@ -24,7 +24,6 @@
#include <stdio_ext.h>
#include <string.h>
#include <unistd.h>
-#include <rpc/types.h>
#include <sys/param.h>
#include <nsswitch.h>
#include <libc-lock.h>
@@ -79,7 +78,7 @@ typedef struct ent_t ent_t;
/* Prototypes for local functions. */
static void blacklist_store_name (const char *, ent_t *);
-static int in_blacklist (const char *, int, ent_t *);
+static bool in_blacklist (const char *, int, ent_t *);
/* Initialize the NSS interface/functions. The calling function must
hold the lock. */
@@ -554,15 +553,15 @@ blacklist_store_name (const char *name, ent_t *ent)
return;
}
-/* returns TRUE if ent->blacklist contains name, else FALSE */
-static bool_t
+/* Return whether ent->blacklist contains name. */
+static bool
in_blacklist (const char *name, int namelen, ent_t *ent)
{
char buf[namelen + 3];
char *cp;
if (ent->blacklist.data == NULL)
- return FALSE;
+ return false;
buf[0] = '|';
cp = stpcpy (&buf[1], name);
diff --git a/nis/nss_compat/compat-pwd.c b/nss/nss_compat/compat-pwd.c
similarity index 99%
rename from nis/nss_compat/compat-pwd.c
rename to nss/nss_compat/compat-pwd.c
index 0583a10b84a2f53e..b16eef5d44b09e45 100644
--- a/nis/nss_compat/compat-pwd.c
+++ b/nss/nss_compat/compat-pwd.c
@@ -25,12 +25,11 @@
#include <pwd.h>
#include <stdio_ext.h>
#include <string.h>
-#include <rpc/types.h>
-#include <rpcsvc/ypclnt.h>
#include <libc-lock.h>
#include <kernel-features.h>
#include "netgroup.h"
+#include "nisdomain.h"
static service_user *ni;
static enum nss_status (*nss_setpwent) (int stayopen);
@@ -82,7 +81,7 @@ __libc_lock_define_initialized (static, lock)
/* Prototypes for local functions. */
static void blacklist_store_name (const char *, ent_t *);
-static int in_blacklist (const char *, int, ent_t *);
+static bool in_blacklist (const char *, int, ent_t *);
/* Initialize the NSS interface/functions. The calling function must
hold the lock. */
@@ -346,7 +345,7 @@ getpwent_next_nss_netgr (const char *name, struct passwd *result, ent_t *ent,
if (domain != NULL)
{
if (curdomain == NULL
- && yp_get_default_domain (&curdomain) != YPERR_SUCCESS)
+ && __nss_get_default_domain (&curdomain) != 0)
{
__internal_endnetgrent (&ent->netgrdata);
ent->netgroup = false;
@@ -1114,15 +1113,15 @@ blacklist_store_name (const char *name, ent_t *ent)
return;
}
-/* Returns TRUE if ent->blacklist contains name, else FALSE. */
-static bool_t
+/* Returns whether ent->blacklist contains name. */
+static bool
in_blacklist (const char *name, int namelen, ent_t *ent)
{
char buf[namelen + 3];
char *cp;
if (ent->blacklist.data == NULL)
- return FALSE;
+ return false;
buf[0] = '|';
cp = stpcpy (&buf[1], name);
diff --git a/nis/nss_compat/compat-spwd.c b/nss/nss_compat/compat-spwd.c
similarity index 98%
rename from nis/nss_compat/compat-spwd.c
rename to nss/nss_compat/compat-spwd.c
index eec3af3d15af148b..8a875472fa6d3a0e 100644
--- a/nis/nss_compat/compat-spwd.c
+++ b/nss/nss_compat/compat-spwd.c
@@ -25,12 +25,11 @@
#include <shadow.h>
#include <stdio_ext.h>
#include <string.h>
-#include <rpc/types.h>
-#include <rpcsvc/ypclnt.h>
#include <libc-lock.h>
#include <kernel-features.h>
#include "netgroup.h"
+#include "nisdomain.h"
static service_user *ni;
static enum nss_status (*nss_setspent) (int stayopen);
@@ -79,7 +78,7 @@ __libc_lock_define_initialized (static, lock)
/* Prototypes for local functions. */
static void blacklist_store_name (const char *, ent_t *);
-static int in_blacklist (const char *, int, ent_t *);
+static bool in_blacklist (const char *, int, ent_t *);
/* Initialize the NSS interface/functions. The calling function must
hold the lock. */
@@ -306,7 +305,7 @@ getspent_next_nss_netgr (const char *name, struct spwd *result, ent_t *ent,
if (domain != NULL)
{
if (curdomain == NULL
- && yp_get_default_domain (&curdomain) != YPERR_SUCCESS)
+ && __nss_get_default_domain (&curdomain) != 0)
{
__internal_endnetgrent (&ent->netgrdata);
ent->netgroup = false;
@@ -840,8 +839,8 @@ blacklist_store_name (const char *name, ent_t *ent)
}
-/* Returns TRUE if ent->blacklist contains name, else FALSE. */
-static bool_t
+/* Returns whether ent->blacklist contains name. */
+static bool
in_blacklist (const char *name, int namelen, ent_t *ent)
{
char buf[namelen + 3];
diff --git a/nss/nss_compat/nisdomain.c b/nss/nss_compat/nisdomain.c
new file mode 100644
index 0000000000000000..220ae27234705855
--- /dev/null
+++ b/nss/nss_compat/nisdomain.c
@@ -0,0 +1,58 @@
+/* Copyright (C) 2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <stdlib.h>
+#include <string.h>
+#include <errno.h>
+#include <unistd.h>
+#include <libc-lock.h>
+#include "nisdomain.h"
+
+#define MAXDOMAINNAMELEN 1024
+
+static char domainname[MAXDOMAINNAMELEN];
+
+__libc_lock_define_initialized (static, domainname_lock)
+
+int
+__nss_get_default_domain (char **outdomain)
+{
+ int result = 0;
+ *outdomain = NULL;
+
+ __libc_lock_lock (domainname_lock);
+
+ if (domainname[0] != '\0')
+ {
+ if (getdomainname (domainname, MAXDOMAINNAMELEN) < 0)
+ result = errno;
+ else if (strcmp (domainname, "(none)") == 0)
+ {
+ /* If domainname is not set, some systems will return "(none)" */
+ domainname[0] = '\0';
+ result = ENOENT;
+ }
+ else
+ *outdomain = domainname;
+ }
+ else
+ *outdomain = domainname;
+
+ __libc_lock_unlock (domainname_lock);
+
+ return result;
+}
diff --git a/nss/nss_compat/nisdomain.h b/nss/nss_compat/nisdomain.h
new file mode 100644
index 0000000000000000..314f3f7c069835af
--- /dev/null
+++ b/nss/nss_compat/nisdomain.h
@@ -0,0 +1,20 @@
+/* Copyright (C) 2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+/* Set OUTDOMAIN to a pointer to the current NIS domain name, or NULL if
+ not set. Return zero on success, an error number on failure. */
+extern int __nss_get_default_domain (char **outdomain);

View File

@ -1,19 +0,0 @@
--- glibc-2.18-151-g303e567.orig/elf/ldconfig.c 2013-09-25 14:01:01.522446341 -0400
+++ glibc-2.18-151-g303e567/elf/ldconfig.c 2013-09-25 14:06:31.094218857 -0400
@@ -959,6 +959,16 @@
|| dlib_ptr->flag == FLAG_ELF_LIBC6)
&& flag == FLAG_ELF)
dlib_ptr->flag = flag;
+#ifdef __arm__
+ /* In Fedora 20 binutils regressed temporarily and failed to
+ mark hard ABI objects with the correct flag. Therefore we
+ must accept unmarked objects that were previously marked
+ hard ABI. We can remove this check once the entire distribution
+ has been rebuilt. */
+ else if (dlib_ptr->flag & FLAG_ARM_LIBHF &&
+ (flag == FLAG_ELF_LIBC6))
+ ;
+#endif
else
error (0, 0, _("libraries %s and %s in directory %s have same soname but different type."),
dlib_ptr->name, direntry->d_name,

271
glibc-rh1315108-glob.patch Normal file
View File

@ -0,0 +1,271 @@
commit 5a79f97554af6f2eb0a654f844b3d1f56937064d
Author: Adhemerval Zanella <adhemerval.zanella@linaro.org>
Date: Mon Sep 4 17:00:03 2017 -0300
posix: Fix getpwnam_r usage (BZ #1062)
This patch fixes longstanding misuse of errno after getpwnam_r,
which returns an error number rather than setting errno. This is
sync with gnulib commit 5db9301.
Checked on x86_64-linux-gnu and on a build using build-many-glibcs.py
for all major architectures.
[BZ #1062]
* posix/glob.c (glob): Port recent patches to platforms
lacking getpwnam_r.
(glob): Fix longstanding misuse of errno after getpwnam_r, which
returns an error number rather than setting errno.
diff --git a/posix/glob.c b/posix/glob.c
index c761c0861ddb49ea..70434745f57f8ff5 100644
--- a/posix/glob.c
+++ b/posix/glob.c
@@ -15,10 +15,6 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
-#ifndef _LIBC
-# include <config.h>
-#endif
-
#include <glob.h>
#include <errno.h>
@@ -39,10 +35,6 @@
#endif
#include <errno.h>
-#ifndef __set_errno
-# define __set_errno(val) errno = (val)
-#endif
-
#include <dirent.h>
#include <stdlib.h>
#include <string.h>
@@ -78,12 +70,8 @@
#include <flexmember.h>
#include <glob_internal.h>
+#include <scratch_buffer.h>
-#ifdef _SC_GETPW_R_SIZE_MAX
-# define GETPW_R_SIZE_MAX() sysconf (_SC_GETPW_R_SIZE_MAX)
-#else
-# define GETPW_R_SIZE_MAX() (-1)
-#endif
#ifdef _SC_LOGIN_NAME_MAX
# define GET_LOGIN_NAME_MAX() sysconf (_SC_LOGIN_NAME_MAX)
#else
@@ -651,97 +639,36 @@ glob (const char *pattern, int flags, int (*errfunc) (const char *, int),
if (success)
{
struct passwd *p;
- char *malloc_pwtmpbuf = NULL;
- char *pwtmpbuf;
+ struct scratch_buffer pwtmpbuf;
+ scratch_buffer_init (&pwtmpbuf);
# if defined HAVE_GETPWNAM_R || defined _LIBC
- long int pwbuflenmax = GETPW_R_SIZE_MAX ();
- size_t pwbuflen = pwbuflenmax;
struct passwd pwbuf;
- int save = errno;
-# ifndef _LIBC
- if (! (0 < pwbuflenmax && pwbuflenmax <= SIZE_MAX))
- /* 'sysconf' does not support _SC_GETPW_R_SIZE_MAX.
- Try a moderate value. */
- pwbuflen = 1024;
-# endif
- if (glob_use_alloca (alloca_used, pwbuflen))
- pwtmpbuf = alloca_account (pwbuflen, alloca_used);
- else
+ while (getpwnam_r (name, &pwbuf,
+ pwtmpbuf.data, pwtmpbuf.length, &p)
+ == ERANGE)
{
- pwtmpbuf = malloc (pwbuflen);
- if (pwtmpbuf == NULL)
+ if (!scratch_buffer_grow (&pwtmpbuf))
{
- if (__glibc_unlikely (malloc_name))
- free (name);
retval = GLOB_NOSPACE;
goto out;
}
- malloc_pwtmpbuf = pwtmpbuf;
- }
-
- while (getpwnam_r (name, &pwbuf, pwtmpbuf, pwbuflen, &p)
- != 0)
- {
- size_t newlen;
- bool v;
- if (errno != ERANGE)
- {
- p = NULL;
- break;
- }
- v = size_add_wrapv (pwbuflen, pwbuflen, &newlen);
- if (!v && malloc_pwtmpbuf == NULL
- && glob_use_alloca (alloca_used, newlen))
- pwtmpbuf = extend_alloca_account (pwtmpbuf, pwbuflen,
- newlen, alloca_used);
- else
- {
- char *newp = (v ? NULL
- : realloc (malloc_pwtmpbuf, newlen));
- if (newp == NULL)
- {
- free (malloc_pwtmpbuf);
- if (__glibc_unlikely (malloc_name))
- free (name);
- retval = GLOB_NOSPACE;
- goto out;
- }
- malloc_pwtmpbuf = pwtmpbuf = newp;
- }
- pwbuflen = newlen;
- __set_errno (save);
}
# else
p = getpwnam (name);
# endif
- if (__glibc_unlikely (malloc_name))
- free (name);
if (p != NULL)
{
- if (malloc_pwtmpbuf == NULL)
- home_dir = p->pw_dir;
- else
+ home_dir = strdup (p->pw_dir);
+ malloc_home_dir = 1;
+ if (home_dir == NULL)
{
- size_t home_dir_len = strlen (p->pw_dir) + 1;
- if (glob_use_alloca (alloca_used, home_dir_len))
- home_dir = alloca_account (home_dir_len,
- alloca_used);
- else
- {
- home_dir = malloc (home_dir_len);
- if (home_dir == NULL)
- {
- free (pwtmpbuf);
- retval = GLOB_NOSPACE;
- goto out;
- }
- malloc_home_dir = 1;
- }
- memcpy (home_dir, p->pw_dir, home_dir_len);
+ scratch_buffer_free (&pwtmpbuf);
+ retval = GLOB_NOSPACE;
+ goto out;
}
}
- free (malloc_pwtmpbuf);
+ scratch_buffer_free (&pwtmpbuf);
}
else
{
@@ -878,61 +805,21 @@ glob (const char *pattern, int flags, int (*errfunc) (const char *, int),
/* Look up specific user's home directory. */
{
struct passwd *p;
- char *malloc_pwtmpbuf = NULL;
+ struct scratch_buffer pwtmpbuf;
+ scratch_buffer_init (&pwtmpbuf);
+
# if defined HAVE_GETPWNAM_R || defined _LIBC
- long int buflenmax = GETPW_R_SIZE_MAX ();
- size_t buflen = buflenmax;
- char *pwtmpbuf;
struct passwd pwbuf;
- int save = errno;
-
-# ifndef _LIBC
- if (! (0 <= buflenmax && buflenmax <= SIZE_MAX))
- /* Perhaps 'sysconf' does not support _SC_GETPW_R_SIZE_MAX. Try a
- moderate value. */
- buflen = 1024;
-# endif
- if (glob_use_alloca (alloca_used, buflen))
- pwtmpbuf = alloca_account (buflen, alloca_used);
- else
+
+ while (getpwnam_r (user_name, &pwbuf,
+ pwtmpbuf.data, pwtmpbuf.length, &p)
+ == ERANGE)
{
- pwtmpbuf = malloc (buflen);
- if (pwtmpbuf == NULL)
+ if (!scratch_buffer_grow (&pwtmpbuf))
{
- nomem_getpw:
- if (__glibc_unlikely (malloc_user_name))
- free (user_name);
retval = GLOB_NOSPACE;
goto out;
}
- malloc_pwtmpbuf = pwtmpbuf;
- }
-
- while (getpwnam_r (user_name, &pwbuf, pwtmpbuf, buflen, &p) != 0)
- {
- size_t newlen;
- bool v;
- if (errno != ERANGE)
- {
- p = NULL;
- break;
- }
- v = size_add_wrapv (buflen, buflen, &newlen);
- if (!v && malloc_pwtmpbuf == NULL
- && glob_use_alloca (alloca_used, newlen))
- pwtmpbuf = extend_alloca_account (pwtmpbuf, buflen,
- newlen, alloca_used);
- else
- {
- char *newp = v ? NULL : realloc (malloc_pwtmpbuf, newlen);
- if (newp == NULL)
- {
- free (malloc_pwtmpbuf);
- goto nomem_getpw;
- }
- malloc_pwtmpbuf = pwtmpbuf = newp;
- }
- __set_errno (save);
}
# else
p = getpwnam (user_name);
@@ -959,7 +846,7 @@ glob (const char *pattern, int flags, int (*errfunc) (const char *, int),
dirname = malloc (home_len + rest_len + 1);
if (dirname == NULL)
{
- free (malloc_pwtmpbuf);
+ scratch_buffer_free (&pwtmpbuf);
retval = GLOB_NOSPACE;
goto out;
}
@@ -970,13 +857,9 @@ glob (const char *pattern, int flags, int (*errfunc) (const char *, int),
dirlen = home_len + rest_len;
dirname_modified = 1;
-
- free (malloc_pwtmpbuf);
}
else
{
- free (malloc_pwtmpbuf);
-
if (flags & GLOB_TILDE_CHECK)
{
/* We have to regard it as an error if we cannot find the
@@ -985,6 +868,7 @@ glob (const char *pattern, int flags, int (*errfunc) (const char *, int),
goto out;
}
}
+ scratch_buffer_free (&pwtmpbuf);
}
#endif /* !WINDOWS32 */
}

View File

@ -156,16 +156,6 @@ Date: Sun Mar 1 19:48:31 2015 +0100
* posix/wordexp.c (parse_tilde): Use struct scratch_buffer
instead of extend_alloca.
commit 7b4c16db30304b83a5d1e913d1a8f7e90a8c398c
Author: Florian Weimer <fweimer@redhat.com>
Date: Sun Mar 1 19:49:50 2015 +0100
glob: Rewrite to use struct scratch_buffer instead of extend_alloca
[BZ #18023]
* posix/glob.c (glob): Use struct scratch_buffer instead of
extend_alloca.
commit 683543bbb3e2c1b17554c4096d00c2980f39a802
Author: Florian Weimer <fweimer@redhat.com>
Date: Sun Mar 1 23:22:45 2015 +0100
@ -249,8 +239,9 @@ Date: Sun Mar 1 23:22:45 2015 +0100
[BZ #18023]
* include/alloca.h (stackinfo_alloca_round, extend_alloca,
extend_alloca_account): Remove.
Index: b/elf/dl-deps.c
===================================================================
diff --git a/elf/dl-deps.c b/elf/dl-deps.c
index 1b8bac65932a7713..bc59f0ff7b4d7c61 100644
--- a/elf/dl-deps.c
+++ b/elf/dl-deps.c
@@ -27,6 +27,7 @@
@ -261,7 +252,7 @@ Index: b/elf/dl-deps.c
#include <dl-dst.h>
@@ -184,9 +185,8 @@ _dl_map_object_deps (struct link_map *ma
@@ -184,9 +185,8 @@ _dl_map_object_deps (struct link_map *map,
/* Pointer to last unique object. */
tail = &known[nlist - 1];
@ -273,7 +264,7 @@ Index: b/elf/dl-deps.c
/* Process each element of the search list, loading each of its
auxiliary objects and immediate dependencies. Auxiliary objects
@@ -217,13 +217,12 @@ _dl_map_object_deps (struct link_map *ma
@@ -217,13 +217,12 @@ _dl_map_object_deps (struct link_map *map,
if (l->l_searchlist.r_list == NULL && l->l_initfini == NULL
&& l != map && l->l_ldnum > 0)
{
@ -293,7 +284,7 @@ Index: b/elf/dl-deps.c
}
if (l->l_info[DT_NEEDED] || l->l_info[AUXTAG] || l->l_info[FILTERTAG])
@@ -463,8 +462,11 @@ _dl_map_object_deps (struct link_map *ma
@@ -463,8 +462,11 @@ _dl_map_object_deps (struct link_map *map,
struct link_map **l_initfini = (struct link_map **)
malloc ((2 * nneeded + 1) * sizeof needed[0]);
if (l_initfini == NULL)
@ -307,7 +298,7 @@ Index: b/elf/dl-deps.c
l_initfini[0] = l;
memcpy (&l_initfini[1], needed, nneeded * sizeof needed[0]);
memcpy (&l_initfini[nneeded + 1], l_initfini,
@@ -482,6 +484,8 @@ _dl_map_object_deps (struct link_map *ma
@@ -482,6 +484,8 @@ _dl_map_object_deps (struct link_map *map,
}
out:
@ -316,8 +307,8 @@ Index: b/elf/dl-deps.c
if (errno == 0 && errno_saved != 0)
__set_errno (errno_saved);
Index: b/include/alloca.h
===================================================================
diff --git a/include/alloca.h b/include/alloca.h
index fd90664f0a17cd6d..c0b83954436ed4c1 100644
--- a/include/alloca.h
+++ b/include/alloca.h
@@ -23,57 +23,17 @@ libc_hidden_proto (__libc_alloca_cutoff)
@ -378,11 +369,11 @@ Index: b/include/alloca.h
#endif
# endif /* !_ISOMAC */
Index: b/nis/nss_compat/compat-initgroups.c
===================================================================
diff --git a/nis/nss_compat/compat-initgroups.c b/nis/nss_compat/compat-initgroups.c
index 795213448c7c98b7..93b765ca952ffb0e 100644
--- a/nis/nss_compat/compat-initgroups.c
+++ b/nis/nss_compat/compat-initgroups.c
@@ -262,7 +262,6 @@ getgrent_next_nss (ent_t *ent, char *buf
@@ -262,7 +262,6 @@ getgrent_next_nss (ent_t *ent, char *buffer, size_t buflen, const char *user,
overwrite the pointer with one to a bigger buffer. */
char *tmpbuf = buffer;
size_t tmplen = buflen;
@ -390,7 +381,7 @@ Index: b/nis/nss_compat/compat-initgroups.c
for (int i = 0; i < mystart; i++)
{
@@ -271,29 +270,26 @@ getgrent_next_nss (ent_t *ent, char *buf
@@ -271,29 +270,26 @@ getgrent_next_nss (ent_t *ent, char *buffer, size_t buflen, const char *user,
== NSS_STATUS_TRYAGAIN
&& *errnop == ERANGE)
{
@ -440,7 +431,7 @@ Index: b/nis/nss_compat/compat-initgroups.c
}
if (__builtin_expect (status != NSS_STATUS_NOTFOUND, 1))
@@ -321,7 +317,7 @@ getgrent_next_nss (ent_t *ent, char *buf
@@ -321,7 +317,7 @@ getgrent_next_nss (ent_t *ent, char *buffer, size_t buflen, const char *user,
status = NSS_STATUS_NOTFOUND;
done:
@ -449,8 +440,8 @@ Index: b/nis/nss_compat/compat-initgroups.c
free (tmpbuf);
}
Index: b/nis/nss_nis/nis-initgroups.c
===================================================================
diff --git a/nis/nss_nis/nis-initgroups.c b/nis/nss_nis/nis-initgroups.c
index 3784c101f7ee31aa..c872b32e15f55e3d 100644
--- a/nis/nss_nis/nis-initgroups.c
+++ b/nis/nss_nis/nis-initgroups.c
@@ -16,7 +16,6 @@
@ -469,7 +460,7 @@ Index: b/nis/nss_nis/nis-initgroups.c
#include "nss-nis.h"
#include <libnsl.h>
@@ -120,27 +120,30 @@ internal_getgrent_r (struct group *grp,
@@ -120,27 +120,30 @@ internal_getgrent_r (struct group *grp, char *buffer, size_t buflen,
static int
get_uid (const char *user, uid_t *uidp)
{
@ -504,7 +495,7 @@ Index: b/nis/nss_nis/nis-initgroups.c
return 1;
}
@@ -254,8 +257,6 @@ _nss_nis_initgroups_dyn (const char *use
@@ -254,8 +257,6 @@ _nss_nis_initgroups_dyn (const char *user, gid_t group, long int *start,
}
struct group grpbuf, *g;
@ -513,7 +504,7 @@ Index: b/nis/nss_nis/nis-initgroups.c
enum nss_status status;
intern_t intern = { NULL, NULL, 0 };
gid_t *groups = *groupsp;
@@ -264,15 +265,21 @@ _nss_nis_initgroups_dyn (const char *use
@@ -264,15 +265,21 @@ _nss_nis_initgroups_dyn (const char *user, gid_t group, long int *start,
if (status != NSS_STATUS_SUCCESS)
return status;
@ -546,8 +537,8 @@ Index: b/nis/nss_nis/nis-initgroups.c
return status;
}
Index: b/nscd/aicache.c
===================================================================
diff --git a/nscd/aicache.c b/nscd/aicache.c
index a3de792cc429b546..7064d12a15b3e19d 100644
--- a/nscd/aicache.c
+++ b/nscd/aicache.c
@@ -28,6 +28,7 @@
@ -558,7 +549,7 @@ Index: b/nscd/aicache.c
#include "dbg_log.h"
#include "nscd.h"
@@ -111,10 +112,13 @@ addhstaiX (struct database_dyn *db, int
@@ -111,10 +112,13 @@ addhstaiX (struct database_dyn *db, int fd, request_header *req,
if (ctx == NULL)
no_more = 1;
@ -576,7 +567,7 @@ Index: b/nscd/aicache.c
int32_t ttl = INT32_MAX;
ssize_t total = 0;
char *key_copy = NULL;
@@ -127,6 +131,7 @@ addhstaiX (struct database_dyn *db, int
@@ -127,6 +131,7 @@ addhstaiX (struct database_dyn *db, int fd, request_header *req,
int status[2] = { NSS_STATUS_UNAVAIL, NSS_STATUS_UNAVAIL };
int naddrs = 0;
size_t addrslen = 0;
@ -584,7 +575,7 @@ Index: b/nscd/aicache.c
char *canon = NULL;
size_t canonlen;
@@ -141,12 +146,17 @@ addhstaiX (struct database_dyn *db, int
@@ -141,12 +146,17 @@ addhstaiX (struct database_dyn *db, int fd, request_header *req,
at = &atmem;
rc6 = 0;
herrno = 0;
@ -604,7 +595,7 @@ Index: b/nscd/aicache.c
}
if (rc6 != 0 && herrno == NETDB_INTERNAL)
@@ -224,41 +234,38 @@ addhstaiX (struct database_dyn *db, int
@@ -224,41 +234,38 @@ addhstaiX (struct database_dyn *db, int fd, request_header *req,
while (1)
{
rc6 = 0;
@ -662,7 +653,7 @@ Index: b/nscd/aicache.c
}
if (rc4 != 0 && herrno == NETDB_INTERNAL)
@@ -284,13 +291,11 @@ addhstaiX (struct database_dyn *db, int
@@ -284,13 +291,11 @@ addhstaiX (struct database_dyn *db, int fd, request_header *req,
cfct = __nss_lookup_function (nip, "getcanonname_r");
if (cfct != NULL)
{
@ -678,7 +669,7 @@ Index: b/nscd/aicache.c
== NSS_STATUS_SUCCESS)
canon = s;
else
@@ -319,18 +324,20 @@ addhstaiX (struct database_dyn *db, int
@@ -319,18 +324,20 @@ addhstaiX (struct database_dyn *db, int fd, request_header *req,
addrfamily = AF_INET6;
}
@ -715,11 +706,11 @@ Index: b/nscd/aicache.c
return timeout;
}
Index: b/nscd/connections.c
===================================================================
diff --git a/nscd/connections.c b/nscd/connections.c
index cc1ed72077640a8b..2f69800ee5ca83b4 100644
--- a/nscd/connections.c
+++ b/nscd/connections.c
@@ -1324,64 +1324,83 @@ request from '%s' [%ld] not handled due
@@ -1324,64 +1324,83 @@ request from '%s' [%ld] not handled due to missing permission"),
}
}
@ -739,20 +730,19 @@ Index: b/nscd/connections.c
- size_t readlen = 0;
int fd = open ("/proc/self/cmdline", O_RDONLY);
- if (fd == -1)
- {
- dbg_log (_("\
-cannot open /proc/self/cmdline: %s; disabling paranoia mode"),
- strerror (errno));
-
- paranoia = 0;
- return;
+ if (fd < 0)
+ return NULL;
+ size_t current = 0;
+ size_t limit = 1024;
+ char *buffer = malloc (limit);
+ if (buffer == NULL)
+ {
{
- dbg_log (_("\
-cannot open /proc/self/cmdline: %s; disabling paranoia mode"),
- strerror (errno));
-
- paranoia = 0;
- return;
+ close (fd);
+ errno = ENOMEM;
+ return NULL;
@ -842,7 +832,7 @@ Index: b/nscd/connections.c
{
argv[argc++] = cp;
cp = (char *) rawmemchr (cp, '\0') + 1;
@@ -1398,6 +1417,7 @@ cannot change to old UID: %s; disabling
@@ -1398,6 +1417,7 @@ cannot change to old UID: %s; disabling paranoia mode"),
strerror (errno));
paranoia = 0;
@ -850,7 +840,7 @@ Index: b/nscd/connections.c
return;
}
@@ -1409,6 +1429,7 @@ cannot change to old GID: %s; disabling
@@ -1409,6 +1429,7 @@ cannot change to old GID: %s; disabling paranoia mode"),
ignore_value (setuid (server_uid));
paranoia = 0;
@ -858,7 +848,7 @@ Index: b/nscd/connections.c
return;
}
}
@@ -1426,6 +1447,7 @@ cannot change to old working directory:
@@ -1426,6 +1447,7 @@ cannot change to old working directory: %s; disabling paranoia mode"),
ignore_value (setgid (server_gid));
}
paranoia = 0;
@ -866,7 +856,7 @@ Index: b/nscd/connections.c
return;
}
@@ -1474,6 +1496,7 @@ cannot change to old working directory:
@@ -1474,6 +1496,7 @@ cannot change to old working directory: %s; disabling paranoia mode"),
dbg_log (_("cannot change current working directory to \"/\": %s"),
strerror (errno));
paranoia = 0;
@ -874,8 +864,8 @@ Index: b/nscd/connections.c
/* Reenable the databases. */
time_t now = time (NULL);
Index: b/nscd/grpcache.c
===================================================================
diff --git a/nscd/grpcache.c b/nscd/grpcache.c
index d2ad53509db97bdf..a71036512048dd81 100644
--- a/nscd/grpcache.c
+++ b/nscd/grpcache.c
@@ -16,7 +16,6 @@
@ -894,7 +884,7 @@ Index: b/nscd/grpcache.c
#include "nscd.h"
#include "dbg_log.h"
@@ -448,12 +448,12 @@ addgrbyX (struct database_dyn *db, int f
@@ -448,12 +448,12 @@ addgrbyX (struct database_dyn *db, int fd, request_header *req,
look again in the table whether the dataset is now available. We
simply insert it. It does not matter if it is in there twice. The
pruning function only will look at the timestamp. */
@ -910,7 +900,7 @@ Index: b/nscd/grpcache.c
if (__glibc_unlikely (debug_level > 0))
{
@@ -463,43 +463,24 @@ addgrbyX (struct database_dyn *db, int f
@@ -463,43 +463,24 @@ addgrbyX (struct database_dyn *db, int fd, request_header *req,
dbg_log (_("Reloading \"%s\" in group cache!"), keystr);
}
@ -969,8 +959,8 @@ Index: b/nscd/grpcache.c
return timeout;
}
Index: b/nscd/hstcache.c
===================================================================
diff --git a/nscd/hstcache.c b/nscd/hstcache.c
index 9f6ce979ac333265..d0af99893dd17b9f 100644
--- a/nscd/hstcache.c
+++ b/nscd/hstcache.c
@@ -34,6 +34,7 @@
@ -981,7 +971,7 @@ Index: b/nscd/hstcache.c
#include "nscd.h"
#include "dbg_log.h"
@@ -463,11 +464,8 @@ addhstbyX (struct database_dyn *db, int
@@ -463,11 +464,8 @@ addhstbyX (struct database_dyn *db, int fd, request_header *req,
look again in the table whether the dataset is now available. We
simply insert it. It does not matter if it is in there twice. The
pruning function only will look at the timestamp. */
@ -993,7 +983,7 @@ Index: b/nscd/hstcache.c
int errval = 0;
int32_t ttl = INT32_MAX;
@@ -487,46 +485,30 @@ addhstbyX (struct database_dyn *db, int
@@ -487,46 +485,30 @@ addhstbyX (struct database_dyn *db, int fd, request_header *req,
dbg_log (_("Reloading \"%s\" in hosts cache!"), (char *) str);
}
@ -1059,8 +1049,8 @@ Index: b/nscd/hstcache.c
return timeout;
}
Index: b/nscd/pwdcache.c
===================================================================
diff --git a/nscd/pwdcache.c b/nscd/pwdcache.c
index 721f4c617b0bb74a..9349b54df4241ad5 100644
--- a/nscd/pwdcache.c
+++ b/nscd/pwdcache.c
@@ -16,7 +16,6 @@
@ -1079,7 +1069,7 @@ Index: b/nscd/pwdcache.c
#include "nscd.h"
#include "dbg_log.h"
@@ -426,12 +426,11 @@ addpwbyX (struct database_dyn *db, int f
@@ -426,12 +426,11 @@ addpwbyX (struct database_dyn *db, int fd, request_header *req,
look again in the table whether the dataset is now available. We
simply insert it. It does not matter if it is in there twice. The
pruning function only will look at the timestamp. */
@ -1094,7 +1084,7 @@ Index: b/nscd/pwdcache.c
if (__glibc_unlikely (debug_level > 0))
{
@@ -441,45 +440,26 @@ addpwbyX (struct database_dyn *db, int f
@@ -441,45 +440,26 @@ addpwbyX (struct database_dyn *db, int fd, request_header *req,
dbg_log (_("Reloading \"%s\" in password cache!"), keystr);
}
@ -1155,8 +1145,8 @@ Index: b/nscd/pwdcache.c
return timeout;
}
Index: b/nscd/servicescache.c
===================================================================
diff --git a/nscd/servicescache.c b/nscd/servicescache.c
index 131ba6ddcc1a5f7a..549e9a446816d760 100644
--- a/nscd/servicescache.c
+++ b/nscd/servicescache.c
@@ -16,7 +16,6 @@
@ -1175,7 +1165,7 @@ Index: b/nscd/servicescache.c
#include "nscd.h"
#include "dbg_log.h"
@@ -374,12 +374,11 @@ addservbyX (struct database_dyn *db, int
@@ -374,12 +374,11 @@ addservbyX (struct database_dyn *db, int fd, request_header *req,
look again in the table whether the dataset is now available. We
simply insert it. It does not matter if it is in there twice. The
pruning function only will look at the timestamp. */
@ -1190,7 +1180,7 @@ Index: b/nscd/servicescache.c
if (__glibc_unlikely (debug_level > 0))
{
@@ -389,43 +388,24 @@ addservbyX (struct database_dyn *db, int
@@ -389,43 +388,24 @@ addservbyX (struct database_dyn *db, int fd, request_header *req,
dbg_log (_("Reloading \"%s\" in services cache!"), key);
}
@ -1249,8 +1239,8 @@ Index: b/nscd/servicescache.c
return timeout;
}
Index: b/nss/getent.c
===================================================================
diff --git a/nss/getent.c b/nss/getent.c
index 8f8c3fe80a2cfea6..5654c5f67c4f118c 100644
--- a/nss/getent.c
+++ b/nss/getent.c
@@ -39,6 +39,7 @@
@ -1303,7 +1293,7 @@ Index: b/nss/getent.c
printf ("%-21s", key[i]);
for (int j = 0; j < n; ++j)
if (grps[j] != -1)
@@ -508,6 +513,8 @@ initgroups_keys (int number, char *key[]
@@ -508,6 +513,8 @@ initgroups_keys (int number, char *key[])
putchar_unlocked ('\n');
}
@ -1312,111 +1302,8 @@ Index: b/nss/getent.c
return 0;
}
Index: b/nss/nss_files/files-hosts.c
===================================================================
--- a/nss/nss_files/files-hosts.c
+++ b/nss/nss_files/files-hosts.c
@@ -22,7 +22,7 @@
#include <arpa/nameser.h>
#include <netdb.h>
#include <resolv/resolv-internal.h>
-
+#include <scratch_buffer.h>
/* Get implementation for some internal functions. */
#include "../resolv/mapv4v6addr.h"
@@ -145,15 +145,12 @@ _nss_files_gethostbyname3_r (const char
&& _res_hconf.flags & HCONF_FLAG_MULTI)
{
/* We have to get all host entries from the file. */
- size_t tmp_buflen = MIN (buflen, 4096);
- char tmp_buffer_stack[tmp_buflen]
- __attribute__ ((__aligned__ (__alignof__ (struct hostent_data))));
- char *tmp_buffer = tmp_buffer_stack;
struct hostent tmp_result_buf;
int naddrs = 1;
int naliases = 0;
char *bufferend;
- bool tmp_buffer_malloced = false;
+ struct scratch_buffer tmpbuf;
+ scratch_buffer_init (&tmpbuf);
while (result->h_aliases[naliases] != NULL)
++naliases;
@@ -161,9 +158,9 @@ _nss_files_gethostbyname3_r (const char
bufferend = (char *) &result->h_aliases[naliases + 1];
again:
- while ((status = internal_getent (stream, &tmp_result_buf, tmp_buffer,
- tmp_buflen, errnop, herrnop, af,
- flags))
+ while ((status = internal_getent (stream, &tmp_result_buf,
+ tmpbuf.data, tmpbuf.length,
+ errnop, herrnop, af, flags))
== NSS_STATUS_SUCCESS)
{
int matches = 1;
@@ -287,54 +284,13 @@ _nss_files_gethostbyname3_r (const char
}
}
- if (status == NSS_STATUS_TRYAGAIN)
- {
- size_t newsize = 2 * tmp_buflen;
- if (tmp_buffer_malloced)
- {
- char *newp = realloc (tmp_buffer, newsize);
- if (newp != NULL)
- {
- assert ((((uintptr_t) newp)
- & (__alignof__ (struct hostent_data) - 1))
- == 0);
- tmp_buffer = newp;
- tmp_buflen = newsize;
- goto again;
- }
- }
- else if (!__libc_use_alloca (buflen + newsize))
- {
- tmp_buffer = malloc (newsize);
- if (tmp_buffer != NULL)
- {
- assert ((((uintptr_t) tmp_buffer)
- & (__alignof__ (struct hostent_data) - 1))
- == 0);
- tmp_buffer_malloced = true;
- tmp_buflen = newsize;
- goto again;
- }
- }
- else
- {
- tmp_buffer
- = extend_alloca (tmp_buffer, tmp_buflen,
- newsize
- + __alignof__ (struct hostent_data));
- tmp_buffer = (char *) (((uintptr_t) tmp_buffer
- + __alignof__ (struct hostent_data)
- - 1)
- & ~(__alignof__ (struct hostent_data)
- - 1));
- goto again;
- }
- }
+ if (status == NSS_STATUS_TRYAGAIN
+ && scratch_buffer_grow (&tmpbuf))
+ goto again;
else
status = NSS_STATUS_SUCCESS;
out:
- if (tmp_buffer_malloced)
- free (tmp_buffer);
+ scratch_buffer_free (&tmpbuf);
}
internal_endent (&stream);
Index: b/nss/nss_files/files-initgroups.c
===================================================================
diff --git a/nss/nss_files/files-initgroups.c b/nss/nss_files/files-initgroups.c
index 27cd8ece40434f5c..8a88f1b62357d3bd 100644
--- a/nss/nss_files/files-initgroups.c
+++ b/nss/nss_files/files-initgroups.c
@@ -16,7 +16,6 @@
@ -1435,7 +1322,7 @@ Index: b/nss/nss_files/files-initgroups.c
enum nss_status
_nss_files_initgroups_dyn (const char *user, gid_t group, long int *start,
@@ -46,9 +46,8 @@ _nss_files_initgroups_dyn (const char *u
@@ -46,9 +46,8 @@ _nss_files_initgroups_dyn (const char *user, gid_t group, long int *start,
enum nss_status status = NSS_STATUS_SUCCESS;
bool any = false;
@ -1447,7 +1334,7 @@ Index: b/nss/nss_files/files-initgroups.c
gid_t *groups = *groupsp;
@@ -67,26 +66,16 @@ _nss_files_initgroups_dyn (const char *u
@@ -67,26 +66,16 @@ _nss_files_initgroups_dyn (const char *user, gid_t group, long int *start,
}
struct group grp;
@ -1480,7 +1367,7 @@ Index: b/nss/nss_files/files-initgroups.c
/* Reread current line, the parser has clobbered it. */
fsetpos (stream, &pos);
continue;
@@ -132,8 +121,7 @@ _nss_files_initgroups_dyn (const char *u
@@ -132,8 +121,7 @@ _nss_files_initgroups_dyn (const char *user, gid_t group, long int *start,
out:
/* Free memory. */
@ -1490,241 +1377,8 @@ Index: b/nss/nss_files/files-initgroups.c
free (line);
fclose (stream);
Index: b/posix/glob.c
===================================================================
--- a/posix/glob.c
+++ b/posix/glob.c
@@ -27,6 +27,7 @@
#include <stdbool.h>
#include <stddef.h>
#include <stdint.h>
+#include <scratch_buffer.h>
/* Outcomment the following line for production quality code. */
/* #define NDEBUG 1 */
@@ -293,7 +294,7 @@ glob (const char *pattern, int flags, in
glob_t dirs;
int retval = 0;
#ifdef _LIBC
- size_t alloca_used = 0;
+ size_t alloca_used = sizeof (struct scratch_buffer);
#endif
if (pattern == NULL || pglob == NULL || (flags & ~__GLOB_FLAGS) != 0)
@@ -637,33 +638,13 @@ glob (const char *pattern, int flags, in
{
struct passwd *p;
# if defined HAVE_GETPWNAM_R || defined _LIBC
- long int pwbuflen = GETPW_R_SIZE_MAX ();
- char *pwtmpbuf;
struct passwd pwbuf;
- int malloc_pwtmpbuf = 0;
int save = errno;
+ struct scratch_buffer pwtmpbuf;
+ scratch_buffer_init (&pwtmpbuf);
-# ifndef _LIBC
- if (pwbuflen == -1)
- /* `sysconf' does not support _SC_GETPW_R_SIZE_MAX.
- Try a moderate value. */
- pwbuflen = 1024;
-# endif
- if (__libc_use_alloca (alloca_used + pwbuflen))
- pwtmpbuf = alloca_account (pwbuflen, alloca_used);
- else
- {
- pwtmpbuf = malloc (pwbuflen);
- if (pwtmpbuf == NULL)
- {
- retval = GLOB_NOSPACE;
- goto out;
- }
- malloc_pwtmpbuf = 1;
- }
-
- while (getpwnam_r (name, &pwbuf, pwtmpbuf, pwbuflen, &p)
- != 0)
+ while (getpwnam_r (name, &pwbuf,
+ pwtmpbuf.data, pwtmpbuf.length, &p) != 0)
{
if (errno != ERANGE)
{
@@ -671,67 +652,37 @@ glob (const char *pattern, int flags, in
break;
}
- if (!malloc_pwtmpbuf
- && __libc_use_alloca (alloca_used
- + 2 * pwbuflen))
- pwtmpbuf = extend_alloca_account (pwtmpbuf, pwbuflen,
- 2 * pwbuflen,
- alloca_used);
- else
+ if (!scratch_buffer_grow (&pwtmpbuf))
{
- char *newp = realloc (malloc_pwtmpbuf
- ? pwtmpbuf : NULL,
- 2 * pwbuflen);
- if (newp == NULL)
- {
- if (__glibc_unlikely (malloc_pwtmpbuf))
- free (pwtmpbuf);
- retval = GLOB_NOSPACE;
- goto out;
- }
- pwtmpbuf = newp;
- pwbuflen = 2 * pwbuflen;
- malloc_pwtmpbuf = 1;
+ retval = GLOB_NOSPACE;
+ goto out;
}
__set_errno (save);
}
# else
- p = getpwnam (name);
+ p = getpwnam (namebuf.data);
# endif
if (p != NULL)
{
- if (!malloc_pwtmpbuf)
- home_dir = p->pw_dir;
- else
+ home_dir = strdup (p->pw_dir);
+ malloc_home_dir = 1;
+ if (home_dir == NULL)
{
- size_t home_dir_len = strlen (p->pw_dir) + 1;
- if (__libc_use_alloca (alloca_used + home_dir_len))
- home_dir = alloca_account (home_dir_len,
- alloca_used);
- else
- {
- home_dir = malloc (home_dir_len);
- if (home_dir == NULL)
- {
- free (pwtmpbuf);
- retval = GLOB_NOSPACE;
- goto out;
- }
- malloc_home_dir = 1;
- }
- memcpy (home_dir, p->pw_dir, home_dir_len);
-
- free (pwtmpbuf);
+ scratch_buffer_free (&pwtmpbuf);
+ retval = GLOB_NOSPACE;
+ goto out;
}
}
+ scratch_buffer_free (&pwtmpbuf);
}
}
if (home_dir == NULL || home_dir[0] == '\0')
{
+ if (malloc_home_dir)
+ free (home_dir);
+ malloc_home_dir = 0;
if (flags & GLOB_TILDE_CHECK)
{
- if (__glibc_unlikely (malloc_home_dir))
- free (home_dir);
retval = GLOB_NOMATCH;
goto out;
}
@@ -852,57 +803,24 @@ glob (const char *pattern, int flags, in
{
struct passwd *p;
# if defined HAVE_GETPWNAM_R || defined _LIBC
- long int buflen = GETPW_R_SIZE_MAX ();
- char *pwtmpbuf;
- int malloc_pwtmpbuf = 0;
struct passwd pwbuf;
int save = errno;
+ struct scratch_buffer pwtmpbuf;
+ scratch_buffer_init (&pwtmpbuf);
-# ifndef _LIBC
- if (buflen == -1)
- /* `sysconf' does not support _SC_GETPW_R_SIZE_MAX. Try a
- moderate value. */
- buflen = 1024;
-# endif
- if (__libc_use_alloca (alloca_used + buflen))
- pwtmpbuf = alloca_account (buflen, alloca_used);
- else
- {
- pwtmpbuf = malloc (buflen);
- if (pwtmpbuf == NULL)
- {
- nomem_getpw:
- if (__glibc_unlikely (malloc_user_name))
- free (user_name);
- retval = GLOB_NOSPACE;
- goto out;
- }
- malloc_pwtmpbuf = 1;
- }
-
- while (getpwnam_r (user_name, &pwbuf, pwtmpbuf, buflen, &p) != 0)
+ while (getpwnam_r (user_name, &pwbuf,
+ pwtmpbuf.data, pwtmpbuf.length, &p) != 0)
{
if (errno != ERANGE)
{
p = NULL;
break;
}
- if (!malloc_pwtmpbuf
- && __libc_use_alloca (alloca_used + 2 * buflen))
- pwtmpbuf = extend_alloca_account (pwtmpbuf, buflen,
- 2 * buflen, alloca_used);
- else
+
+ if (!scratch_buffer_grow (&pwtmpbuf))
{
- char *newp = realloc (malloc_pwtmpbuf ? pwtmpbuf : NULL,
- 2 * buflen);
- if (newp == NULL)
- {
- if (__glibc_unlikely (malloc_pwtmpbuf))
- free (pwtmpbuf);
- goto nomem_getpw;
- }
- pwtmpbuf = newp;
- malloc_pwtmpbuf = 1;
+ retval = GLOB_NOSPACE;
+ goto out;
}
__set_errno (save);
}
@@ -931,8 +849,7 @@ glob (const char *pattern, int flags, in
dirname = malloc (home_len + rest_len + 1);
if (dirname == NULL)
{
- if (__glibc_unlikely (malloc_pwtmpbuf))
- free (pwtmpbuf);
+ scratch_buffer_free (&pwtmpbuf);
retval = GLOB_NOSPACE;
goto out;
}
@@ -944,13 +861,11 @@ glob (const char *pattern, int flags, in
dirlen = home_len + rest_len;
dirname_modified = 1;
- if (__glibc_unlikely (malloc_pwtmpbuf))
- free (pwtmpbuf);
+ scratch_buffer_free (&pwtmpbuf);
}
else
{
- if (__glibc_unlikely (malloc_pwtmpbuf))
- free (pwtmpbuf);
+ scratch_buffer_free (&pwtmpbuf);
if (flags & GLOB_TILDE_CHECK)
/* We have to regard it as an error if we cannot find the
Index: b/posix/wordexp.c
===================================================================
diff --git a/posix/wordexp.c b/posix/wordexp.c
index dfc41736e68bc4e1..23e0b9783631970a 100644
--- a/posix/wordexp.c
+++ b/posix/wordexp.c
@@ -17,7 +17,6 @@
@ -1743,7 +1397,7 @@ Index: b/posix/wordexp.c
#include <libc-lock.h>
#include <_itoa.h>
@@ -308,12 +308,7 @@ parse_tilde (char **word, size_t *word_l
@@ -308,12 +308,7 @@ parse_tilde (char **word, size_t *word_length, size_t *max_length,
if (i == 1 + *offset)
{
/* Tilde appears on its own */
@ -1756,7 +1410,7 @@ Index: b/posix/wordexp.c
/* POSIX.2 says ~ expands to $HOME and if HOME is unset the
results are unspecified. We do a lookup on the uid if
@@ -328,25 +323,38 @@ parse_tilde (char **word, size_t *word_l
@@ -328,25 +323,38 @@ parse_tilde (char **word, size_t *word_length, size_t *max_length,
}
else
{
@ -1802,7 +1456,7 @@ Index: b/posix/wordexp.c
}
}
else
@@ -354,13 +362,15 @@ parse_tilde (char **word, size_t *word_l
@@ -354,13 +362,15 @@ parse_tilde (char **word, size_t *word_length, size_t *max_length,
/* Look up user name in database to get home directory */
char *user = strndupa (&words[1 + *offset], i - (1 + *offset));
struct passwd pwd, *tpwd;
@ -1822,7 +1476,7 @@ Index: b/posix/wordexp.c
if (result == 0 && tpwd != NULL && pwd.pw_dir)
*word = w_addstr (*word, word_length, max_length, pwd.pw_dir);
@@ -372,6 +382,8 @@ parse_tilde (char **word, size_t *word_l
@@ -372,6 +382,8 @@ parse_tilde (char **word, size_t *word_length, size_t *max_length,
*word = w_addstr (*word, word_length, max_length, user);
}
@ -1831,8 +1485,8 @@ Index: b/posix/wordexp.c
*offset = i - 1;
}
return *word ? 0 : WRDE_NOSPACE;
Index: b/sysdeps/unix/sysv/linux/gethostid.c
===================================================================
diff --git a/sysdeps/unix/sysv/linux/gethostid.c b/sysdeps/unix/sysv/linux/gethostid.c
index cc108aa2d64b616a..3529cf6fe509cfd1 100644
--- a/sysdeps/unix/sysv/linux/gethostid.c
+++ b/sysdeps/unix/sysv/linux/gethostid.c
@@ -63,13 +63,12 @@ sethostid (long int id)
@ -1885,8 +1539,8 @@ Index: b/sysdeps/unix/sysv/linux/gethostid.c
/* For the return value to be not exactly the IP address we do some
bit fiddling. */
return (int32_t) (in.s_addr << 16 | in.s_addr >> 16);
Index: b/sysdeps/unix/sysv/linux/getlogin_r.c
===================================================================
diff --git a/sysdeps/unix/sysv/linux/getlogin_r.c b/sysdeps/unix/sysv/linux/getlogin_r.c
index fe81fd196ab3be73..0eff10da7501fd30 100644
--- a/sysdeps/unix/sysv/linux/getlogin_r.c
+++ b/sysdeps/unix/sysv/linux/getlogin_r.c
@@ -18,6 +18,7 @@
@ -1897,9 +1551,9 @@ Index: b/sysdeps/unix/sysv/linux/getlogin_r.c
#define STATIC static
static int getlogin_r_fd0 (char *name, size_t namesize);
@@ -54,28 +55,19 @@ __getlogin_r_loginuid (char *name, size_
endp == uidbuf || *endp != '\0'))
return -1;
@@ -63,28 +64,19 @@ __getlogin_r_loginuid (char *name, size_t namesize)
return ENXIO;
}
- size_t buflen = 1024;
- char *buf = alloca (buflen);
@ -1933,7 +1587,7 @@ Index: b/sysdeps/unix/sysv/linux/getlogin_r.c
}
if (res != 0 || tpwd == NULL)
@@ -95,9 +87,7 @@ __getlogin_r_loginuid (char *name, size_
@@ -104,9 +96,7 @@ __getlogin_r_loginuid (char *name, size_t namesize)
memcpy (name, pwd.pw_name, needed);
out:

440
glibc-rh1416405.patch Normal file
View File

@ -0,0 +1,440 @@
commit 799c8d6905433ad56f26ccab4855b36f1d1ddbfc
Author: Mike FABIAN <mfabian@redhat.com>
Date: Thu Sep 7 15:28:28 2017 +0200
Add new codepage charmaps/IBM858 [BZ #21084]
This code page is identical to code page 850 except that X'D5'
has been changed from LI61 (dotless i) to SC20 (euro symbol).
The code points from /x01 to /x1f in the /localedata/charmaps/IBM858
file have the same mapping as those in localedata/charmaps/ANSI_X3.4-1968.
That means they disagree with with
ftp://ftp.software.ibm.com/software/globalization/gcoc/attachments/CP00858.txt
in that range.
For example, localedata/charmaps/IBM858 and localedata/charmaps/ANSI_X3.4-1968 have:
“<U0001> /x01 START OF HEADING (SOH)”
whereas CP00858.txt has:
“01 SS000000 Smiling Face”
That means that CP00858.txt is not really ASCII-compatible and to make
it ASCII-compatible we deviate fro CP00858.txt in the code points from /x01
to /x1f.
[BZ #21084]
* benchtests/strcoll-inputs/filelist#en_US.UTF-8: Add IBM858 and ibm858.c.
* iconvdata/Makefile: Add IBM858.
* iconvdata/gconv-modules: Add IBM858.
* iconvdata/ibm858.c: New file.
* iconvdata/tst-tables.sh: Add IBM858
* localedata/charmaps/IBM858: New file.
diff --git a/benchtests/strcoll-inputs/filelist#en_US.UTF-8 b/benchtests/strcoll-inputs/filelist#en_US.UTF-8
index 6cee2374f42b6bbe..aa44107ad6a3663f 100644
--- a/benchtests/strcoll-inputs/filelist#en_US.UTF-8
+++ b/benchtests/strcoll-inputs/filelist#en_US.UTF-8
@@ -11232,6 +11232,7 @@ ISO-8859-9E
UTF-8
ISO-8859-2
IBM850
+IBM858
EUC-TW
KOI8-U
IBM903
@@ -13920,6 +13921,7 @@ ibm12712.c
ibm1145.h
ibm932.c
ibm850.c
+ibm858.c
ibm437.c
ibm1399.c
stdio-common
diff --git a/iconvdata/Makefile b/iconvdata/Makefile
index a0e297e4ded1d400..504d1952656a8ec2 100644
--- a/iconvdata/Makefile
+++ b/iconvdata/Makefile
@@ -36,9 +36,9 @@ modules := ISO8859-1 ISO8859-2 ISO8859-3 ISO8859-4 ISO8859-5 \
IBM874 CP737 CP775 ISO-2022-KR HP-TURKISH8 HP-THAI8 HP-GREEK8 \
KOI8-R LATIN-GREEK LATIN-GREEK-1 IBM256 IBM273 IBM277 IBM278 \
IBM280 IBM281 IBM284 IBM285 IBM290 IBM297 IBM420 IBM424 \
- IBM437 IBM850 IBM851 IBM852 IBM855 IBM857 IBM860 IBM861 \
- IBM862 IBM863 IBM864 IBM865 IBM868 IBM869 IBM875 IBM880 \
- IBM866 CP1258 IBM922 IBM1124 IBM1129 IBM932 IBM943 \
+ IBM437 IBM850 IBM851 IBM852 IBM855 IBM857 IBM858 IBM860 \
+ IBM861 IBM862 IBM863 IBM864 IBM865 IBM868 IBM869 IBM875 \
+ IBM880 IBM866 CP1258 IBM922 IBM1124 IBM1129 IBM932 IBM943 \
IBM856 IBM930 IBM933 IBM935 IBM937 IBM939 IBM1046 \
IBM1132 IBM1133 IBM1160 IBM1161 IBM1162 IBM1163 IBM1164 \
IBM918 IBM1004 IBM1026 CP1125 CP1250 CP1251 CP1252 CP1253 \
@@ -153,11 +153,11 @@ gen-8bit-modules := iso8859-2 iso8859-3 iso8859-4 iso8859-6 iso8859-9 koi-8 \
gen-8bit-gap-modules := koi8-r latin-greek latin-greek-1 ibm256 ibm273 \
ibm277 ibm278 ibm280 ibm281 ibm284 ibm285 ibm290 \
ibm297 ibm420 ibm424 ibm437 ibm850 ibm851 ibm852 \
- ibm855 ibm857 ibm860 ibm861 ibm862 ibm863 ibm864 \
- ibm865 ibm868 ibm869 ibm875 ibm880 ibm918 ibm1004 \
- ibm1026 cp1125 cp1250 cp1251 cp1252 cp1253 cp1254 \
- cp1256 cp1257 ibm866 iso8859-5 iso8859-7 iso8859-8 \
- iso8859-10 macintosh iec_p27-1 asmo_449 \
+ ibm855 ibm857 ibm858 ibm860 ibm861 ibm862 ibm863 \
+ ibm864 ibm865 ibm868 ibm869 ibm875 ibm880 ibm918 \
+ ibm1004 ibm1026 cp1125 cp1250 cp1251 cp1252 cp1253 \
+ cp1254 cp1256 cp1257 ibm866 iso8859-5 iso8859-7 \
+ iso8859-8 iso8859-10 macintosh iec_p27-1 asmo_449 \
csn_369103 cwi dec-mcs ecma-cyrillic gost_19768-74 \
greek-ccitt greek7 greek7-old inis inis-8 \
inis-cyrillic iso_2033 iso_5427 iso_5427-ext \
diff --git a/iconvdata/gconv-modules b/iconvdata/gconv-modules
index e959f16ad9b6dd3c..7d988c8ad9972858 100644
--- a/iconvdata/gconv-modules
+++ b/iconvdata/gconv-modules
@@ -744,6 +744,13 @@ module IBM850// INTERNAL IBM850 1
module INTERNAL IBM850// IBM850 1
# from to module cost
+alias CP858// IBM858//
+alias 858// IBM858//
+alias CSPC858MULTILINGUAL// IBM858//
+module IBM858// INTERNAL IBM858 1
+module INTERNAL IBM858// IBM858 1
+
+# from to module cost
alias CP851// IBM851//
alias 851// IBM851//
alias CSIBM851// IBM851//
diff --git a/iconvdata/ibm858.c b/iconvdata/ibm858.c
new file mode 100644
index 0000000000000000..ed2a48e3cf79e2b9
--- /dev/null
+++ b/iconvdata/ibm858.c
@@ -0,0 +1,27 @@
+/* Conversion from and to IBM858.
+ Copyright (C) 2017 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <stdint.h>
+
+/* Get the conversion table. */
+#define TABLES <ibm858.h>
+
+#define CHARSET_NAME "IBM858//"
+#define HAS_HOLES 1 /* Not all 256 character are defined. */
+
+#include <8bit-gap.c>
diff --git a/iconvdata/tst-tables.sh b/iconvdata/tst-tables.sh
index a027f5df5b27b904..77338f05149ccb98 100755
--- a/iconvdata/tst-tables.sh
+++ b/iconvdata/tst-tables.sh
@@ -125,6 +125,7 @@ cat <<EOF |
IBM855
IBM856
IBM857
+ IBM858
IBM860
IBM861
IBM862
diff --git a/localedata/charmaps/IBM858 b/localedata/charmaps/IBM858
new file mode 100644
index 0000000000000000..d8600e2456c87b48
--- /dev/null
+++ b/localedata/charmaps/IBM858
@@ -0,0 +1,281 @@
+<code_set_name> IBM858
+<comment_char> %
+<escape_char> /
+% version: 1.0
+% source: ftp://ftp.software.ibm.com/software/globalization/gcoc/attachments/CP00858.txt, 1998
+
+% source: UNICODE 1.0
+
+% This code page is identical to code page 850 except that X'D5'
+% has been changed from LI61 (dotless i) to SC20 (euro symbol).
+
+% The code points from /x01 to /x1f in this file have the same mapping
+% as those in ANSI_X3.4-1968. That means they disagree with with CP00858.txt
+% in that range. For example, this file and ANSI_X3.4-1968 have:
+% “<U0001> /x01 START OF HEADING (SOH)”
+% whereas CP00858.txt has:
+% “01 SS000000 Smiling Face”
+% That means that CP00858.txt is not really ASCII-compatible and to make
+% it ASCII-compatible we deviate fro CP00858.txt in the code points from /x01
+% to /x1f.
+
+% alias CP858
+% alias 858
+CHARMAP
+<U0000> /x00 NULL (NUL)
+<U0001> /x01 START OF HEADING (SOH)
+<U0002> /x02 START OF TEXT (STX)
+<U0003> /x03 END OF TEXT (ETX)
+<U0004> /x04 END OF TRANSMISSION (EOT)
+<U0005> /x05 ENQUIRY (ENQ)
+<U0006> /x06 ACKNOWLEDGE (ACK)
+<U0007> /x07 BELL (BEL)
+<U0008> /x08 BACKSPACE (BS)
+<U0009> /x09 CHARACTER TABULATION (HT)
+<U000A> /x0a LINE FEED (LF)
+<U000B> /x0b LINE TABULATION (VT)
+<U000C> /x0c FORM FEED (FF)
+<U000D> /x0d CARRIAGE RETURN (CR)
+<U000E> /x0e SHIFT OUT (SO)
+<U000F> /x0f SHIFT IN (SI)
+<U0010> /x10 DATALINK ESCAPE (DLE)
+<U0011> /x11 DEVICE CONTROL ONE (DC1)
+<U0012> /x12 DEVICE CONTROL TWO (DC2)
+<U0013> /x13 DEVICE CONTROL THREE (DC3)
+<U0014> /x14 DEVICE CONTROL FOUR (DC4)
+<U0015> /x15 NEGATIVE ACKNOWLEDGE (NAK)
+<U0016> /x16 SYNCHRONOUS IDLE (SYN)
+<U0017> /x17 END OF TRANSMISSION BLOCK (ETB)
+<U0018> /x18 CANCEL (CAN)
+<U0019> /x19 END OF MEDIUM (EM)
+<U001A> /x1a SUBSTITUTE (SUB)
+<U001B> /x1b ESCAPE (ESC)
+<U001C> /x1c FILE SEPARATOR (IS4)
+<U001D> /x1d GROUP SEPARATOR (IS3)
+<U001E> /x1e RECORD SEPARATOR (IS2)
+<U001F> /x1f UNIT SEPARATOR (IS1)
+<U0020> /x20 SPACE
+<U0021> /x21 EXCLAMATION MARK
+<U0022> /x22 QUOTATION MARK
+<U0023> /x23 NUMBER SIGN
+<U0024> /x24 DOLLAR SIGN
+<U0025> /x25 PERCENT SIGN
+<U0026> /x26 AMPERSAND
+<U0027> /x27 APOSTROPHE
+<U0028> /x28 LEFT PARENTHESIS
+<U0029> /x29 RIGHT PARENTHESIS
+<U002A> /x2a ASTERISK
+<U002B> /x2b PLUS SIGN
+<U002C> /x2c COMMA
+<U002D> /x2d HYPHEN-MINUS
+<U002E> /x2e FULL STOP
+<U002F> /x2f SOLIDUS
+<U0030> /x30 DIGIT ZERO
+<U0031> /x31 DIGIT ONE
+<U0032> /x32 DIGIT TWO
+<U0033> /x33 DIGIT THREE
+<U0034> /x34 DIGIT FOUR
+<U0035> /x35 DIGIT FIVE
+<U0036> /x36 DIGIT SIX
+<U0037> /x37 DIGIT SEVEN
+<U0038> /x38 DIGIT EIGHT
+<U0039> /x39 DIGIT NINE
+<U003A> /x3a COLON
+<U003B> /x3b SEMICOLON
+<U003C> /x3c LESS-THAN SIGN
+<U003D> /x3d EQUALS SIGN
+<U003E> /x3e GREATER-THAN SIGN
+<U003F> /x3f QUESTION MARK
+<U0040> /x40 COMMERCIAL AT
+<U0041> /x41 LATIN CAPITAL LETTER A
+<U0042> /x42 LATIN CAPITAL LETTER B
+<U0043> /x43 LATIN CAPITAL LETTER C
+<U0044> /x44 LATIN CAPITAL LETTER D
+<U0045> /x45 LATIN CAPITAL LETTER E
+<U0046> /x46 LATIN CAPITAL LETTER F
+<U0047> /x47 LATIN CAPITAL LETTER G
+<U0048> /x48 LATIN CAPITAL LETTER H
+<U0049> /x49 LATIN CAPITAL LETTER I
+<U004A> /x4a LATIN CAPITAL LETTER J
+<U004B> /x4b LATIN CAPITAL LETTER K
+<U004C> /x4c LATIN CAPITAL LETTER L
+<U004D> /x4d LATIN CAPITAL LETTER M
+<U004E> /x4e LATIN CAPITAL LETTER N
+<U004F> /x4f LATIN CAPITAL LETTER O
+<U0050> /x50 LATIN CAPITAL LETTER P
+<U0051> /x51 LATIN CAPITAL LETTER Q
+<U0052> /x52 LATIN CAPITAL LETTER R
+<U0053> /x53 LATIN CAPITAL LETTER S
+<U0054> /x54 LATIN CAPITAL LETTER T
+<U0055> /x55 LATIN CAPITAL LETTER U
+<U0056> /x56 LATIN CAPITAL LETTER V
+<U0057> /x57 LATIN CAPITAL LETTER W
+<U0058> /x58 LATIN CAPITAL LETTER X
+<U0059> /x59 LATIN CAPITAL LETTER Y
+<U005A> /x5a LATIN CAPITAL LETTER Z
+<U005B> /x5b LEFT SQUARE BRACKET
+<U005C> /x5c REVERSE SOLIDUS
+<U005D> /x5d RIGHT SQUARE BRACKET
+<U005E> /x5e CIRCUMFLEX ACCENT
+<U005F> /x5f LOW LINE
+<U0060> /x60 GRAVE ACCENT
+<U0061> /x61 LATIN SMALL LETTER A
+<U0062> /x62 LATIN SMALL LETTER B
+<U0063> /x63 LATIN SMALL LETTER C
+<U0064> /x64 LATIN SMALL LETTER D
+<U0065> /x65 LATIN SMALL LETTER E
+<U0066> /x66 LATIN SMALL LETTER F
+<U0067> /x67 LATIN SMALL LETTER G
+<U0068> /x68 LATIN SMALL LETTER H
+<U0069> /x69 LATIN SMALL LETTER I
+<U006A> /x6a LATIN SMALL LETTER J
+<U006B> /x6b LATIN SMALL LETTER K
+<U006C> /x6c LATIN SMALL LETTER L
+<U006D> /x6d LATIN SMALL LETTER M
+<U006E> /x6e LATIN SMALL LETTER N
+<U006F> /x6f LATIN SMALL LETTER O
+<U0070> /x70 LATIN SMALL LETTER P
+<U0071> /x71 LATIN SMALL LETTER Q
+<U0072> /x72 LATIN SMALL LETTER R
+<U0073> /x73 LATIN SMALL LETTER S
+<U0074> /x74 LATIN SMALL LETTER T
+<U0075> /x75 LATIN SMALL LETTER U
+<U0076> /x76 LATIN SMALL LETTER V
+<U0077> /x77 LATIN SMALL LETTER W
+<U0078> /x78 LATIN SMALL LETTER X
+<U0079> /x79 LATIN SMALL LETTER Y
+<U007A> /x7a LATIN SMALL LETTER Z
+<U007B> /x7b LEFT CURLY BRACKET
+<U007C> /x7c VERTICAL LINE
+<U007D> /x7d RIGHT CURLY BRACKET
+<U007E> /x7e TILDE
+<U007F> /x7f DELETE (DEL)
+<U00C7> /x80 LATIN CAPITAL LETTER C WITH CEDILLA
+<U00FC> /x81 LATIN SMALL LETTER U WITH DIAERESIS
+<U00E9> /x82 LATIN SMALL LETTER E WITH ACUTE
+<U00E2> /x83 LATIN SMALL LETTER A WITH CIRCUMFLEX
+<U00E4> /x84 LATIN SMALL LETTER A WITH DIAERESIS
+<U00E0> /x85 LATIN SMALL LETTER A WITH GRAVE
+<U00E5> /x86 LATIN SMALL LETTER A WITH RING ABOVE
+<U00E7> /x87 LATIN SMALL LETTER C WITH CEDILLA
+<U00EA> /x88 LATIN SMALL LETTER E WITH CIRCUMFLEX
+<U00EB> /x89 LATIN SMALL LETTER E WITH DIAERESIS
+<U00E8> /x8a LATIN SMALL LETTER E WITH GRAVE
+<U00EF> /x8b LATIN SMALL LETTER I WITH DIAERESIS
+<U00EE> /x8c LATIN SMALL LETTER I WITH CIRCUMFLEX
+<U00EC> /x8d LATIN SMALL LETTER I WITH GRAVE
+<U00C4> /x8e LATIN CAPITAL LETTER A WITH DIAERESIS
+<U00C5> /x8f LATIN CAPITAL LETTER A WITH RING ABOVE
+<U00C9> /x90 LATIN CAPITAL LETTER E WITH ACUTE
+<U00E6> /x91 LATIN SMALL LETTER AE
+<U00C6> /x92 LATIN CAPITAL LETTER AE
+<U00F4> /x93 LATIN SMALL LETTER O WITH CIRCUMFLEX
+<U00F6> /x94 LATIN SMALL LETTER O WITH DIAERESIS
+<U00F2> /x95 LATIN SMALL LETTER O WITH GRAVE
+<U00FB> /x96 LATIN SMALL LETTER U WITH CIRCUMFLEX
+<U00F9> /x97 LATIN SMALL LETTER U WITH GRAVE
+<U00FF> /x98 LATIN SMALL LETTER Y WITH DIAERESIS
+<U00D6> /x99 LATIN CAPITAL LETTER O WITH DIAERESIS
+<U00DC> /x9a LATIN CAPITAL LETTER U WITH DIAERESIS
+<U00F8> /x9b LATIN SMALL LETTER O WITH STROKE
+<U00A3> /x9c POUND SIGN
+<U00D8> /x9d LATIN CAPITAL LETTER O WITH STROKE
+<U00D7> /x9e MULTIPLICATION SIGN
+<U0192> /x9f LATIN SMALL LETTER F WITH HOOK
+<U00E1> /xa0 LATIN SMALL LETTER A WITH ACUTE
+<U00ED> /xa1 LATIN SMALL LETTER I WITH ACUTE
+<U00F3> /xa2 LATIN SMALL LETTER O WITH ACUTE
+<U00FA> /xa3 LATIN SMALL LETTER U WITH ACUTE
+<U00F1> /xa4 LATIN SMALL LETTER N WITH TILDE
+<U00D1> /xa5 LATIN CAPITAL LETTER N WITH TILDE
+<U00AA> /xa6 FEMININE ORDINAL INDICATOR
+<U00BA> /xa7 MASCULINE ORDINAL INDICATOR
+<U00BF> /xa8 INVERTED QUESTION MARK
+<U00AE> /xa9 REGISTERED SIGN
+<U00AC> /xaa NOT SIGN
+<U00BD> /xab VULGAR FRACTION ONE HALF
+<U00BC> /xac VULGAR FRACTION ONE QUARTER
+<U00A1> /xad INVERTED EXCLAMATION MARK
+<U00AB> /xae LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+<U00BB> /xaf RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+<U2591> /xb0 LIGHT SHADE
+<U2592> /xb1 MEDIUM SHADE
+<U2593> /xb2 DARK SHADE
+<U2502> /xb3 BOX DRAWINGS LIGHT VERTICAL
+<U2524> /xb4 BOX DRAWINGS LIGHT VERTICAL AND LEFT
+<U00C1> /xb5 LATIN CAPITAL LETTER A WITH ACUTE
+<U00C2> /xb6 LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+<U00C0> /xb7 LATIN CAPITAL LETTER A WITH GRAVE
+<U00A9> /xb8 COPYRIGHT SIGN
+<U2563> /xb9 BOX DRAWINGS DOUBLE VERTICAL AND LEFT
+<U2551> /xba BOX DRAWINGS DOUBLE VERTICAL
+<U2557> /xbb BOX DRAWINGS DOUBLE DOWN AND LEFT
+<U255D> /xbc BOX DRAWINGS DOUBLE UP AND LEFT
+<U00A2> /xbd CENT SIGN
+<U00A5> /xbe YEN SIGN
+<U2510> /xbf BOX DRAWINGS LIGHT DOWN AND LEFT
+<U2514> /xc0 BOX DRAWINGS LIGHT UP AND RIGHT
+<U2534> /xc1 BOX DRAWINGS LIGHT UP AND HORIZONTAL
+<U252C> /xc2 BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
+<U251C> /xc3 BOX DRAWINGS LIGHT VERTICAL AND RIGHT
+<U2500> /xc4 BOX DRAWINGS LIGHT HORIZONTAL
+<U253C> /xc5 BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
+<U00E3> /xc6 LATIN SMALL LETTER A WITH TILDE
+<U00C3> /xc7 LATIN CAPITAL LETTER A WITH TILDE
+<U255A> /xc8 BOX DRAWINGS DOUBLE UP AND RIGHT
+<U2554> /xc9 BOX DRAWINGS DOUBLE DOWN AND RIGHT
+<U2569> /xca BOX DRAWINGS DOUBLE UP AND HORIZONTAL
+<U2566> /xcb BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
+<U2560> /xcc BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
+<U2550> /xcd BOX DRAWINGS DOUBLE HORIZONTAL
+<U256C> /xce BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
+<U00A4> /xcf CURRENCY SIGN
+<U00F0> /xd0 LATIN SMALL LETTER ETH (Icelandic)
+<U00D0> /xd1 LATIN CAPITAL LETTER ETH (Icelandic)
+<U00CA> /xd2 LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+<U00CB> /xd3 LATIN CAPITAL LETTER E WITH DIAERESIS
+<U00C8> /xd4 LATIN CAPITAL LETTER E WITH GRAVE
+<U20AC> /xd5 EURO SIGN
+<U00CD> /xd6 LATIN CAPITAL LETTER I WITH ACUTE
+<U00CE> /xd7 LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+<U00CF> /xd8 LATIN CAPITAL LETTER I WITH DIAERESIS
+<U2518> /xd9 BOX DRAWINGS LIGHT UP AND LEFT
+<U250C> /xda BOX DRAWINGS LIGHT DOWN AND RIGHT
+<U2588> /xdb FULL BLOCK
+<U2584> /xdc LOWER HALF BLOCK
+<U00A6> /xdd BROKEN BAR
+<U00CC> /xde LATIN CAPITAL LETTER I WITH GRAVE
+<U2580> /xdf UPPER HALF BLOCK
+<U00D3> /xe0 LATIN CAPITAL LETTER O WITH ACUTE
+<U00DF> /xe1 LATIN SMALL LETTER SHARP S (German)
+<U00D4> /xe2 LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+<U00D2> /xe3 LATIN CAPITAL LETTER O WITH GRAVE
+<U00F5> /xe4 LATIN SMALL LETTER O WITH TILDE
+<U00D5> /xe5 LATIN CAPITAL LETTER O WITH TILDE
+<U00B5> /xe6 MICRO SIGN
+<U00FE> /xe7 LATIN SMALL LETTER THORN (Icelandic)
+<U00DE> /xe8 LATIN CAPITAL LETTER THORN (Icelandic)
+<U00DA> /xe9 LATIN CAPITAL LETTER U WITH ACUTE
+<U00DB> /xea LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+<U00D9> /xeb LATIN CAPITAL LETTER U WITH GRAVE
+<U00FD> /xec LATIN SMALL LETTER Y WITH ACUTE
+<U00DD> /xed LATIN CAPITAL LETTER Y WITH ACUTE
+<U00AF> /xee MACRON
+<U00B4> /xef ACUTE ACCENT
+<U00AD> /xf0 SOFT HYPHEN
+<U00B1> /xf1 PLUS-MINUS SIGN
+<U2017> /xf2 DOUBLE LOW LINE
+<U00BE> /xf3 VULGAR FRACTION THREE QUARTERS
+<U00B6> /xf4 PILCROW SIGN
+<U00A7> /xf5 SECTION SIGN
+<U00F7> /xf6 DIVISION SIGN
+<U00B8> /xf7 CEDILLA
+<U00B0> /xf8 DEGREE SIGN
+<U00A8> /xf9 DIAERESIS
+<U00B7> /xfa MIDDLE DOT
+<U00B9> /xfb SUPERSCRIPT ONE
+<U00B3> /xfc SUPERSCRIPT THREE
+<U00B2> /xfd SUPERSCRIPT TWO
+<U25A0> /xfe BLACK SQUARE
+<U00A0> /xff NO-BREAK SPACE
+END CHARMAP

View File

@ -1,48 +0,0 @@
Upstream thread:
https://sourceware.org/ml/libc-alpha/2017-07/msg00487.html
Relevant analysis:
_int_malloc is inlined into tcache_init, and the allocation size is
constant-propagated into it. GCC does not realize that global_max_fast
is limited MAX_FAST_SIZE, so it compiles the true branch of the if
statement:
if ((unsigned long) (nb) <= (unsigned long) (get_max_fast ()))
{
idx = fastbin_index (nb);
mfastbinptr *fb = &fastbin (av, idx);
mchunkptr pp = *fb;
REMOVE_FB (fb, victim, pp);
if (victim != 0)
under the assumption that nb == sizeof (tcache_perthread_struct) == 576,
which is larger than MAX_FAST_SIZE, so the fastbin access is compiled
into an OOB array subscript. GCC does not proceed to eliminate this
code, even though it has undefined behavior and will never execute in
practice.
This is neither a glibc bug nor a GCC bug. It merely reflects the
difficulty of producing good warnings from optimizers. But it does
break the build in rawhide due to -Werror.
Index: b/malloc/malloc.c
===================================================================
--- a/malloc/malloc.c
+++ b/malloc/malloc.c
@@ -3566,6 +3566,14 @@ _int_malloc (mstate av, size_t bytes)
while ((pp = catomic_compare_and_exchange_val_acq (fb, victim->fd, victim)) \
!= victim); \
+ /* _int_malloc can be inlined to a caller with a constant size
+ argument. In this case, the compiler will see an out-of-bounds
+ array access in the true branch of the if statement below if it
+ cannot show that global_max_fast cannot be larger than
+ MAX_FAST_SIZE. The assert shows the compiler that this cannot
+ happen. */
+ assert (!__builtin_constant_p (nb) || global_max_fast <= MAX_FAST_SIZE);
+
if ((unsigned long) (nb) <= (unsigned long) (get_max_fast ()))
{
idx = fastbin_index (nb);

View File

@ -0,0 +1,609 @@
The system call list is in a separate file for easier updating.
diff --git a/sysdeps/unix/sysv/linux/syscall-names.list b/sysdeps/unix/sysv/linux/syscall-names.list
new file mode 100644
index 0000000000..2e5cc77fe0
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/syscall-names.list
@@ -0,0 +1,601 @@
+# List of all known Linux system calls.
+# Copyright (C) 2017 Free Software Foundation, Inc.
+# This file is part of the GNU C Library.
+#
+# The GNU C Library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+#
+# The GNU C Library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with the GNU C Library; if not, see
+# <http://www.gnu.org/licenses/>.
+
+# This file contains the list of system call names names. It has to
+# remain in alphabetica order. Lines which start with # are treated
+# as comments. This file can list all potential system calls. The
+# names are only used if the installed kernel headers also provide
+# them.
+
+# The list of system calls is current as of Linux 4.12.
+kernel 4.12
+
+FAST_atomic_update
+FAST_cmpxchg
+FAST_cmpxchg64
+_llseek
+_newselect
+_sysctl
+accept
+accept4
+access
+acct
+acl_get
+acl_set
+add_key
+adjtimex
+afs_syscall
+alarm
+alloc_hugepages
+arch_prctl
+arm_fadvise64_64
+arm_sync_file_range
+atomic_barrier
+atomic_cmpxchg_32
+attrctl
+bdflush
+bind
+bpf
+break
+brk
+cachectl
+cacheflush
+capget
+capset
+chdir
+chmod
+chown
+chown32
+chroot
+clock_adjtime
+clock_getres
+clock_gettime
+clock_nanosleep
+clock_settime
+clone
+clone2
+close
+cmpxchg_badaddr
+connect
+copy_file_range
+creat
+create_module
+delete_module
+dipc
+dup
+dup2
+dup3
+epoll_create
+epoll_create1
+epoll_ctl
+epoll_ctl_old
+epoll_pwait
+epoll_wait
+epoll_wait_old
+eventfd
+eventfd2
+exec_with_loader
+execv
+execve
+execveat
+exit
+exit_group
+faccessat
+fadvise64
+fadvise64_64
+fallocate
+fanotify_init
+fanotify_mark
+fchdir
+fchmod
+fchmodat
+fchown
+fchown32
+fchownat
+fcntl
+fcntl64
+fdatasync
+fgetxattr
+finit_module
+flistxattr
+flock
+fork
+free_hugepages
+fremovexattr
+fsetxattr
+fstat
+fstat64
+fstatat64
+fstatfs
+fstatfs64
+fsync
+ftime
+ftruncate
+ftruncate64
+futex
+futimesat
+get_kernel_syms
+get_mempolicy
+get_robust_list
+get_thread_area
+getcpu
+getcwd
+getdents
+getdents64
+getdomainname
+getdtablesize
+getegid
+getegid32
+geteuid
+geteuid32
+getgid
+getgid32
+getgroups
+getgroups32
+gethostname
+getitimer
+getpagesize
+getpeername
+getpgid
+getpgrp
+getpid
+getpmsg
+getppid
+getpriority
+getrandom
+getresgid
+getresgid32
+getresuid
+getresuid32
+getrlimit
+getrusage
+getsid
+getsockname
+getsockopt
+gettid
+gettimeofday
+getuid
+getuid32
+getunwind
+getxattr
+getxgid
+getxpid
+getxuid
+gtty
+idle
+init_module
+inotify_add_watch
+inotify_init
+inotify_init1
+inotify_rm_watch
+io_cancel
+io_destroy
+io_getevents
+io_setup
+io_submit
+ioctl
+ioperm
+iopl
+ioprio_get
+ioprio_set
+ipc
+kcmp
+kern_features
+kexec_file_load
+kexec_load
+keyctl
+kill
+lchown
+lchown32
+lgetxattr
+link
+linkat
+listen
+listxattr
+llistxattr
+llseek
+lock
+lookup_dcookie
+lremovexattr
+lseek
+lsetxattr
+lstat
+lstat64
+madvise
+mbind
+membarrier
+memfd_create
+memory_ordering
+migrate_pages
+mincore
+mkdir
+mkdirat
+mknod
+mknodat
+mlock
+mlock2
+mlockall
+mmap
+mmap2
+modify_ldt
+mount
+move_pages
+mprotect
+mpx
+mq_getsetattr
+mq_notify
+mq_open
+mq_timedreceive
+mq_timedsend
+mq_unlink
+mremap
+msgctl
+msgget
+msgrcv
+msgsnd
+msync
+multiplexer
+munlock
+munlockall
+munmap
+name_to_handle_at
+nanosleep
+newfstatat
+nfsservctl
+ni_syscall
+nice
+old_adjtimex
+oldfstat
+oldlstat
+oldolduname
+oldstat
+oldumount
+olduname
+open
+open_by_handle_at
+openat
+osf_adjtime
+osf_afs_syscall
+osf_alt_plock
+osf_alt_setsid
+osf_alt_sigpending
+osf_asynch_daemon
+osf_audcntl
+osf_audgen
+osf_chflags
+osf_execve
+osf_exportfs
+osf_fchflags
+osf_fdatasync
+osf_fpathconf
+osf_fstat
+osf_fstatfs
+osf_fstatfs64
+osf_fuser
+osf_getaddressconf
+osf_getdirentries
+osf_getdomainname
+osf_getfh
+osf_getfsstat
+osf_gethostid
+osf_getitimer
+osf_getlogin
+osf_getmnt
+osf_getrusage
+osf_getsysinfo
+osf_gettimeofday
+osf_kloadcall
+osf_kmodcall
+osf_lstat
+osf_memcntl
+osf_mincore
+osf_mount
+osf_mremap
+osf_msfs_syscall
+osf_msleep
+osf_mvalid
+osf_mwakeup
+osf_naccept
+osf_nfssvc
+osf_ngetpeername
+osf_ngetsockname
+osf_nrecvfrom
+osf_nrecvmsg
+osf_nsendmsg
+osf_ntp_adjtime
+osf_ntp_gettime
+osf_old_creat
+osf_old_fstat
+osf_old_getpgrp
+osf_old_killpg
+osf_old_lstat
+osf_old_open
+osf_old_sigaction
+osf_old_sigblock
+osf_old_sigreturn
+osf_old_sigsetmask
+osf_old_sigvec
+osf_old_stat
+osf_old_vadvise
+osf_old_vtrace
+osf_old_wait
+osf_oldquota
+osf_pathconf
+osf_pid_block
+osf_pid_unblock
+osf_plock
+osf_priocntlset
+osf_profil
+osf_proplist_syscall
+osf_reboot
+osf_revoke
+osf_sbrk
+osf_security
+osf_select
+osf_set_program_attributes
+osf_set_speculative
+osf_sethostid
+osf_setitimer
+osf_setlogin
+osf_setsysinfo
+osf_settimeofday
+osf_shmat
+osf_signal
+osf_sigprocmask
+osf_sigsendset
+osf_sigstack
+osf_sigwaitprim
+osf_sstk
+osf_stat
+osf_statfs
+osf_statfs64
+osf_subsys_info
+osf_swapctl
+osf_swapon
+osf_syscall
+osf_sysinfo
+osf_table
+osf_uadmin
+osf_usleep_thread
+osf_uswitch
+osf_utc_adjtime
+osf_utc_gettime
+osf_utimes
+osf_utsname
+osf_wait4
+osf_waitid
+pause
+pciconfig_iobase
+pciconfig_read
+pciconfig_write
+perf_event_open
+perfctr
+perfmonctl
+personality
+pipe
+pipe2
+pivot_root
+pkey_alloc
+pkey_free
+pkey_mprotect
+poll
+ppoll
+prctl
+pread64
+preadv
+preadv2
+prlimit64
+process_vm_readv
+process_vm_writev
+prof
+profil
+pselect6
+ptrace
+putpmsg
+pwrite64
+pwritev
+pwritev2
+query_module
+quotactl
+read
+readahead
+readdir
+readlink
+readlinkat
+readv
+reboot
+recv
+recvfrom
+recvmmsg
+recvmsg
+remap_file_pages
+removexattr
+rename
+renameat
+renameat2
+request_key
+restart_syscall
+rmdir
+rt_sigaction
+rt_sigpending
+rt_sigprocmask
+rt_sigqueueinfo
+rt_sigreturn
+rt_sigsuspend
+rt_sigtimedwait
+rt_tgsigqueueinfo
+rtas
+s390_guarded_storage
+s390_pci_mmio_read
+s390_pci_mmio_write
+s390_runtime_instr
+sched_get_affinity
+sched_get_priority_max
+sched_get_priority_min
+sched_getaffinity
+sched_getattr
+sched_getparam
+sched_getscheduler
+sched_rr_get_interval
+sched_set_affinity
+sched_setaffinity
+sched_setattr
+sched_setparam
+sched_setscheduler
+sched_yield
+seccomp
+security
+select
+semctl
+semget
+semop
+semtimedop
+send
+sendfile
+sendfile64
+sendmmsg
+sendmsg
+sendto
+set_mempolicy
+set_robust_list
+set_thread_area
+set_tid_address
+setdomainname
+setfsgid
+setfsgid32
+setfsuid
+setfsuid32
+setgid
+setgid32
+setgroups
+setgroups32
+sethae
+sethostname
+setitimer
+setns
+setpgid
+setpgrp
+setpriority
+setregid
+setregid32
+setresgid
+setresgid32
+setresuid
+setresuid32
+setreuid
+setreuid32
+setrlimit
+setsid
+setsockopt
+settimeofday
+setuid
+setuid32
+setxattr
+sgetmask
+shmat
+shmctl
+shmdt
+shmget
+shutdown
+sigaction
+sigaltstack
+signal
+signalfd
+signalfd4
+sigpending
+sigprocmask
+sigreturn
+sigsuspend
+socket
+socketcall
+socketpair
+splice
+spu_create
+spu_run
+ssetmask
+stat
+stat64
+statfs
+statfs64
+statx
+stime
+stty
+subpage_prot
+swapcontext
+swapoff
+swapon
+switch_endian
+symlink
+symlinkat
+sync
+sync_file_range
+sync_file_range2
+syncfs
+sys_debug_setcontext
+sys_epoll_create
+sys_epoll_ctl
+sys_epoll_wait
+syscall
+sysfs
+sysinfo
+syslog
+sysmips
+tee
+tgkill
+time
+timer_create
+timer_delete
+timer_getoverrun
+timer_gettime
+timer_settime
+timerfd
+timerfd_create
+timerfd_gettime
+timerfd_settime
+times
+tkill
+truncate
+truncate64
+tuxcall
+ugetrlimit
+ulimit
+umask
+umount
+umount2
+uname
+unlink
+unlinkat
+unshare
+uselib
+userfaultfd
+ustat
+utime
+utimensat
+utimes
+utrap_install
+vfork
+vhangup
+vm86
+vm86old
+vmsplice
+vserver
+wait4
+waitid
+waitpid
+write
+writev

372
glibc-rh1484729.patch Normal file
View File

@ -0,0 +1,372 @@
See glibc-rh1484729-syscall-names.patch for the actual system call list.
commit 2dba5ce7b8115d6a2789bf279892263621088e74
Author: Florian Weimer <fweimer@redhat.com>
Date: Mon Aug 28 11:31:23 2017 +0200
<bits/syscall.h>: Use an arch-independent system call list on Linux
This commit changes the way the list of SYS_* system call macros is
created on Linux. glibc now contains a list of all known system
calls, and the generated <bits/syscall.h> file defines the SYS_ macro
only if the correspnding __NR_ macro is defined by the kernel headers.
As a result, glibc does not have to be rebuilt to pick up system calls
if the glibc sources already know about them. This means that glibc
can be built with older kernel headers, and if the installed kernel
headers are upgraded afterwards, additional SYS_ macros become
available as long as glibc has a record for those system calls.
diff --git a/sysdeps/unix/sysv/linux/Makefile b/sysdeps/unix/sysv/linux/Makefile
index b1fe960d0080b01f..69edb75209702dfc 100644
--- a/sysdeps/unix/sysv/linux/Makefile
+++ b/sysdeps/unix/sysv/linux/Makefile
@@ -53,74 +53,48 @@ tests += tst-clone tst-clone2 tst-clone3 tst-fanotify tst-personality \
tst-quota tst-sync_file_range tst-sysconf-iov_max tst-ttyname \
test-errno-linux
-# Generate the list of SYS_* macros for the system calls (__NR_* macros).
-
-# If there is more than one syscall list for different architecture
-# variants, the CPU/Makefile defines abi-variants to be a list of names
-# for those variants (e.g. 32 64), and, for each variant, defines
-# abi-$(variant)-options to be compiler options to cause <asm/unistd.h>
-# to define the desired list of syscalls and abi-$(variant)-condition to
-# be the condition for those options to use in a C #if condition.
-# abi-includes may be defined to a list of headers to include
-# in the generated header, if the default does not suffice.
-#
-# The generated header is compiled with `-ffreestanding' to avoid any
-# circular dependencies against the installed implementation headers.
-# Such a dependency would require the implementation header to be
-# installed before the generated header could be built (See bug 15711).
-# In current practice the generated header dependencies do not include
-# any of the implementation headers removed by the use of `-ffreestanding'.
-
-$(objpfx)bits/syscall%h $(objpfx)bits/syscall%d: ../sysdeps/unix/sysv/linux/sys/syscall.h
+# Generate the list of SYS_* macros for the system calls (__NR_*
+# macros). The file syscall-names.list contains all possible system
+# call names, and the generated header file produces SYS_* macros for
+# the __NR_* macros which are actually defined.
+
+generated += bits/syscall.h
+$(objpfx)bits/syscall.h: \
+ ../sysdeps/unix/sysv/linux/gen-syscall-h.awk \
+ ../sysdeps/unix/sysv/linux/syscall-names.list
$(make-target-directory)
- { \
- echo '/* Generated at libc build time from kernel syscall list. */';\
- echo ''; \
- echo '#ifndef _SYSCALL_H'; \
- echo '# error "Never use <bits/syscall.h> directly; include <sys/syscall.h> instead."'; \
- echo '#endif'; \
- echo ''; \
- $(foreach h,$(abi-includes), echo '#include <$(h)>';) \
- echo ''; \
- $(if $(abi-variants), \
- $(foreach v,$(abi-variants),\
- $(CC) -ffreestanding -E -MD -MP -MF $(@:.h=.d)-t$(v) -MT '$(@:.d=.h) $(@:.h=.d)' \
- -x c $(sysincludes) $< $(abi-$(v)-options) \
- -D_LIBC -dM | \
- sed -n 's@^#define __NR_\([^ ]*\) .*$$@#define SYS_\1 __NR_\1@p' | \
- LC_ALL=C sort > $(@:.d=.h).new$(v); \
- $(if $(abi-$(v)-condition),\
- echo '#if $(abi-$(v)-condition)';) \
- cat $(@:.d=.h).new$(v); \
- $(if $(abi-$(v)-condition),echo '#endif';) \
- rm -f $(@:.d=.h).new$(v); \
- ), \
- $(CC) -ffreestanding -E -MD -MP -MF $(@:.h=.d)-t$(v) -MT '$(@:.d=.h) $(@:.h=.d)' \
- -x c $(sysincludes) $< \
- -D_LIBC -dM | \
- sed -n 's@^#define __NR_\([^ ]*\) .*$$@#define SYS_\1 __NR_\1@p' | \
- LC_ALL=C sort;) \
- } > $(@:.d=.h).new
- mv -f $(@:.d=.h).new $(@:.d=.h)
-ifdef abi-variants
-ifneq (,$(objpfx))
- sed $(sed-remove-objpfx) \
- $(foreach v,$(abi-variants),$(@:.h=.d)-t$(v)) > $(@:.h=.d)-t3
-else
- cat $(foreach v,$(abi-variants),$(@:.h=.d)-t$(v)) \
- > $(@:.h=.d)-t3
-endif
- rm -f $(foreach v,$(abi-variants),$(@:.h=.d)-t$(v))
- mv -f $(@:.h=.d)-t3 $(@:.h=.d)
-else
- mv -f $(@:.h=.d)-t $(@:.h=.d)
-endif
-
-ifndef no_deps
-# Get the generated list of dependencies (probably /usr/include/asm/unistd.h).
--include $(objpfx)bits/syscall.d
-endif
-generated += bits/syscall.h bits/syscall.d
+ LC_ALL=C $(AWK) -f $^ > $@-tmp
+ $(move-if-change) $@-tmp $@
+before-compile += $(objpfx)bits/syscall.h
+
+# All macros defined by <sys/syscall.h>. Include <bits/syscall.h>
+# explicitly because <sys/sycall.h> skips it if _LIBC is defined.
+$(objpfx)tst-syscall-list-macros.list: \
+ $(objpfx)bits/syscall.h ../sysdeps/unix/sysv/linux/sys/syscall.h
+ printf '#include <linux/version.h>\n\
+#include <sys/syscall.h>\n#include <bits/syscall.h>\n' | \
+ $(CC) -E -o $@-tmp $(CFLAGS) $(CPPFLAGS) -x c - -dM
+ $(move-if-change) $@-tmp $@
+
+# __NR_* system call names. Used by the test below.
+$(objpfx)tst-syscall-list-nr.list: \
+ ../sysdeps/unix/sysv/linux/filter-nr-syscalls.awk \
+ $(objpfx)tst-syscall-list-macros.list
+ LC_ALL=C $(AWK) -f $^ > $@-tmp
+ $(move-if-change) $@-tmp $@
+
+# SYS_* system call names. Used by the test below.
+$(objpfx)tst-syscall-list-sys.list: $(objpfx)tst-syscall-list-macros.list
+ LC_ALL=C $(AWK) '/^#define SYS_/ { print substr($$2, 5) }' $< > $@-tmp
+ $(move-if-change) $@-tmp $@
+
+tests-special += $(objpfx)tst-syscall-list.out
+$(objpfx)tst-syscall-list.out: \
+ ../sysdeps/unix/sysv/linux/tst-syscall-list.sh \
+ $(objpfx)tst-syscall-list-macros.list \
+ $(objpfx)tst-syscall-list-nr.list \
+ $(objpfx)tst-syscall-list-sys.list
+ $(BASH) $^ $(AWK) > $@; $(evaluate-test)
# Separate object file for access to the constant from the UAPI header.
$(objpfx)tst-sysconf-iov_max: $(objpfx)tst-sysconf-iov_max-uapi.o
diff --git a/sysdeps/unix/sysv/linux/filter-nr-syscalls.awk b/sysdeps/unix/sysv/linux/filter-nr-syscalls.awk
new file mode 100644
index 0000000000000000..15b052a9c9bb4f5b
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/filter-nr-syscalls.awk
@@ -0,0 +1,35 @@
+# Filter preprocessor __NR_* macros and extract system call names.
+# Copyright (C) 2017 Free Software Foundation, Inc.
+# This file is part of the GNU C Library.
+#
+# The GNU C Library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+#
+# The GNU C Library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with the GNU C Library; if not, see
+# <http://www.gnu.org/licenses/>.
+
+# Skip reserved system calls.
+/^#define __NR_(unused|reserved)[0-9]+ / {
+ next;
+}
+
+# Skip pseudo-system calls which describe ranges.
+/^#define __NR_(syscalls|arch_specific_syscall|(OABI_)?SYSCALL_BASE) / {
+ next;
+}
+/^#define __NR_(|64_|[NO]32_)Linux(_syscalls)? / {
+ next;
+}
+
+# Print the remaining _NR_* macros as system call names.
+/^#define __NR_/ {
+ print substr($2, 6);
+}
diff --git a/sysdeps/unix/sysv/linux/gen-syscall-h.awk b/sysdeps/unix/sysv/linux/gen-syscall-h.awk
new file mode 100644
index 0000000000000000..ef8eb6be5270c5f8
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/gen-syscall-h.awk
@@ -0,0 +1,81 @@
+# Generate SYS_* macros from a list in a text file.
+# Copyright (C) 2017 Free Software Foundation, Inc.
+# This file is part of the GNU C Library.
+#
+# The GNU C Library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+#
+# The GNU C Library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with the GNU C Library; if not, see
+# <http://www.gnu.org/licenses/>.
+
+# Emit a conditional definition for SYS_NAME.
+function emit(name) {
+ print "#ifdef __NR_" name;
+ print "# define SYS_" name " __NR_" name;
+ print "#endif";
+ print "";
+}
+
+# Bail out with an error.
+function fatal(message) {
+ print FILENAME ":" FNR ": " message > "/dev/stderr";
+ exit 1;
+}
+
+BEGIN {
+ name = "";
+ kernel = "";
+}
+
+# Skip empty lines and comments.
+/^\s*(|#.*)$/ {
+ next;
+}
+
+# Kernel version. Used for documentation purposes only.
+/^kernel [0-9.]+$/ {
+ if (kernel != "") {
+ fatal("duplicate kernel directive");
+ }
+ kernel = $2;
+ print "/* Generated at libc build time from syscall list. */";
+ print "/* The system call list corresponds to kernel " kernel ". */";
+ print "";
+ print "#ifndef _SYSCALL_H"
+ print "# error \"Never use <bits/syscall.h> directly; include <sys/syscall.h> instead.\"";
+ print "#endif";
+ print "";
+ split($2, kernel_version, ".");
+ kernel_major = kernel_version[1];
+ kernel_minor = kernel_version[2];
+ kernel_version_code = kernel_major * 65536 + kernel_minor * 256;
+ print "#define __GLIBC_LINUX_VERSION_CODE " kernel_version_code;
+ print "";
+ next;
+}
+
+# If there is just one word, it is a system call.
+/^[a-zA-Z_][a-zA-Z0-9_]+$/ {
+ if (kernel == "") {
+ fatal("expected kernel directive before this line");
+ }
+ if ($1 <= name) {
+ fatal("name " name " violates ordering");
+ }
+ emit($1);
+ name = $1;
+ next;
+}
+
+# The rest has to be syntax errors.
+// {
+ fatal("unrecognized syntax");
+}
diff --git a/sysdeps/unix/sysv/linux/tst-syscall-list.sh b/sysdeps/unix/sysv/linux/tst-syscall-list.sh
new file mode 100644
index 0000000000000000..8474cf888f8dab73
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/tst-syscall-list.sh
@@ -0,0 +1,99 @@
+#!/bin/bash
+# Consistency checks for the system call list
+# Copyright (C) 2017 Free Software Foundation, Inc.
+# This file is part of the GNU C Library.
+#
+# The GNU C Library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+#
+# The GNU C Library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with the GNU C Library; if not, see
+# <http://www.gnu.org/licenses/>.
+
+export LC_ALL=C
+set -e
+set -o pipefail
+
+if test $# != 4; then
+ echo "error: wrong number of arguments: $#"
+ exit 1
+fi
+
+macros="$1"
+list_nr="$2"
+list_sys="$3"
+GAWK="$4"
+
+linux_version="$("$GAWK" \
+ '/#define LINUX_VERSION_CODE / {print $3}' < "$macros")"
+glibc_linux_version="$("$GAWK" \
+ '/#define __GLIBC_LINUX_VERSION_CODE / {print $3}' < "$macros")"
+
+echo "info: LINUX_VERSION_CODE: $linux_version"
+echo "info: __GLIBC_LINUX_VERSION_CODE: $glibc_linux_version"
+# Ignore the subrelease in the comparison.
+if test $(expr "$glibc_linux_version" / 256) \
+ -lt $(expr "$linux_version" / 256); then
+ echo "info: The kernel major/minor version is newer than the glibc version"
+ kernel_newer=true
+else
+ kernel_newer=false
+fi
+echo
+
+errors=0
+
+# Use getpid as a system call which is expected to be always defined.
+# alpha uses getxpid instead, so it is permitted as an alternative.
+if ! grep -E -q '^getx?pid$' -- "$list_nr"; then
+ echo "error: __NR_getpid not defined"
+ errors=1
+fi
+if ! grep -E -q '^getx?pid$' -- "$list_sys"; then
+ echo "error: SYS_getpid not defined"
+ errors=1
+fi
+
+comm_1="$(mktemp)"
+comm_2="$(mktemp)"
+comm_result="$(mktemp)"
+cleanup () {
+ rm -f -- "$comm_1" "$comm_2" "$comm_result"
+}
+trap cleanup 0
+
+sort -o "$comm_1" -- "$list_nr"
+sort -o "$comm_2" -- "$list_sys"
+
+# Check for missing SYS_* macros.
+comm --check-order -2 -3 -- "$comm_1" "$comm_2" > "$comm_result"
+if test -s "$comm_result"; then
+ echo "error: These system calls need to be added to syscall-names.list:"
+ cat -- "$comm_result"
+ # This is only an error if our version is older than the kernel
+ # version because we cannot predict future kernel development.
+ if $kernel_newer; then
+ echo
+ echo "warning: This error has been ignored because the glibc"
+ echo "warning: system call list is older than the kernel version."
+ else
+ errors=1
+ fi
+fi
+
+# Check for additional SYS_* macros.
+comm --check-order -1 -3 -- "$comm_1" "$comm_2" > "$comm_result"
+if test -s "$comm_result"; then
+ echo "error: The following system calls have unexpected SYS_* macros:"
+ cat -- "$comm_result"
+ errors=1
+fi
+
+exit "$errors"

81
glibc-rh1498880-1.patch Normal file
View File

@ -0,0 +1,81 @@
commit 91e7cf982d0104f0e71770f5ae8e3faf352dea9f
Author: Florian Weimer <fweimer@redhat.com>
Date: Thu Oct 5 14:48:16 2017 +0200
abort: Do not flush stdio streams [BZ #15436]
diff --git a/stdlib/abort.c b/stdlib/abort.c
index 19882f3e3dc1ab83..117a507ff88d8624 100644
--- a/stdlib/abort.c
+++ b/stdlib/abort.c
@@ -31,9 +31,6 @@
# define ABORT_INSTRUCTION
#endif
-#include <libio/libioP.h>
-#define fflush(s) _IO_flush_all_lockp (0)
-
/* Exported variable to locate abort message in core files etc. */
struct abort_msg_s *__abort_msg __attribute__ ((nocommon));
libc_hidden_def (__abort_msg)
@@ -67,16 +64,8 @@ abort (void)
__sigprocmask (SIG_UNBLOCK, &sigs, 0);
}
- /* Flush all streams. We cannot close them now because the user
- might have registered a handler for SIGABRT. */
- if (stage == 1)
- {
- ++stage;
- fflush (NULL);
- }
-
/* Send signal which possibly calls a user handler. */
- if (stage == 2)
+ if (stage == 1)
{
/* This stage is special: we must allow repeated calls of
`abort' when a user defined handler for SIGABRT is installed.
@@ -94,7 +83,7 @@ abort (void)
}
/* There was a handler installed. Now remove it. */
- if (stage == 3)
+ if (stage == 2)
{
++stage;
memset (&act, '\0', sizeof (struct sigaction));
@@ -104,30 +93,22 @@ abort (void)
__sigaction (SIGABRT, &act, NULL);
}
- /* Now close the streams which also flushes the output the user
- defined handler might has produced. */
- if (stage == 4)
- {
- ++stage;
- __fcloseall ();
- }
-
/* Try again. */
- if (stage == 5)
+ if (stage == 3)
{
++stage;
raise (SIGABRT);
}
/* Now try to abort using the system specific command. */
- if (stage == 6)
+ if (stage == 4)
{
++stage;
ABORT_INSTRUCTION;
}
/* If we can't signal ourselves and the abort instruction failed, exit. */
- if (stage == 7)
+ if (stage == 5)
{
++stage;
_exit (127);

153
glibc-rh1498880-2.patch Normal file
View File

@ -0,0 +1,153 @@
commit 19f82f358670f4b80533156b9edbf81223358bf9
Author: Andreas Schwab <schwab@suse.de>
Date: Mon Aug 21 16:07:29 2017 +0200
Always do locking when iterating over list of streams (bug 15142)
_IO_list_all should only be traversed while locking list_all_lock.
diff --git a/libio/genops.c b/libio/genops.c
index 6ad7346cae5c169d..89376d1b9bd7cf65 100644
--- a/libio/genops.c
+++ b/libio/genops.c
@@ -38,10 +38,6 @@
static _IO_lock_t list_all_lock = _IO_lock_initializer;
#endif
-/* Used to signal modifications to the list of FILE decriptors. */
-static int _IO_list_all_stamp;
-
-
static _IO_FILE *run_fp;
#ifdef _IO_MTSAFE_IO
@@ -69,16 +65,12 @@ _IO_un_link (struct _IO_FILE_plus *fp)
if (_IO_list_all == NULL)
;
else if (fp == _IO_list_all)
- {
- _IO_list_all = (struct _IO_FILE_plus *) _IO_list_all->file._chain;
- ++_IO_list_all_stamp;
- }
+ _IO_list_all = (struct _IO_FILE_plus *) _IO_list_all->file._chain;
else
for (f = &_IO_list_all->file._chain; *f; f = &(*f)->_chain)
if (*f == (_IO_FILE *) fp)
{
*f = fp->file._chain;
- ++_IO_list_all_stamp;
break;
}
fp->file._flags &= ~_IO_LINKED;
@@ -106,7 +98,6 @@ _IO_link_in (struct _IO_FILE_plus *fp)
#endif
fp->file._chain = (_IO_FILE *) _IO_list_all;
_IO_list_all = fp;
- ++_IO_list_all_stamp;
#ifdef _IO_MTSAFE_IO
_IO_funlockfile ((_IO_FILE *) fp);
run_fp = NULL;
@@ -794,17 +785,13 @@ _IO_flush_all_lockp (int do_lock)
{
int result = 0;
struct _IO_FILE *fp;
- int last_stamp;
#ifdef _IO_MTSAFE_IO
- __libc_cleanup_region_start (do_lock, flush_cleanup, NULL);
- if (do_lock)
- _IO_lock_lock (list_all_lock);
+ _IO_cleanup_region_start_noarg (flush_cleanup);
+ _IO_lock_lock (list_all_lock);
#endif
- last_stamp = _IO_list_all_stamp;
- fp = (_IO_FILE *) _IO_list_all;
- while (fp != NULL)
+ for (fp = (_IO_FILE *) _IO_list_all; fp != NULL; fp = fp->_chain)
{
run_fp = fp;
if (do_lock)
@@ -823,21 +810,11 @@ _IO_flush_all_lockp (int do_lock)
if (do_lock)
_IO_funlockfile (fp);
run_fp = NULL;
-
- if (last_stamp != _IO_list_all_stamp)
- {
- /* Something was added to the list. Start all over again. */
- fp = (_IO_FILE *) _IO_list_all;
- last_stamp = _IO_list_all_stamp;
- }
- else
- fp = fp->_chain;
}
#ifdef _IO_MTSAFE_IO
- if (do_lock)
- _IO_lock_unlock (list_all_lock);
- __libc_cleanup_region_end (0);
+ _IO_lock_unlock (list_all_lock);
+ _IO_cleanup_region_end (0);
#endif
return result;
@@ -856,16 +833,13 @@ void
_IO_flush_all_linebuffered (void)
{
struct _IO_FILE *fp;
- int last_stamp;
#ifdef _IO_MTSAFE_IO
_IO_cleanup_region_start_noarg (flush_cleanup);
_IO_lock_lock (list_all_lock);
#endif
- last_stamp = _IO_list_all_stamp;
- fp = (_IO_FILE *) _IO_list_all;
- while (fp != NULL)
+ for (fp = (_IO_FILE *) _IO_list_all; fp != NULL; fp = fp->_chain)
{
run_fp = fp;
_IO_flockfile (fp);
@@ -875,15 +849,6 @@ _IO_flush_all_linebuffered (void)
_IO_funlockfile (fp);
run_fp = NULL;
-
- if (last_stamp != _IO_list_all_stamp)
- {
- /* Something was added to the list. Start all over again. */
- fp = (_IO_FILE *) _IO_list_all;
- last_stamp = _IO_list_all_stamp;
- }
- else
- fp = fp->_chain;
}
#ifdef _IO_MTSAFE_IO
@@ -919,6 +884,12 @@ static void
_IO_unbuffer_all (void)
{
struct _IO_FILE *fp;
+
+#ifdef _IO_MTSAFE_IO
+ _IO_cleanup_region_start_noarg (flush_cleanup);
+ _IO_lock_lock (list_all_lock);
+#endif
+
for (fp = (_IO_FILE *) _IO_list_all; fp; fp = fp->_chain)
{
if (! (fp->_flags & _IO_UNBUFFERED)
@@ -961,6 +932,11 @@ _IO_unbuffer_all (void)
used. */
fp->_mode = -1;
}
+
+#ifdef _IO_MTSAFE_IO
+ _IO_lock_unlock (list_all_lock);
+ _IO_cleanup_region_end (0);
+#endif
}

22
glibc-rh1615608.patch Normal file
View File

@ -0,0 +1,22 @@
Please see the following bug for a complete summary:
https://bugzilla.redhat.com/show_bug.cgi?id=1615608
Index: glibc-2.28/manual/startup.texi
===================================================================
--- glibc-2.28.orig/manual/startup.texi
+++ glibc-2.28/manual/startup.texi
@@ -1005,14 +1005,6 @@ This function actually terminates the pr
intercept this signal; see @ref{Signal Handling}.
@end deftypefun
-@c Put in by rms. Don't remove.
-@cartouche
-@strong{Future Change Warning:} Proposed Federal censorship regulations
-may prohibit us from giving you information about the possibility of
-calling this function. We would be required to say that this is not an
-acceptable way of terminating a program.
-@end cartouche
-
@node Termination Internals
@subsection Termination Internals

View File

@ -1,13 +0,0 @@
diff -rup a/manual/Makefile b/manual/Makefile
--- a/manual/Makefile 2012-05-20 19:47:38.000000000 -0600
+++ b/manual/Makefile 2012-05-29 22:23:33.920428631 -0600
@@ -129,7 +129,8 @@ $(objpfx)%.c.texi: examples/%.c
mv -f $@.new $@
$(objpfx)%.info: %.texinfo
- LANGUAGE=C LC_ALL=C $(MAKEINFO) -P $(objpfx) --output=$@ $<
+ LANGUAGE=C LC_ALL=C $(MAKEINFO) -P $(objpfx) --output=`basename $@` $<
+ mv `basename $@`* $(objpfx)
$(objpfx)%.dvi: %.texinfo
cd $(objpfx);$(TEXI2DVI) -I $(shell cd $(<D) && pwd) --output=$@ \

1415
glibc.spec

File diff suppressed because it is too large Load Diff

View File

@ -165,43 +165,6 @@ main (void)
"--nostdlib", iconv_dir);
}
/* Check if telinit is available and either SysVInit fifo,
or upstart telinit. */
if (access ("/sbin/telinit", X_OK)
|| ((!!access ("/dev/initctl", F_OK))
^ !access ("/sbin/initctl", X_OK)))
_exit (0);
/* Check if we are not inside of some chroot, because we'd just
timeout and leave /etc/initrunlvl.
On more modern systems this test is not sufficient to detect
if we're in a chroot. */
if (readlink ("/proc/1/exe", initpath, 256) <= 0 ||
readlink ("/proc/1/root", initpath, 256) <= 0)
_exit (0);
/* Here's another well known way to detect chroot, at least on an
ext and xfs filesystems and assuming nothing mounted on the chroot's
root. */
if (stat ("/", &statbuf) != 0
|| (statbuf.st_ino != 2
&& statbuf.st_ino != 128))
_exit (0);
if (check_elf ("/proc/1/exe"))
verbose_exec (116, "/sbin/telinit", "/sbin/telinit", "u");
/* Check if we can safely condrestart sshd. */
if (access ("/sbin/service", X_OK) == 0
&& access ("/usr/sbin/sshd", X_OK) == 0
&& access ("/etc/rc.d/init.d/sshd", X_OK) == 0
&& access ("/bin/bash", X_OK) == 0)
{
if (check_elf ("/usr/sbin/sshd"))
verbose_exec (-121, "/sbin/service", "/sbin/service", "sshd", "condrestart");
}
_exit(0);
}

View File

@ -1 +1 @@
SHA512 (glibc-2.26-19-g2aad4b0.tar.gz) = b9c20cbc76594a2392963aee47e457a0b0aa1c3ee9fb3a8e1ccc685176ada0b12ed51e855fc155c7395e62bd3e5799aa3650f6039eaf85b96c3a8465c43295a7
SHA512 (glibc-2.26-174-g174709d879.tar.gz) = 74542e3be74044d03a9ab136be8d63db000379c1e7b515c95dd62ec6a74339f051dfa4c6b041e564f73870f7dbe6985a49794f58341d0c7b57da4c06c0155e23