Debian

Available patches from Ubuntu

To see Ubuntu differences wrt. to Debian, write down a grep-dctrl query identifying the packages you're interested in:
grep-dctrl -n -sPackage Sources.Debian
(e.g. -FPackage linux-ntfs or linux-ntfs)

Modified packages are listed below:

Debian ( Changelog | PTS | Bugs ) Ubuntu ( Changelog | txt | LP | Bugs ) | Diff from Ubuntu

Source: glibc

glibc (2.30-0ubuntu1) eoan; urgency=medium * Merge with current 2.30 in Debian git (LP: #1842024), remaining changes: - Enable libc6{,-dev}-armel on armhf and libc6{-dev}-armhf on armel. - Heavily mangle the way we do service restarting on major upgrades. - Build i386 variants as -march=i686, build amd64 with -O3, and build ppc64 variants (both 64-bit and 32-bit) with -O3 -fno-tree-vectorize. - Build generic i386 flavour with -mno-tls-direct-seg-refs for Xen. - Drop the libc6-xen flavour, as the above change covers Xen's needs. - Enable systemtap support, which is currently disabled in Debian. - Don't build libc-l10n, its contents get stripped for language-packs. - Drop libc-bin manpages Recommends to Suggests to keep it in standard. - Revert dropping the ldconfig wrapper, as we still have a lot of packages that don't ship a trigger but instead call in postinst. - Use DH_COMPAT=8 for dh_strip to fix debug sections for valgrind. - Mangle locales package to support Ubuntu language packs seamlessly. - Relax some expected test failures for our infrastructure's quirks. * Let nptl/tst-stack4 fail, as it's been racing on several architectures. -- Adam Conrad <adconrad@ubuntu.com> Thu, 29 Aug 2019 04:14:59 -0600 glibc (2.30-0experimental0) UNRELEASED; urgency=medium [ Adam Conrad ] * New upstream release 2.30, with git updates up to 2019-08-28: - debian/symbols.wildcard: Add 2.30, and debian/control: Regenerate. - debian/patches/any/git-libio-stdout-putc.diff: Upstreamed. - debian/patches/any/git-pexpect-pretty-printers.diff: Upstreamed. - debian/patches/any/git-socket-constants.diff: Upstreamed. - debian/patches/any/local-tst-eintr1-eagain.diff: Obsolete. - debian/patches/hurd-i386/git-renameat2.diff: Upstreamed. - debian/patches/any/submitted-resolv-unaligned.diff: Rebased. - debian/patches/hurd-i386/tg-hurdsig-SA_SIGINFO.diff: Rebased. - debian/patches/hurd-i386/tg-hurdsig-fixes-2.diff: Rebased. - debian/patches/hurd-i386/tg-hurdsig-fixes.diff: Rebased. - debian/patches/hurd-i386/tg-hurdsig-global-dispositions.diff: Rebased. - debian/patches/hurd-i386/tg-io_select_timeout.diff: Rebased. - debian/patches/hurd-i386/tg-thread-cancel.diff: Rebased. - debian/patches/kfreebsd/submitted-auxv.diff: Rebased. - debian/patches/locale/locale-print-LANGUAGE.diff: Update for new test. [ Samuel Thibault ] * debian/patches/hurd-i386/local-fix-nss.diff: Rebased. * debian/patches/hurd-i386/{tg-single-select-timeout.diff,tg-setitimer.diff, tg-remap_getcwd.diff,tg-io_select_timeout.diff,tg-poll_errors_fixes.diff, submitted-anon-mmap-shared.diff,tg-ONSTACK.diff}: Rename to git-foo, commited upstream for 2.31. -- Adam Conrad <adconrad@0c3.net> Thu, 29 Aug 2019 01:58:14 -0600

Modifications :
  1. Download patch benchtests/isfinite-inputs

    --- 2.29-1/benchtests/isfinite-inputs 1970-01-01 00:00:00.000000000 +0000 +++ 2.30-0ubuntu1/benchtests/isfinite-inputs 2019-08-01 04:29:31.000000000 +0000 @@ -0,0 +1,21 @@ +## includes: math.h +## args: double +## ret: int +0.9 +2.3 +3.7 +3.9 +4.0 +4.7 +5.9 +0x1.000000cf4a2a1p0 +0x1.0000010b239a8p0 +0x1.00000162a932ap0 +0x1.000002d452a11p0 +0x1.000005bc7d86cp0 +## name: INF +__builtin_inf () +-__builtin_inf () +## name: NAN +__builtin_nan ("") +__builtin_nans ("")
  2. Download patch benchtests/bench-strncat.c

    --- 2.29-1/benchtests/bench-strncat.c 2019-01-31 16:45:36.000000000 +0000 +++ 2.30-0ubuntu1/benchtests/bench-strncat.c 2019-08-01 04:29:31.000000000 +0000 @@ -21,45 +21,37 @@ # define TEST_NAME "strncat" #else # define TEST_NAME "wcsncat" +# define generic_strncat generic_wcsncat #endif /* WIDE */ #include "bench-string.h" #define BIG_CHAR MAX_CHAR #ifndef WIDE -# define SIMPLE_STRNCAT simple_strncat -# define STUPID_STRNCAT stupid_strncat # define SMALL_CHAR 127 #else -# define SIMPLE_STRNCAT simple_wcsncat -# define STUPID_STRNCAT stupid_wcsncat # define SMALL_CHAR 1273 #endif /* WIDE */ typedef CHAR *(*proto_t) (CHAR *, const CHAR *, size_t); -CHAR *STUPID_STRNCAT (CHAR *, const CHAR *, size_t); -CHAR *SIMPLE_STRNCAT (CHAR *, const CHAR *, size_t); - -IMPL (STUPID_STRNCAT, 0) -IMPL (STRNCAT, 2) CHAR * -STUPID_STRNCAT (CHAR *dst, const CHAR *src, size_t n) +generic_strncat (CHAR *dst, const CHAR *src, size_t n) { - CHAR *ret = dst; - while (*dst++ != '\0'); - --dst; - while (n--) - if ((*dst++ = *src++) == '\0') - return ret; - *dst = '\0'; - return ret; + CHAR *end = dst + STRLEN (dst); + n = STRNLEN (src, n); + end[n] = 0; + MEMCPY (end, src, n); + return dst; } +IMPL (STRNCAT, 2) +IMPL (generic_strncat, 0) + static void do_one_test (impl_t *impl, CHAR *dst, const CHAR *src, size_t n) { - size_t k = STRLEN (dst), i, iters = INNER_LOOP_ITERS; + size_t k = STRLEN (dst), i, iters = INNER_LOOP_ITERS8; timing_t start, stop, cur; if (CALL (impl, dst, src, n) != dst)
  3. Download patch conform/data/stropts.h-data

    --- 2.29-1/conform/data/stropts.h-data 2019-01-31 16:45:36.000000000 +0000 +++ 2.30-0ubuntu1/conform/data/stropts.h-data 1970-01-01 00:00:00.000000000 +0000 @@ -1,140 +0,0 @@ -#if !defined ISO && !defined ISO99 && !defined ISO11 && !defined POSIX && !defined XPG4 -type {struct bandinfo} - -element {struct bandinfo} {unsigned char} bi_pri -element {struct bandinfo} int bi_flag - -type {struct strpeek} - -element {struct strpeek} {struct strbuf} ctlbuf -element {struct strpeek} {struct strbuf} databuf -element {struct strpeek} t_uscalar_t flags - -type {struct strbuf} - -element {struct strbuf} int maxlen -element {struct strbuf} int len -element {struct strbuf} {char*} buf - -type {struct strfdinsert} - -element {struct strfdinsert} {struct strbuf} ctlbuf -element {struct strfdinsert} {struct strbuf} databuf -element {struct strfdinsert} t_uscalar_t flags -element {struct strfdinsert} int fildes -element {struct strfdinsert} int offset - -type {struct strioctl} - -element {struct strioctl} int ic_cmd -element {struct strioctl} int ic_timout -element {struct strioctl} int ic_len -element {struct strioctl} {char*} ic_dp - -type {struct strrecvfd} - -element {struct strrecvfd} int fd -element {struct strrecvfd} uid_t uid -element {struct strrecvfd} gid_t gid - -type uid_t -type gid_t - -type t_uscalar_t - -type {struct str_list} - -element {struct str_list} int sl_nmods -element {struct str_list} {struct str_mlist*} sl_modlist - -type {struct str_mlist} - -element {struct str_mlist} char l_name [FMNAMESZ+1] - -macro I_PUSH -macro I_POP -macro I_LOOK -macro FMNAMESZ -macro I_FLUSH -macro FLUSHR -macro FLUSHW -macro FLUSHRW -macro I_FLUSHBAND -macro I_SETSIG -macro S_RDNORM -macro S_RDBAND -macro S_INPUT -macro S_HIPRI -macro S_OUTPUT -macro S_WRNORM -macro S_WRBAND -macro S_MSG -macro S_ERROR -macro S_HANGUP -macro S_BANDURG -macro I_GETSIG -macro I_FIND -macro I_PEEK -macro RS_HIPRI -macro I_SRDOPT -macro RNORM -macro RMSGD -macro RMSGN -macro RPROTNORM -macro RPROTDAT -macro RPROTDIS -macro I_GRDOPT -macro I_NREAD -macro I_FDINSERT -macro I_STR -macro I_SWROPT -macro SNDZERO -macro I_GWROPT -macro I_SENDFD -macro I_RECVFD -macro I_LIST -macro I_ATMARK -macro ANYMARK -macro LASTMARK -macro I_CKBAND -macro I_GETBAND -macro I_CANPUT -macro I_SETCLTIME -macro I_GETCLTIME -macro I_LINK -macro I_UNLINK -macro I_PLINK -macro I_PUNLINK - -macro MSG_ANY -macro MSG_BAND -macro MSG_HIPRI -macro MORECTL -macro MOREDATA - -function int isastream (int) -function int getmsg (int, struct strbuf*, struct strbuf*, int*) -function int getpmsg (int, struct strbuf*, struct strbuf*, int*, int*) -// Bug 14362: wrong type for ioctl. -xfail-function int ioctl (int, int, ...) -function int putmsg (int, const struct strbuf*, const struct strbuf*, int) -function int putpmsg (int, const struct strbuf*, const struct strbuf*, int, int) -function int fattach (int, const char*) -function int fdetach (const char*) - -allow-header unistd.h - -allow bi_* -allow ic_* -allow l_* -allow sl_* -allow str_* -allow FLUSH* -allow I_* -allow M_* -allow MUXID_R* -allow S_* -allow SND* -allow STR* -allow *_t -#endif
  4. Download patch benchtests/bench-strspn.c

    --- 2.29-1/benchtests/bench-strspn.c 2019-01-31 16:45:36.000000000 +0000 +++ 2.30-0ubuntu1/benchtests/bench-strspn.c 2019-08-01 04:29:31.000000000 +0000 @@ -28,19 +28,15 @@ #ifndef WIDE # define SIMPLE_STRSPN simple_strspn -# define STUPID_STRSPN stupid_strspn # define SMALL_CHAR 127 #else # define SIMPLE_STRSPN simple_wcsspn -# define STUPID_STRSPN stupid_wcsspn # define SMALL_CHAR 1273 #endif /* WIDE */ typedef size_t (*proto_t) (const CHAR *, const CHAR *); size_t SIMPLE_STRSPN (const CHAR *, const CHAR *); -size_t STUPID_STRSPN (const CHAR *, const CHAR *); -IMPL (STUPID_STRSPN, 0) IMPL (SIMPLE_STRSPN, 0) IMPL (STRSPN, 1) @@ -61,27 +57,10 @@ SIMPLE_STRSPN (const CHAR *s, const CHAR return s - str - 1; } -size_t -STUPID_STRSPN (const CHAR *s, const CHAR *acc) -{ - size_t ns = STRLEN (s), nacc = STRLEN (acc); - size_t i, j; - - for (i = 0; i < ns; ++i) - { - for (j = 0; j < nacc; ++j) - if (s[i] == acc[j]) - break; - if (j == nacc) - return i; - } - return i; -} - static void do_one_test (impl_t *impl, const CHAR *s, const CHAR *acc, size_t exp_res) { - size_t res = CALL (impl, s, acc), i, iters = INNER_LOOP_ITERS; + size_t res = CALL (impl, s, acc), i, iters = INNER_LOOP_ITERS_MEDIUM; timing_t start, stop, cur; if (res != exp_res)
  5. Download patch benchtests/bench-wcsnlen.c

    --- 2.29-1/benchtests/bench-wcsnlen.c 2019-01-31 16:45:36.000000000 +0000 +++ 2.30-0ubuntu1/benchtests/bench-wcsnlen.c 2019-08-01 04:29:31.000000000 +0000 @@ -17,4 +17,5 @@ <http://www.gnu.org/licenses/>. */ #define WIDE 1 +#define __wmemchr wmemchr #include "bench-strnlen.c"
  6. Download patch benchtests/bench-strtod.c

    --- 2.29-1/benchtests/bench-strtod.c 2019-01-31 16:45:36.000000000 +0000 +++ 2.30-0ubuntu1/benchtests/bench-strtod.c 2019-08-01 04:29:31.000000000 +0000 @@ -24,7 +24,7 @@ #include "bench-timing.h" #undef INNER_LOOP_ITERS -#define INNER_LOOP_ITERS 65536 +#define INNER_LOOP_ITERS 131072 static const char *inputs[] = { @@ -89,9 +89,6 @@ int do_bench (void) { const size_t iters = INNER_LOOP_ITERS; - timing_t res __attribute__ ((unused)); - - TIMING_INIT (res); for (size_t i = 0; inputs[i] != NULL; ++i) {
  7. Download patch debian/debhelper.in/libc-bin.lintian-overrides

    --- 2.29-1/debian/debhelper.in/libc-bin.lintian-overrides 2019-08-16 10:57:32.000000000 +0000 +++ 2.30-0ubuntu1/debian/debhelper.in/libc-bin.lintian-overrides 2019-08-29 10:14:59.000000000 +0000 @@ -1,12 +1,15 @@ # ldconfig must be executable even when the libc is not configured, and # thus must be linked statically -libc-bin: statically-linked-binary sbin/ldconfig +libc-bin: statically-linked-binary sbin/ldconfig.real # pt_chown must be setuid root and in /usr/lib, otherwise non-root users # won't be able to login libc-bin: setuid-binary usr/lib/pt_chown 4755 root/root libc-bin: sharedobject-in-library-directory-missing-soname usr/lib/pt_chown +# ldconfig.real doesn't have a manpage, since it's just ldconfig renamed +libc-bin: binary-without-manpage sbin/ldconfig.real + # ldconfig is called in the postinst for trigger support libc-bin: postinst-has-useless-call-to-ldconfig
  8. Download patch debian/control.in/main

    --- 2.29-1/debian/control.in/main 2019-09-08 20:31:59.000000000 +0000 +++ 2.30-0ubuntu1/debian/control.in/main 2019-08-29 10:14:59.000000000 +0000 @@ -3,19 +3,20 @@ Section: libs Priority: required Build-Depends: gettext, dpkg (>= 1.18.7), dpkg-dev (>= 1.17.14), xz-utils, file, quilt, autoconf, gawk, debhelper (>= 10), rdfind, symlinks, netbase, gperf, bison, - linux-libc-dev (>= 3.9) [linux-any], + linux-libc-dev (>= 3.9) [linux-any], systemtap-sdt-dev [linux-any], libaudit-dev [linux-any], libcap-dev [linux-any], libselinux-dev [linux-any], mig (>= 1.5-3) [hurd-i386], gnumach-dev (>= 2:1.8+git20181103-1~) [hurd-i386], hurd-dev (>= 1:0.9.git20181030-1) [hurd-i386] | hurd-headers-dev [hurd-i386], hurd-dev (>= 1:0.9.git20181030-1) [hurd-i386] <!stage1> | libihash-dev [hurd-i386] <!stage1>, kfreebsd-kernel-headers [kfreebsd-any], binutils (>= 2.29), - g++-9, g++-9-multilib [amd64 i386 kfreebsd-amd64 mips mipsel mipsn32 mipsn32el mips64 mips64el mipsr6 mipsr6el mipsn32r6 mipsn32r6el mips64r6 mips64r6el powerpc ppc64 s390x sparc sparc64 x32] <!nobiarch>, + g++-8 [alpha], g++-9, g++-9-multilib [amd64 armhf armel i386 kfreebsd-amd64 mips mipsel mipsn32 mipsn32el mips64 mips64el mipsr6 mipsr6el mipsn32r6 mipsn32r6el mips64r6 mips64r6el powerpc ppc64 s390x sparc sparc64 x32] <!nobiarch>, python3:native <!nocheck>, libidn2-0 (>= 2.0.5~) <!nocheck>, libc-bin (>= @GLIBC_VERSION@) <cross> Build-Depends-Indep: perl, po-debconf (>= 1.0) -Maintainer: GNU Libc Maintainers <debian-glibc@lists.debian.org> +Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com> +XSBC-Original-Maintainer: GNU Libc Maintainers <debian-glibc@lists.debian.org> Uploaders: Clint Adams <clint@debian.org>, Aurelien Jarno <aurel32@debian.org>, Adam Conrad <adconrad@0c3.net>, Samuel Thibault <sthibault@debian.org> Standards-Version: 4.2.1 Vcs-Browser: https://salsa.debian.org/glibc-team/glibc @@ -29,7 +30,7 @@ Priority: required Essential: yes Multi-Arch: foreign Depends: ${shlibs:Depends}, ${misc:Depends} -Recommends: manpages +Suggests: manpages Build-Profiles: <!stage1> Description: GNU C Library: Binaries This package contains utility programs related to the GNU C Library. @@ -72,8 +73,7 @@ Architecture: all Section: doc Priority: optional Multi-Arch: foreign -Depends: ${misc:Depends} -Suggests: glibc-doc-reference +Depends: ${misc:Depends}, glibc-doc-reference (>= 2.18) Build-Profiles: <!stage1> Description: GNU C Library: Documentation Contains man pages for libpthread functions and the complete GNU C Library @@ -99,8 +99,9 @@ Package: locales Architecture: all Section: localization Priority: standard -Depends: libc-bin (>> @GLIBC_VERSION@), libc-l10n (>> @GLIBC_VERSION@), ${misc:Depends}, debconf | debconf-2.0 -Replaces: manpages-fr-extra (<< 20141022) +Depends: libc-bin (>> @GLIBC_VERSION@), ${misc:Depends}, debconf | debconf-2.0 +Breaks: libc-bin (<< 2.23) +Replaces: libc-bin (<< 2.23), manpages-fr-extra (<< 20141022) Build-Profiles: <!stage1> Description: GNU C Library: National Language (locale) data [support] Machine-readable data files, shared objects and programs used by the @@ -117,7 +118,7 @@ Architecture: any Section: localization Priority: optional Multi-Arch: foreign -Depends: libc-l10n (>> @GLIBC_VERSION@), ${misc:Depends} +Depends: ${misc:Depends} Breaks: locales (<< 2.13-17) Build-Profiles: <!stage1> Description: GNU C Library: Precompiled locale data
  9. Download patch debian/local/usr_sbin/locale-gen

    --- 2.29-1/debian/local/usr_sbin/locale-gen 2019-07-29 09:56:57.000000000 +0000 +++ 2.30-0ubuntu1/debian/local/usr_sbin/locale-gen 2019-08-29 10:14:59.000000000 +0000 @@ -1,10 +1,12 @@ -#!/bin/sh +#!/bin/bash set -e LOCALEGEN=/etc/locale.gen LOCALES=/usr/share/i18n/locales USER_LOCALES=/usr/local/share/i18n/locales +SUPPORTED=/var/lib/locales/supported.d +ALIASES=/usr/share/locale/locale.alias if [ -n "$POSIXLY_CORRECT" ]; then unset POSIXLY_CORRECT fi @@ -14,14 +16,89 @@ fi [ -s $LOCALEGEN ] || exit 0; KEEP= -if [ "$1" = '--keep-existing' ]; then - KEEP=1 -fi +IS_LANG=no +ARCHIVE=yes + +# Handle command-line options +prev= +while true +do + option="$1" + if [ -n "$prev" ]; then + eval "$prev=\$option" + prev= + continue + fi + + case $option in + -h|--help) + cat <<EOT +Usage: locale-gen [OPTIONS] +Options: + -h, --help display this message and exit + --purge remove existing locales before processing + --archive store compiled locale data inside a single archive + --no-archive do not store compiled locale data inside a single archive + (default) + --aliases=FILE read locale aliases from FILE. (Default: /etc/locale.alias) + --lang treat argument as generic language code +EOT + exit 0 + ;; + --purge) + # This is the default when called without arguments + ;; + --no-purge) + KEEP=1 + ;; + --archive) + ARCHIVE=yes + ;; + --no-archive) + ARCHIVE=no + ;; + --keep-existing) + KEEP=1 + ;; + --aliases) + prev=ALIASES + ;; + --aliases=*) + ALIASES=$(expr "x$option" : 'x[^=]*=\(.*\)') + ;; + --lang) + IS_LANG=yes + ;; + --*) + echo "locale-gen: invalid option -- $option" + echo "Try 'locale-gen --help' for more information." + exit 1 + ;; + *) + break + ;; + esac + + shift +done + +no_archive= +[ "$ARCHIVE" = yes ] || no_archive="--no-archive" +locale_alias= +[ -n "$ALIASES" ] && [ -r "$ALIASES" ] && locale_alias="-A $ALIASES" -if [ -z "$KEEP" ]; then +if [ -z "$1" ] && [ -z "$KEEP" ]; then # Remove all old locale dir and locale-archive before generating new # locale data. rm -rf /usr/lib/locale/locale-archive || true + for dir in /usr/lib/locale/*; do + [ -e "$dir" ] || continue + if [ "${dir#/usr/lib/locale/}" = C.UTF-8 ]; then + # owned by libc-bin + continue + fi + rm -rf "$dir" 2>/dev/null || true + done fi umask 022 @@ -35,8 +112,46 @@ is_entry_ok() { fi } +add_to_locale_gen() { + echo "$1" | while read locale; do + if ! grep -q "^[# ]*$locale *\$" $LOCALEGEN; then + echo "# $locale" >> $LOCALEGEN + fi + sed -i -e "0,/^[# ]*$locale *$/ s/^[# ]*$locale *$/$locale/" $LOCALEGEN + done +} + +if [ -z "$1" ]; then + GENERATE="`cat $SUPPORTED/* $LOCALEGEN 2>/dev/null || true`" +else + GENERATE= + while [ -n "$1" ]; do + if [ -f "$SUPPORTED/$1" ]; then + GENERATE="$GENERATE\n`cat $SUPPORTED/$1`" + elif [ $IS_LANG = no ] && L=`grep "^${1/%.utf8/.UTF-8} " /usr/share/i18n/SUPPORTED`; then + # convert utf8 to UTF-8 and check if the requested locale exists + GENERATE="$GENERATE\n$L" + add_to_locale_gen "$L" + elif [ $IS_LANG = no ] && L=`grep "^${1%.[uU][tT][fF]*} UTF-8" /usr/share/i18n/SUPPORTED`; then + # recognize 'll_CC.UTF-8' or 'll_CC.utf8' as ll_CC without codeset + GENERATE="$GENERATE\n$L" + add_to_locale_gen "$L" + else + # try to come up with a sensible default + L=`grep -E "^${1}( |[._@][^[:space:]]* )UTF-8" /usr/share/i18n/SUPPORTED || true` + if [ -z "$L" ]; then + echo "Error: '$1' is not a supported language or locale" >&2 + exit 1 + fi + GENERATE="$GENERATE\n$L" + add_to_locale_gen "$L" + fi + shift + done +fi + echo "Generating locales (this might take a while)..." -while read locale charset; do \ +echo -e "$GENERATE" | sort -u | while read locale charset; do \ case $locale in \#*) continue;; "") continue;; esac; \ is_entry_ok || continue if [ "$KEEP" ] && PERL_BADLANG=0 perl -MPOSIX -e \ @@ -57,7 +172,7 @@ while read locale charset; do \ input=$USER_LOCALES/$input fi fi - localedef -i $input -c -f $charset -A /usr/share/locale/locale.alias $locale || :; \ + localedef $no_archive -i $input -c -f $charset $locale_alias $locale || :; \ echo ' done'; \ -done < $LOCALEGEN +done echo "Generation complete."
  10. Download patch bits/math-finite.h
  11. Download patch debian/patches/any/local-tst-eintr1-eagain.diff

    --- 2.29-1/debian/patches/any/local-tst-eintr1-eagain.diff 2019-08-31 13:13:50.000000000 +0000 +++ 2.30-0ubuntu1/debian/patches/any/local-tst-eintr1-eagain.diff 1970-01-01 00:00:00.000000000 +0000 @@ -1,25 +0,0 @@ -2012-06-06 Jonathan Nieder <jrnieder@gmail.com> - - * nptl/tst-eintr1.c (tf1): Tolerate EAGAIN from pthread_create. - ---- - ---- a/nptl/tst-eintr1.c -+++ b/nptl/tst-eintr1.c -@@ -49,6 +49,16 @@ - puts ("pthread_create returned EINTR"); - exit (1); - } -+ if (e == EAGAIN) -+ { -+ /* The kernel might not have processed the last few -+ pthread_join()s yet. Tolerate that, but record the -+ event in test output so attentive people reading -+ logs can notice if pthread_join() stops working -+ altogether. */ -+ write (STDOUT_FILENO, "!", 1); -+ continue; -+ } - - char buf[100]; - printf ("tf1: pthread_create failed: %s\n",
  12. Download patch benchtests/logb-inputs

    --- 2.29-1/benchtests/logb-inputs 1970-01-01 00:00:00.000000000 +0000 +++ 2.30-0ubuntu1/benchtests/logb-inputs 2019-08-01 04:29:31.000000000 +0000 @@ -0,0 +1,11 @@ +## args: double +## ret: double +## includes: math.h + +## name: subnormal +0x0.0000000000001p-1022 +0x0.fffffffffffffp-1022 + +## name: normal +1.0 +1024.0
  13. Download patch debian/control.in/libc

    --- 2.29-1/debian/control.in/libc 2019-09-08 20:31:59.000000000 +0000 +++ 2.30-0ubuntu1/debian/control.in/libc 2019-08-29 10:14:59.000000000 +0000 @@ -5,15 +5,16 @@ Priority: optional Multi-Arch: same Depends: ${shlibs:Depends}, ${libgcc:Depends} Recommends: libidn2-0 (>= 2.0.5~) -Suggests: glibc-doc, debconf | debconf-2.0, libc-l10n, locales [!hurd-i386] -Provides: libc6-sparcv9b [sparc sparc64], libc0.1-i686 [kfreebsd-i386], libc0.3-i686 [hurd-i386], libc6-i686 [i386] -Conflicts: libc6-loongson2f [mipsel], libc0.1-i686 [kfreebsd-i386], libc6-i686 [i386], openrc (<< 0.27-2~) -Breaks: nscd (<< @GLIBC_VERSION@), locales (<< @GLIBC_VERSION@), locales-all (<< @GLIBC_VERSION@), hurd (<< 1:0.9.git20170910-1), libtirpc1 (<< 0.2.3), r-cran-later (<< 0.7.5+dfsg-2), nocache (<< 1.1-1~), iraf-fitsutil (<< 2018.07.06-4) +Suggests: glibc-doc, debconf | debconf-2.0, locales [!hurd-i386] +Provides: libc6-sparcv9b [sparc sparc64], libc0.1-i686 [kfreebsd-i386], libc0.3-i686 [hurd-i386], libc6-i686 [i386], libc6-xen [i386], libc6-armel [armel], libc6-armhf [armhf] +Conflicts: libc6-loongson2f [mipsel], libc0.1-i686 [kfreebsd-i386], libc6-i686 [i386], openrc (<< 0.27-2~), libc6-xen [i386] +Breaks: nscd (<< @GLIBC_VERSION@), locales (<< @GLIBC_VERSION@), locales-all (<< @GLIBC_VERSION@), hurd (<< 1:0.9.git20170910-1), libtirpc1 (<< 0.2.3), r-cran-later (<< 0.7.5+dfsg-2), nocache (<< 1.1-1~) Replaces: libc6-amd64 [amd64], libc6-i386 [i386], libc0.1-i686 [kfreebsd-i386], libc0.3-i686 [hurd-i386], libc6-i686 [i386], + libc6-xen [i386], libc6-x32 [x32], libc0.1-i386 [kfreebsd-i386], libc6-powerpc [powerpc], @@ -38,7 +39,7 @@ Multi-Arch: same Depends: @libc@ (= ${binary:Version}) <!stage1>, libc-dev-bin (= ${binary:Version}), ${misc:Depends}, linux-libc-dev [linux-any], kfreebsd-kernel-headers (>= 0.11) [kfreebsd-any], gnumach-dev [hurd-i386], hurd-dev (>= 20080607-3) [hurd-i386] | hurd-headers-dev [hurd-i386] Replaces: hurd-dev (<< 20120408-3) [hurd-i386], kfreebsd-kernel-headers (<< 10.3~4) [kfreebsd-amd64 kfreebsd-i386] Suggests: glibc-doc, manpages-dev -Provides: libc-dev, libc6-dev [alpha ia64 hurd-i386 kfreebsd-i386 kfreebsd-amd64] +Provides: libc-dev, libc6-dev [alpha ia64 hurd-i386 kfreebsd-i386 kfreebsd-amd64], libc6-dev-armel [armel], libc6-dev-armhf [armhf] Breaks: binutils (<< 2.26), binutils-gold (<< 2.20.1-11), cmake (<< 2.8.4+dfsg.1-5), gcc-4.4 (<< 4.4.6-4), gcc-4.5 (<< 4.5.3-2), gcc-4.6 (<< 4.6.0-12), make (<< 3.81-8.1), pkg-config (<< 0.26-1), libjna-java (<< 3.2.7-4), liblouis-dev (<< 2.3.0-2), liblouisxml-dev (<< 2.4.0-2), libhwloc-dev (<< 1.2-3), check (<< 0.9.10-6.1+b1) [s390x], kfreebsd-kernel-headers (<< 10.3~4) [kfreebsd-amd64 kfreebsd-i386], libperl5.26 (<< 5.26.1-3) Conflicts: @libc-dev-conflict@ Description: GNU C Library: Development Libraries and Header Files
  14. Download patch benchtests/bench-malloc-thread.c

    --- 2.29-1/benchtests/bench-malloc-thread.c 2019-01-31 16:45:36.000000000 +0000 +++ 2.30-0ubuntu1/benchtests/bench-malloc-thread.c 2019-08-01 04:29:31.000000000 +0000 @@ -31,7 +31,7 @@ #include "json-lib.h" /* Benchmark duration in seconds. */ -#define BENCHMARK_DURATION 60 +#define BENCHMARK_DURATION 10 #define RAND_SEED 88 #ifndef NUM_THREADS @@ -225,7 +225,6 @@ main (int argc, char **argv) { timing_t cur; size_t iters = 0, num_threads = 1; - unsigned long res; json_ctx_t json_ctx; double d_total_s, d_total_i; struct sigaction act; @@ -261,10 +260,6 @@ main (int argc, char **argv) json_attr_object_begin (&json_ctx, ""); - TIMING_INIT (res); - - (void) res; - memset (&act, 0, sizeof (act)); act.sa_handler = &alarm_handler;
  15. Download patch bits/dirent_ext.h

    --- 2.29-1/bits/dirent_ext.h 1970-01-01 00:00:00.000000000 +0000 +++ 2.30-0ubuntu1/bits/dirent_ext.h 2019-08-01 04:29:31.000000000 +0000 @@ -0,0 +1,21 @@ +/* System-specific extensions of <dirent.h>, generic version. + Copyright (C) 2019 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/>. */ + +#ifndef _DIRENT_H +# error "Never include <bits/dirent_ext.h> directly; use <dirent.h> instead." +#endif
  16. Download patch benchtests/bench-memccpy.c

    --- 2.29-1/benchtests/bench-memccpy.c 2019-01-31 16:45:36.000000000 +0000 +++ 2.30-0ubuntu1/benchtests/bench-memccpy.c 2019-08-01 04:29:31.000000000 +0000 @@ -20,28 +20,8 @@ #define TEST_NAME "memccpy" #include "bench-string.h" -void *simple_memccpy (void *, const void *, int, size_t); -void *stupid_memccpy (void *, const void *, int, size_t); - -IMPL (stupid_memccpy, 0) -IMPL (simple_memccpy, 0) -IMPL (memccpy, 1) - -void * -simple_memccpy (void *dst, const void *src, int c, size_t n) -{ - const char *s = src; - char *d = dst; - - while (n-- > 0) - if ((*d++ = *s++) == (char) c) - return d; - - return NULL; -} - void * -stupid_memccpy (void *dst, const void *src, int c, size_t n) +generic_memccpy (void *dst, const void *src, int c, size_t n) { void *p = memchr (src, c, n); @@ -52,13 +32,16 @@ stupid_memccpy (void *dst, const void *s return NULL; } +IMPL (memccpy, 1) +IMPL (generic_memccpy, 0) + typedef void *(*proto_t) (void *, const void *, int c, size_t); static void do_one_test (impl_t *impl, void *dst, const void *src, int c, size_t len, size_t n) { - size_t i, iters = INNER_LOOP_ITERS; + size_t i, iters = INNER_LOOP_ITERS_LARGE; timing_t start, stop, cur; TIMING_NOW (start);
  17. Download patch argp/bits/argp-ldbl.h

    --- 2.29-1/argp/bits/argp-ldbl.h 1970-01-01 00:00:00.000000000 +0000 +++ 2.30-0ubuntu1/argp/bits/argp-ldbl.h 2019-08-01 04:29:31.000000000 +0000 @@ -0,0 +1,24 @@ +/* Redirections for argp functions for -mlong-double-64. + Copyright (C) 2019 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/>. */ + +#ifndef _ARGP_H +# error "Never include <bits/argp-ldbl.h> directly; use <argp.h> instead." +#endif + +__LDBL_REDIR_DECL (argp_error) +__LDBL_REDIR_DECL (argp_failure)
  18. Download patch config.make.in

    --- 2.29-1/config.make.in 2019-01-31 16:45:36.000000000 +0000 +++ 2.30-0ubuntu1/config.make.in 2019-08-01 04:29:31.000000000 +0000 @@ -10,6 +10,7 @@ prefix = @prefix@ exec_prefix = @exec_prefix@ datadir = @datadir@ libdir = @libdir@ +bindir = @bindir@ slibdir = @libc_cv_slibdir@ rtlddir = @libc_cv_rtlddir@ complocaledir = @libc_cv_complocaledir@
  19. Download patch benchtests/bench-string.h

    --- 2.29-1/benchtests/bench-string.h 2019-01-31 16:45:36.000000000 +0000 +++ 2.30-0ubuntu1/benchtests/bench-string.h 2019-08-01 04:29:31.000000000 +0000 @@ -124,7 +124,11 @@ extern impl_t __start_impls[], __stop_im # define OPT_RANDOM 10001 # define OPT_SEED 10002 -# define INNER_LOOP_ITERS 64 +# define INNER_LOOP_ITERS 8192 +# define INNER_LOOP_ITERS8 32768 +# define INNER_LOOP_ITERS_LARGE 131072 +# define INNER_LOOP_ITERS_MEDIUM 2048 +# define INNER_LOOP_ITERS_SMALL 256 int ret, do_srandom; unsigned int seed; @@ -156,7 +160,7 @@ cmdline_process_function (int c) case OPT_RANDOM: { int fdr = open ("/dev/urandom", O_RDONLY); - if (fdr < 0 || read (fdr, &seed, sizeof(seed)) != sizeof (seed)) + if (fdr < 0 || read (fdr, &seed, sizeof (seed)) != sizeof (seed)) seed = time (NULL); if (fdr >= 0) close (fdr);
  20. Download patch debian/control
  21. Download patch bits/stropts.h
  22. Download patch benchtests/logbf-inputs

    --- 2.29-1/benchtests/logbf-inputs 1970-01-01 00:00:00.000000000 +0000 +++ 2.30-0ubuntu1/benchtests/logbf-inputs 2019-08-01 04:29:31.000000000 +0000 @@ -0,0 +1,11 @@ +## args: double +## ret: double +## includes: math.h + +## name: subnormal +0x1p-149 +0x1.fffff8p-128 + +## name: normal +1.0 +1024.0
  23. Download patch benchtests/bench-strcmp.c

    --- 2.29-1/benchtests/bench-strcmp.c 2019-01-31 16:45:36.000000000 +0000 +++ 2.30-0ubuntu1/benchtests/bench-strcmp.c 2019-08-01 04:29:31.000000000 +0000 @@ -27,7 +27,6 @@ #ifdef WIDE # define L(str) L##str # define SIMPLE_STRCMP simple_wcscmp -# define STUPID_STRCMP stupid_wcscmp # define CHARBYTESLOG 2 # define MIDCHAR 0x7fffffff # define LARGECHAR 0xfffffffe @@ -51,31 +50,11 @@ simple_wcscmp (const wchar_t *s1, const return c1 < c2 ? -1 : 1; } -int -stupid_wcscmp (const wchar_t *s1, const wchar_t *s2) -{ - size_t ns1 = wcslen (s1) + 1; - size_t ns2 = wcslen (s2) + 1; - size_t n = ns1 < ns2 ? ns1 : ns2; - int ret = 0; - - wchar_t c1, c2; - - while (n--) { - c1 = *s1++; - c2 = *s2++; - if ((ret = c1 < c2 ? -1 : c1 == c2 ? 0 : 1) != 0) - break; - } - return ret; -} - #else # include <limits.h> # define L(str) str # define SIMPLE_STRCMP simple_strcmp -# define STUPID_STRCMP stupid_strcmp # define CHARBYTESLOG 0 # define MIDCHAR 0x7f # define LARGECHAR 0xfe @@ -90,26 +69,12 @@ simple_strcmp (const char *s1, const cha return ret; } -int -stupid_strcmp (const char *s1, const char *s2) -{ - size_t ns1 = strlen (s1) + 1; - size_t ns2 = strlen (s2) + 1; - size_t n = ns1 < ns2 ? ns1 : ns2; - int ret = 0; - - while (n--) - if ((ret = *(unsigned char *) s1++ - *(unsigned char *) s2++) != 0) - break; - return ret; -} #endif # include "json-lib.h" typedef int (*proto_t) (const CHAR *, const CHAR *); -IMPL (STUPID_STRCMP, 1) IMPL (SIMPLE_STRCMP, 1) IMPL (STRCMP, 1) @@ -118,7 +83,7 @@ do_one_test (json_ctx_t *json_ctx, impl_ const CHAR *s1, const CHAR *s2, int exp_result) { - size_t i, iters = INNER_LOOP_ITERS; + size_t i, iters = INNER_LOOP_ITERS8; timing_t start, stop, cur; TIMING_NOW (start);
  24. Download patch benchtests/isnan-inputs

    --- 2.29-1/benchtests/isnan-inputs 1970-01-01 00:00:00.000000000 +0000 +++ 2.30-0ubuntu1/benchtests/isnan-inputs 2019-08-01 04:29:31.000000000 +0000 @@ -0,0 +1,21 @@ +## includes: math.h +## args: double +## ret: int +0.9 +2.3 +3.7 +3.9 +4.0 +4.7 +5.9 +0x1.000000cf4a2a1p0 +0x1.0000010b239a8p0 +0x1.00000162a932ap0 +0x1.000002d452a11p0 +0x1.000005bc7d86cp0 +## name: INF +__builtin_inf () +-__builtin_inf () +## name: NAN +__builtin_nan ("") +__builtin_nans ("")
  25. Download patch ChangeLog
  26. Download patch benchtests/bench-strpbrk.c

    --- 2.29-1/benchtests/bench-strpbrk.c 2019-01-31 16:45:36.000000000 +0000 +++ 2.30-0ubuntu1/benchtests/bench-strpbrk.c 2019-08-01 04:29:31.000000000 +0000 @@ -37,17 +37,13 @@ # ifndef WIDE # define SIMPLE_STRPBRK simple_strpbrk -# define STUPID_STRPBRK stupid_strpbrk # else # define SIMPLE_STRPBRK simple_wcspbrk -# define STUPID_STRPBRK stupid_wcspbrk # endif /* WIDE */ typedef CHAR *(*proto_t) (const CHAR *, const CHAR *); CHAR *SIMPLE_STRPBRK (const CHAR *, const CHAR *); -CHAR *STUPID_STRPBRK (const CHAR *, const CHAR *); -IMPL (STUPID_STRPBRK, 0) IMPL (SIMPLE_STRPBRK, 0) IMPL (STRPBRK, 1) @@ -64,25 +60,13 @@ SIMPLE_STRPBRK (const CHAR *s, const CHA return NULL; } -CHAR * -STUPID_STRPBRK (const CHAR *s, const CHAR *rej) -{ - size_t ns = STRLEN (s), nrej = STRLEN (rej); - size_t i, j; - - for (i = 0; i < ns; ++i) - for (j = 0; j < nrej; ++j) - if (s[i] == rej[j]) - return (CHAR *) s + i; - return NULL; -} #endif /* !STRPBRK_RESULT */ static void do_one_test (impl_t *impl, const CHAR *s, const CHAR *rej, RES_TYPE exp_res) { RES_TYPE res = CALL (impl, s, rej); - size_t i, iters = INNER_LOOP_ITERS; + size_t i, iters = INNER_LOOP_ITERS_MEDIUM; timing_t start, stop, cur; if (res != exp_res)
  27. Download patch configure.ac

    --- 2.29-1/configure.ac 2019-01-31 16:45:36.000000000 +0000 +++ 2.30-0ubuntu1/configure.ac 2019-08-01 04:29:31.000000000 +0000 @@ -1017,7 +1017,7 @@ AC_CHECK_PROG_VER(BISON, bison, --versio AC_CACHE_CHECK([if $CC is sufficient to build libc], libc_cv_compiler_ok, [ AC_TRY_COMPILE([], [ -#if !defined __GNUC__ || __GNUC__ < 5 +#if !defined __GNUC__ || __GNUC__ < 6 || (__GNUC__ == 6 && __GNUC_MINOR__ < 2) #error insufficient compiler #endif], [libc_cv_compiler_ok=yes], @@ -1804,6 +1804,7 @@ AC_SUBST(libc_cv_gcc_unwind_find_fde) if test x"$libc_cv_ld_gnu_indirect_function" = xyes; then AC_DEFINE(HAVE_IFUNC) fi +LIBC_CONFIG_VAR([have-ifunc], [$libc_cv_ld_gnu_indirect_function]) if test x"$libc_cv_gcc_indirect_function" = xyes; then AC_DEFINE(HAVE_GCC_IFUNC)
  28. Download patch benchtests/bench-memmem.c

    --- 2.29-1/benchtests/bench-memmem.c 2019-01-31 16:45:36.000000000 +0000 +++ 2.30-0ubuntu1/benchtests/bench-memmem.c 2019-08-01 04:29:31.000000000 +0000 @@ -19,22 +19,51 @@ #define TEST_MAIN #define TEST_NAME "memmem" #define BUF1PAGES 20 -#define ITERATIONS 500 +#define ITERATIONS 100 #include "bench-string.h" typedef char *(*proto_t) (const void *, size_t, const void *, size_t); -void *simple_memmem (const void *, size_t, const void *, size_t); -IMPL (simple_memmem, 0) -IMPL (memmem, 1) +void * +basic_memmem (const void *haystack, size_t hs_len, const void *needle, + size_t ne_len) +{ + const char *hs = haystack; + const char *ne = needle; + + if (ne_len == 0) + return (void *)hs; + int i; + int c = ne[0]; + const char *end = hs + hs_len - ne_len; + + for ( ; hs <= end; hs++) + { + if (hs[0] != c) + continue; + for (i = ne_len - 1; i != 0; i--) + if (hs[i] != ne[i]) + break; + if (i == 0) + return (void *)hs; + } + + return NULL; +} + +#define RETURN_TYPE void * +#define AVAILABLE(h, h_l, j, n_l) ((j) <= (h_l) - (n_l)) +#define FASTSEARCH(S,C,N) (void*) memchr ((void *)(S), (C), (N)) +#include "../string/str-two-way.h" void * -simple_memmem (const void *haystack, size_t haystack_len, const void *needle, - size_t needle_len) +twoway_memmem (const void *haystack_start, size_t haystack_len, + const void *needle_start, size_t needle_len) { - const char *begin; - const char *const last_possible - = (const char *) haystack + haystack_len - needle_len; + /* Abstract memory is considered to be an array of 'unsigned char' values, + not an array of 'char' values. See ISO C 99 section 6.2.6.1. */ + const unsigned char *haystack = (const unsigned char *) haystack_start; + const unsigned char *needle = (const unsigned char *) needle_start; if (needle_len == 0) /* The first occurrence of the empty string is deemed to occur at @@ -46,21 +75,37 @@ simple_memmem (const void *haystack, siz if (__glibc_unlikely (haystack_len < needle_len)) return NULL; - for (begin = (const char *) haystack; begin <= last_possible; ++begin) - if (begin[0] == ((const char *) needle)[0] && - !memcmp ((const void *) &begin[1], - (const void *) ((const char *) needle + 1), - needle_len - 1)) - return (void *) begin; - - return NULL; + /* Use optimizations in memchr when possible, to reduce the search + size of haystack using a linear algorithm with a smaller + coefficient. However, avoid memchr for long needles, since we + can often achieve sublinear performance. */ + if (needle_len < LONG_NEEDLE_THRESHOLD) + { + haystack = memchr (haystack, *needle, haystack_len); + if (!haystack || __builtin_expect (needle_len == 1, 0)) + return (void *) haystack; + haystack_len -= haystack - (const unsigned char *) haystack_start; + if (haystack_len < needle_len) + return NULL; + /* Check whether we have a match. This improves performance since we + avoid the initialization overhead of the two-way algorithm. */ + if (memcmp (haystack, needle, needle_len) == 0) + return (void *) haystack; + return two_way_short_needle (haystack, haystack_len, needle, needle_len); + } + else + return two_way_long_needle (haystack, haystack_len, needle, needle_len); } +IMPL (memmem, 1) +IMPL (twoway_memmem, 0) +IMPL (basic_memmem, 0) + static void do_one_test (impl_t *impl, const void *haystack, size_t haystack_len, const void *needle, size_t needle_len, const void *expected) { - size_t i, iters = INNER_LOOP_ITERS; + size_t i, iters = INNER_LOOP_ITERS_SMALL; timing_t start, stop, cur; TIMING_NOW (start);
  29. Download patch debian/debhelper.in/locales.install

    --- 2.29-1/debian/debhelper.in/locales.install 2019-07-29 09:56:57.000000000 +0000 +++ 2.30-0ubuntu1/debian/debhelper.in/locales.install 2019-08-29 10:14:59.000000000 +0000 @@ -3,3 +3,5 @@ debian/tmp-libc/usr/share/i18n/* usr/sha debian/local/usr_sbin/locale-gen usr/sbin debian/local/usr_sbin/update-locale usr/sbin debian/local/usr_sbin/validlocale usr/sbin +debian/local/usr_share_locales/install-language-pack usr/share/locales +debian/local/usr_share_locales/remove-language-pack usr/share/locales
  30. Download patch benchtests/bench-strcat.c

    --- 2.29-1/benchtests/bench-strcat.c 2019-01-31 16:45:36.000000000 +0000 +++ 2.30-0ubuntu1/benchtests/bench-strcat.c 2019-08-01 04:29:31.000000000 +0000 @@ -21,6 +21,7 @@ # define TEST_NAME "strcat" #else # define TEST_NAME "wcscat" +# define generic_strcat generic_wcscat #endif /* WIDE */ #include "bench-string.h" @@ -28,35 +29,29 @@ #ifndef WIDE # define sfmt "s" -# define SIMPLE_STRCAT simple_strcat # define SMALL_CHAR 127 #else # define sfmt "ls" -# define SIMPLE_STRCAT simple_wcscat # define SMALL_CHAR 1273 #endif /* WIDE */ typedef CHAR *(*proto_t) (CHAR *, const CHAR *); -CHAR *SIMPLE_STRCAT (CHAR *, const CHAR *); - -IMPL (SIMPLE_STRCAT, 0) -IMPL (STRCAT, 1) CHAR * -SIMPLE_STRCAT (CHAR *dst, const CHAR *src) +generic_strcat (CHAR *dst, const CHAR *src) { - CHAR *ret = dst; - while (*dst++ != '\0'); - --dst; - while ((*dst++ = *src++) != '\0'); - return ret; + STRCPY (dst + STRLEN (dst), src); + return dst; } +IMPL (STRCAT, 1) +IMPL (generic_strcat, 0) + static void do_one_test (impl_t *impl, CHAR *dst, const CHAR *src) { - size_t k = STRLEN (dst), i, iters = INNER_LOOP_ITERS; + size_t k = STRLEN (dst), i, iters = INNER_LOOP_ITERS_LARGE; timing_t start, stop, cur; if (CALL (impl, dst, src) != dst)
  31. Download patch benchtests/bench-memcmp.c

    --- 2.29-1/benchtests/bench-memcmp.c 2019-01-31 16:45:36.000000000 +0000 +++ 2.30-0ubuntu1/benchtests/bench-memcmp.c 2019-08-01 04:29:31.000000000 +0000 @@ -63,7 +63,7 @@ static void do_one_test (json_ctx_t *json_ctx, impl_t *impl, const CHAR *s1, const CHAR *s2, size_t len, int exp_result) { - size_t i, iters = INNER_LOOP_ITERS; + size_t i, iters = INNER_LOOP_ITERS8; timing_t start, stop, cur; TIMING_NOW (start);
  32. Download patch benchtests/bench-strcasecmp.c

    --- 2.29-1/benchtests/bench-strcasecmp.c 2019-01-31 16:45:36.000000000 +0000 +++ 2.30-0ubuntu1/benchtests/bench-strcasecmp.c 2019-08-01 04:29:31.000000000 +0000 @@ -23,9 +23,7 @@ typedef int (*proto_t) (const char *, const char *); static int simple_strcasecmp (const char *, const char *); -static int stupid_strcasecmp (const char *, const char *); -IMPL (stupid_strcasecmp, 0) IMPL (simple_strcasecmp, 0) IMPL (strcasecmp, 1) @@ -41,24 +39,6 @@ simple_strcasecmp (const char *s1, const return ret; } -static int -stupid_strcasecmp (const char *s1, const char *s2) -{ - size_t ns1 = strlen (s1) + 1, ns2 = strlen (s2) + 1; - size_t n = ns1 < ns2 ? ns1 : ns2; - int ret = 0; - - while (n--) - { - if ((ret = ((unsigned char) tolower (*s1) - - (unsigned char) tolower (*s2))) != 0) - break; - ++s1; - ++s2; - } - return ret; -} - static void do_one_test (impl_t *impl, const char *s1, const char *s2, int exp_result) {
  33. Download patch benchtests/isinf-inputs

    --- 2.29-1/benchtests/isinf-inputs 1970-01-01 00:00:00.000000000 +0000 +++ 2.30-0ubuntu1/benchtests/isinf-inputs 2019-08-01 04:29:31.000000000 +0000 @@ -0,0 +1,21 @@ +## includes: math.h +## args: double +## ret: int +0.9 +2.3 +3.7 +3.9 +4.0 +4.7 +5.9 +0x1.000000cf4a2a1p0 +0x1.0000010b239a8p0 +0x1.00000162a932ap0 +0x1.000002d452a11p0 +0x1.000005bc7d86cp0 +## name: INF +__builtin_inf () +-__builtin_inf () +## name: NAN +__builtin_nan ("") +__builtin_nans ("")
  34. Download patch benchtests/bench-timing.h

    --- 2.29-1/benchtests/bench-timing.h 2019-01-31 16:45:36.000000000 +0000 +++ 2.30-0ubuntu1/benchtests/bench-timing.h 2019-08-01 04:29:31.000000000 +0000 @@ -18,49 +18,19 @@ #undef attribute_hidden #define attribute_hidden +#define __clock_gettime clock_gettime #include <hp-timing.h> #include <stdint.h> -#if HP_TIMING_AVAIL && !defined USE_CLOCK_GETTIME -# define GL(x) _##x -# define GLRO(x) _##x +#define GL(x) _##x +#define GLRO(x) _##x typedef hp_timing_t timing_t; -# define TIMING_TYPE "hp_timing" +#define TIMING_TYPE "hp_timing" -# define TIMING_INIT(res) ({ (res) = 1; }) - -# define TIMING_NOW(var) HP_TIMING_NOW (var) -# define TIMING_DIFF(diff, start, end) HP_TIMING_DIFF ((diff), (start), (end)) -# define TIMING_ACCUM(sum, diff) HP_TIMING_ACCUM_NT ((sum), (diff)) - -#else - -#include <time.h> -typedef uint64_t timing_t; - -# define TIMING_TYPE "clock_gettime" - -/* Measure the resolution of the clock so we can scale the number of - benchmark iterations by this value. */ -# define TIMING_INIT(res) \ -({ \ - struct timespec start; \ - clock_getres (CLOCK_PROCESS_CPUTIME_ID, &start); \ - (res) = start.tv_nsec; \ -}) - -# define TIMING_NOW(var) \ -({ \ - struct timespec tv; \ - clock_gettime (CLOCK_PROCESS_CPUTIME_ID, &tv); \ - (var) = (uint64_t) (tv.tv_nsec + (uint64_t) 1000000000 * tv.tv_sec); \ -}) - -# define TIMING_DIFF(diff, start, end) (diff) = (end) - (start) -# define TIMING_ACCUM(sum, diff) (sum) += (diff) - -#endif +#define TIMING_NOW(var) HP_TIMING_NOW (var) +#define TIMING_DIFF(diff, start, end) HP_TIMING_DIFF ((diff), (start), (end)) +#define TIMING_ACCUM(sum, diff) HP_TIMING_ACCUM_NT ((sum), (diff)) #define TIMING_PRINT_MEAN(d_total_s, d_iters) \ printf ("\t%g", (d_total_s) / (d_iters))
  35. Download patch benchtests/hypot-inputs

    --- 2.29-1/benchtests/hypot-inputs 1970-01-01 00:00:00.000000000 +0000 +++ 2.30-0ubuntu1/benchtests/hypot-inputs 2019-08-01 04:29:31.000000000 +0000 @@ -0,0 +1,16 @@ +## includes: math.h +## args: double:double +## ret: double + +## name: overflow +0x3.ffffffffffffcp-1024, 0x8p-152 +## name: higher_two500 +0x1.000002027941dp+500, 0x1.0000000000001p+500 +## name: subnormal +0x0.fffffffffffffp-1022, 0x0.fffffffffffffp-1022 +## name: less_two500 +0x1.fffffffffffffp-501, 0x1.fffffffffffffp-501 + +## name: default +3.0 , 4.0 +5.0 , 4.0
  36. Download patch benchtests/bench-strchr.c

    --- 2.29-1/benchtests/bench-strchr.c 2019-01-31 16:45:36.000000000 +0000 +++ 2.30-0ubuntu1/benchtests/bench-strchr.c 2019-08-01 04:29:31.000000000 +0000 @@ -38,7 +38,6 @@ # ifdef USE_FOR_STRCHRNUL # undef STRCHR # define STRCHR strchrnul -# define stupid_STRCHR stupid_STRCHRNUL # define simple_STRCHR simple_STRCHRNUL # endif /* !USE_FOR_STRCHRNUL */ # define MIDDLE_CHAR 127 @@ -47,7 +46,6 @@ # ifdef USE_FOR_STRCHRNUL # undef STRCHR # define STRCHR wcschrnul -# define stupid_STRCHR stupid_WCSCHRNUL # define simple_STRCHR simple_WCSCHRNUL # endif /* !USE_FOR_STRCHRNUL */ # define MIDDLE_CHAR 1121 @@ -72,25 +70,13 @@ simple_STRCHR (const CHAR *s, int c) return (CHAR *) s; } -CHAR * -stupid_STRCHR (const CHAR *s, int c) -{ - size_t n = STRLEN (s) + 1; - - while (n--) - if (*s++ == (CHAR) c) - return (CHAR *) s - 1; - return NULLRET ((CHAR *) s - 1); -} - -IMPL (stupid_STRCHR, 0) IMPL (simple_STRCHR, 0) IMPL (STRCHR, 1) static void do_one_test (impl_t *impl, const CHAR *s, int c, const CHAR *exp_res) { - size_t i, iters = INNER_LOOP_ITERS; + size_t i, iters = INNER_LOOP_ITERS_LARGE; timing_t start, stop, cur; TIMING_NOW (start);
  37. Download patch benchtests/bench-stpncpy.c

    --- 2.29-1/benchtests/bench-stpncpy.c 2019-01-31 16:45:36.000000000 +0000 +++ 2.30-0ubuntu1/benchtests/bench-stpncpy.c 2019-08-01 04:29:31.000000000 +0000 @@ -22,49 +22,22 @@ # define TEST_NAME "stpncpy" #else # define TEST_NAME "wcpncpy" +# define generic_stpncpy generic_wcpncpy #endif /* WIDE */ #include "bench-string.h" -#ifndef WIDE -# define SIMPLE_STPNCPY simple_stpncpy -# define STUPID_STPNCPY stupid_stpncpy -#else -# define SIMPLE_STPNCPY simple_wcpncpy -# define STUPID_STPNCPY stupid_wcpncpy -#endif /* WIDE */ - -CHAR *SIMPLE_STPNCPY (CHAR *, const CHAR *, size_t); -CHAR *STUPID_STPNCPY (CHAR *, const CHAR *, size_t); - -IMPL (STUPID_STPNCPY, 0) -IMPL (SIMPLE_STPNCPY, 0) -IMPL (STPNCPY, 1) CHAR * -SIMPLE_STPNCPY (CHAR *dst, const CHAR *src, size_t n) -{ - while (n--) - if ((*dst++ = *src++) == '\0') - { - size_t i; - - for (i = 0; i < n; ++i) - dst[i] = '\0'; - return dst - 1; - } - return dst; -} - -CHAR * -STUPID_STPNCPY (CHAR *dst, const CHAR *src, size_t n) +generic_stpncpy (CHAR *dst, const CHAR *src, size_t n) { size_t nc = STRNLEN (src, n); - size_t i; - - for (i = 0; i < nc; ++i) - dst[i] = src[i]; - for (; i < n; ++i) - dst[i] = '\0'; - return dst + nc; + MEMCPY (dst, src, nc); + dst += nc; + if (nc == n) + return dst; + return MEMSET (dst, 0, n - nc); } +IMPL (STPNCPY, 1) +IMPL (generic_stpncpy, 0) + #include "bench-strncpy.c"
  38. Download patch benchtests/bench-mempcpy.c

    --- 2.29-1/benchtests/bench-mempcpy.c 2019-01-31 16:45:36.000000000 +0000 +++ 2.30-0ubuntu1/benchtests/bench-mempcpy.c 2019-08-01 04:29:31.000000000 +0000 @@ -21,17 +21,13 @@ #define TEST_NAME "mempcpy" #include "bench-string.h" -char *simple_mempcpy (char *, const char *, size_t); - -IMPL (simple_mempcpy, 0) -IMPL (mempcpy, 1) - char * -simple_mempcpy (char *dst, const char *src, size_t n) +generic_mempcpy (char *dst, const char *src, size_t n) { - while (n--) - *dst++ = *src++; - return dst; + return memcpy (dst, src, n) + n; } +IMPL (mempcpy, 1) +IMPL (generic_mempcpy, 0) + #include "bench-memcpy.c"
  39. Download patch benchtests/bench-memcpy-walk.c

    --- 2.29-1/benchtests/bench-memcpy-walk.c 2019-01-31 16:45:36.000000000 +0000 +++ 2.30-0ubuntu1/benchtests/bench-memcpy-walk.c 2019-08-01 04:29:31.000000000 +0000 @@ -103,12 +103,8 @@ test_main (void) json_array_begin (&json_ctx, "results"); for (size_t i = START_SIZE; i <= MIN_PAGE_SIZE; i <<= 1) { - /* Test length alignments from 0-16 bytes. */ - for (int j = 0; j < 8; j++) - { - do_test (&json_ctx, i + j); - do_test (&json_ctx, i + 16 - j); - } + do_test (&json_ctx, i); + do_test (&json_ctx, i + 1); } json_array_end (&json_ctx);
  40. Download patch debian/debhelper.in/locales.config

    --- 2.29-1/debian/debhelper.in/locales.config 2019-07-29 09:56:57.000000000 +0000 +++ 2.30-0ubuntu1/debian/debhelper.in/locales.config 2019-08-29 10:14:59.000000000 +0000 @@ -34,12 +34,20 @@ if [ -e $LG ]; then GEN_LOCALES="$(convert_locale "$GEN_LOCALES")" fi +# This upgrades from Ubuntu << 16.04, where locale-gen wrote user locales +# to /var/lib/locales/supported.d/local, but we want them in /etc/locale.gen +if [ -f /var/lib/locales/supported.d/local ]; then + LOCAL_LOCALES="$(sed -e '/^[a-zA-Z]/!d' -e 's/ *$//g' /var/lib/locales/supported.d/local)" + LOCAL_LOCALES="$(convert_locale "$LOCAL_LOCALES")" + GEN_LOCALES=$(printf '%s\n' "$GEN_LOCALES" "$LOCAL_LOCALES") +fi + # List of supported locales (PROVIDED_LOCALES + USER_LOCALES + GEN_LOCALES) SUPPORTED_LOCALES="$(printf '%s\n' "$PROVIDED_LOCALES" "$USER_LOCALES" "$GEN_LOCALES" | grep -v "^$" | sort -u | tr '\n' ',' | sed -e 's/, */, /g' -e 's/, *$//g')" db_subst locales/locales_to_be_generated locales "$SUPPORTED_LOCALES" # Get the list of selected locales from /etc/locale.gen -if [ -e /etc/locale.gen ]; then +if [ -e /etc/locale.gen -o -f /var/lib/locales/supported.d/local ]; then if [ -L $LG ] && [ "$(readlink $LG)" = "/usr/share/i18n/SUPPORTED" ]; then SELECTED_LOCALES="All locales" else @@ -77,6 +85,13 @@ while [ "$STATE" -ge 0 ]; do RET=$SUPPORTED_LOCALES fi DEFAULT_LOCALES="$(echo $RET | sed -e 's/ [^ ]*,/,/g' -e 's/ [^ ]*$//')" + for langpack in /var/lib/locales/supported.d/*; do + if [ -f $langpack ]; then + while read locale charset; do + DEFAULT_LOCALES="$DEFAULT_LOCALES, $locale" + done < $langpack + fi + done if [ -n "$DEFAULT_LOCALES" ]; then db_subst locales/default_environment_locale locales $DEFAULT_LOCALES db_input medium locales/default_environment_locale || true
  41. Download patch configure

    --- 2.29-1/configure 2019-01-31 16:45:36.000000000 +0000 +++ 2.30-0ubuntu1/configure 2019-08-01 04:29:31.000000000 +0000 @@ -5119,7 +5119,7 @@ int main () { -#if !defined __GNUC__ || __GNUC__ < 5 +#if !defined __GNUC__ || __GNUC__ < 6 || (__GNUC__ == 6 && __GNUC_MINOR__ < 2) #error insufficient compiler #endif ; @@ -6794,6 +6794,8 @@ if test x"$libc_cv_ld_gnu_indirect_funct $as_echo "#define HAVE_IFUNC 1" >>confdefs.h fi +config_vars="$config_vars +have-ifunc = $libc_cv_ld_gnu_indirect_function" if test x"$libc_cv_gcc_indirect_function" = xyes; then $as_echo "#define HAVE_GCC_IFUNC 1" >>confdefs.h
  42. Download patch benchtests/README

    --- 2.29-1/benchtests/README 2019-01-31 16:45:36.000000000 +0000 +++ 2.30-0ubuntu1/benchtests/README 2019-08-01 04:29:31.000000000 +0000 @@ -27,12 +27,7 @@ BENCH_DURATION. The benchmark suite does function call measurements using architecture-specific high precision timing instructions whenever available. When such support is -not available, it uses clock_gettime (CLOCK_PROCESS_CPUTIME_ID). One can force -the benchmark to use clock_gettime by invoking make as follows: - - $ make USE_CLOCK_GETTIME=1 bench - -Again, one must run `make bench-clean' before changing the measurement method. +not available, it uses clock_gettime (CLOCK_MONOTONIC). On x86 processors, RDTSCP instruction provides more precise timing data than RDTSC instruction. All x86 processors since 2010 support RDTSCP
  43. Download patch conform/Makefile

    --- 2.29-1/conform/Makefile 2019-01-31 16:45:36.000000000 +0000 +++ 2.30-0ubuntu1/conform/Makefile 2019-08-01 04:29:31.000000000 +0000 @@ -52,44 +52,44 @@ conformtest-headers-XPG4 := $(conformtes sys/wait.h tar.h termios.h ulimit.h unistd.h \ utime.h varargs.h wordexp.h # Missing XPG42 expectations for: re_comp.h regexp.h wchar.h. -# XPG42 includes XTI, but xti.h is outside the scope of these tests. +# XPG42 includes XTI and STREAMS, but those are not implemented by glibc. conformtest-headers-XPG42 := $(conformtest-headers-XPG4) arpa/inet.h fmtmsg.h \ libgen.h ndbm.h netdb.h netinet/in.h poll.h \ - strings.h stropts.h sys/mman.h sys/resource.h \ + strings.h sys/mman.h sys/resource.h \ sys/socket.h sys/statvfs.h sys/time.h sys/timeb.h \ sys/uio.h sys/un.h syslog.h ucontext.h utmpx.h # Missing UNIX98 expectations for: inttypes.h re_comp.h regexp.h. # The online UNIX98 includes XCURSES, but curses.h, term.h and # unctrl.h are outside the scope of these tests. It also includes -# XTI, but xti.h is outside the scope of these tests. +# XTI and STREAMS, but those are not implemented by glibc. conformtest-headers-UNIX98 := $(conformtest-headers-POSIX) arpa/inet.h cpio.h \ dlfcn.h fmtmsg.h ftw.h iconv.h iso646.h \ langinfo.h libgen.h monetary.h ndbm.h netdb.h \ netinet/in.h nl_types.h poll.h search.h \ - strings.h stropts.h sys/ipc.h sys/msg.h \ + strings.h sys/ipc.h sys/msg.h \ sys/resource.h sys/sem.h sys/shm.h sys/socket.h \ sys/statvfs.h sys/time.h sys/timeb.h sys/uio.h \ sys/un.h syslog.h ucontext.h ulimit.h utmpx.h \ varargs.h wchar.h wctype.h -# Missing XOPEN2K expectations for: trace.h. +# Missing XOPEN2K expectations for: trace.h, stropts.h. conformtest-headers-XOPEN2K := $(conformtest-headers-POSIX) arpa/inet.h \ complex.h cpio.h dlfcn.h fenv.h fmtmsg.h ftw.h \ iconv.h inttypes.h iso646.h langinfo.h \ libgen.h monetary.h ndbm.h net/if.h netdb.h \ netinet/in.h netinet/tcp.h nl_types.h poll.h \ search.h spawn.h stdbool.h stdint.h strings.h \ - stropts.h sys/ipc.h sys/msg.h sys/resource.h \ + sys/ipc.h sys/msg.h sys/resource.h \ sys/select.h sys/sem.h sys/shm.h sys/socket.h \ sys/statvfs.h sys/time.h sys/timeb.h sys/uio.h \ sys/un.h syslog.h tgmath.h ucontext.h ulimit.h \ utmpx.h wchar.h wctype.h -# Missing POSIX2008 expectations for: trace.h. +# Missing POSIX2008 expectations for: trace.h, stropts.h. conformtest-headers-POSIX2008 := $(conformtest-headers-POSIX) arpa/inet.h \ complex.h cpio.h dlfcn.h fenv.h iconv.h \ inttypes.h iso646.h langinfo.h monetary.h \ net/if.h netdb.h netinet/in.h netinet/tcp.h \ nl_types.h poll.h spawn.h stdbool.h stdint.h \ - strings.h stropts.h sys/select.h \ + strings.h sys/select.h \ sys/socket.h sys/statvfs.h sys/un.h tgmath.h \ wchar.h wctype.h # Missing XOPEN2K8 expectations for: trace.h.
  44. Download patch benchtests/bench-strnlen.c

    --- 2.29-1/benchtests/bench-strnlen.c 2019-01-31 16:45:36.000000000 +0000 +++ 2.30-0ubuntu1/benchtests/bench-strnlen.c 2019-08-01 04:29:31.000000000 +0000 @@ -21,6 +21,8 @@ # define TEST_NAME "strnlen" #else # define TEST_NAME "wcsnlen" +# define generic_strnlen generic_wcsnlen +# define memchr_strnlen wcschr_wcsnlen #endif /* WIDE */ #include "bench-string.h" @@ -28,31 +30,28 @@ #ifndef WIDE # define MIDDLE_CHAR 127 -# define SIMPLE_STRNLEN simple_strnlen #else # define MIDDLE_CHAR 1121 -# define SIMPLE_STRNLEN simple_wcsnlen #endif /* WIDE */ typedef size_t (*proto_t) (const CHAR *, size_t); -size_t SIMPLE_STRNLEN (const CHAR *, size_t); - -IMPL (SIMPLE_STRNLEN, 0) -IMPL (STRNLEN, 1) +size_t generic_strnlen (const CHAR *, size_t); size_t -SIMPLE_STRNLEN (const CHAR *s, size_t maxlen) +memchr_strnlen (const CHAR *s, size_t maxlen) { - size_t i; - - for (i = 0; i < maxlen && s[i]; ++i); - return i; + const CHAR *s1 = MEMCHR (s, 0, maxlen); + return (s1 == NULL) ? maxlen : s1 - s; } +IMPL (STRNLEN, 1) +IMPL (memchr_strnlen, 0) +IMPL (generic_strnlen, 0) + static void do_one_test (impl_t *impl, const CHAR *s, size_t maxlen, size_t exp_len) { - size_t len = CALL (impl, s, maxlen), i, iters = INNER_LOOP_ITERS; + size_t len = CALL (impl, s, maxlen), i, iters = INNER_LOOP_ITERS_LARGE; timing_t start, stop, cur; if (len != exp_len) @@ -146,3 +145,13 @@ test_main (void) } #include <support/test-driver.c> + +#define libc_hidden_def(X) +#ifndef WIDE +# undef STRNLEN +# define STRNLEN generic_strnlen +# include <string/strnlen.c> +#else +# define WCSNLEN generic_strnlen +# include <wcsmbs/wcsnlen.c> +#endif
  45. Download patch benchtests/bench-memchr.c

    --- 2.29-1/benchtests/bench-memchr.c 2019-01-31 16:45:36.000000000 +0000 +++ 2.30-0ubuntu1/benchtests/bench-memchr.c 2019-08-01 04:29:31.000000000 +0000 @@ -56,7 +56,7 @@ SIMPLE_MEMCHR (const CHAR *s, int c, siz static void do_one_test (impl_t *impl, const CHAR *s, int c, size_t n) { - size_t i, iters = INNER_LOOP_ITERS; + size_t i, iters = INNER_LOOP_ITERS_LARGE; timing_t start, stop, cur; TIMING_NOW (start);
  46. Download patch debian/debhelper.in/libc.postinst
  47. Download patch benchtests/bench-memset-walk.c

    --- 2.29-1/benchtests/bench-memset-walk.c 2019-01-31 16:45:36.000000000 +0000 +++ 2.30-0ubuntu1/benchtests/bench-memset-walk.c 2019-08-01 04:29:31.000000000 +0000 @@ -112,13 +112,16 @@ test_main (void) json_array_begin (&json_ctx, "results"); for (i = START_SIZE; i <= MIN_PAGE_SIZE; i <<= 1) - /* Test length alignments from 0-16 bytes. */ - for (int j = 0; j < i && j < 16; j++) - do_test (&json_ctx, 65, i + j); + { + do_test (&json_ctx, 65, i); + do_test (&json_ctx, 65, i + 1); + } for (i = START_SIZE; i <= MIN_PAGE_SIZE; i <<= 1) - for (int j = 0; j < i && j < 16; j++) - do_test (&json_ctx, 0, i + j); + { + do_test (&json_ctx, 0, i); + do_test (&json_ctx, 0, i + 1); + } json_array_end (&json_ctx); json_attr_object_end (&json_ctx);
  48. Download patch benchtests/bench-strncpy.c

    --- 2.29-1/benchtests/bench-strncpy.c 2019-01-31 16:45:36.000000000 +0000 +++ 2.30-0ubuntu1/benchtests/bench-strncpy.c 2019-08-01 04:29:31.000000000 +0000 @@ -31,49 +31,22 @@ # define TEST_NAME "strncpy" # else # define TEST_NAME "wcsncpy" +# define generic_strncpy generic_wcsncpy # endif /* WIDE */ # include "bench-string.h" -# ifndef WIDE -# define SIMPLE_STRNCPY simple_strncpy -# define STUPID_STRNCPY stupid_strncpy -# else -# define SIMPLE_STRNCPY simple_wcsncpy -# define STUPID_STRNCPY stupid_wcsncpy -# endif /* WIDE */ - -CHAR *SIMPLE_STRNCPY (CHAR *, const CHAR *, size_t); -CHAR *STUPID_STRNCPY (CHAR *, const CHAR *, size_t); - -IMPL (STUPID_STRNCPY, 0) -IMPL (SIMPLE_STRNCPY, 0) -IMPL (STRNCPY, 1) CHAR * -SIMPLE_STRNCPY (CHAR *dst, const CHAR *src, size_t n) +generic_strncpy (CHAR *dst, const CHAR *src, size_t n) { - CHAR *ret = dst; - while (n--) - if ((*dst++ = *src++) == '\0') - { - while (n--) - *dst++ = '\0'; - return ret; - } - return ret; + size_t nc = STRNLEN (src, n); + if (nc != n) + MEMSET (dst + nc, 0, n - nc); + return MEMCPY (dst, src, nc); } -CHAR * -STUPID_STRNCPY (CHAR *dst, const CHAR *src, size_t n) -{ - size_t nc = STRNLEN (src, n); - size_t i; +IMPL (STRNCPY, 1) +IMPL (generic_strncpy, 0) - for (i = 0; i < nc; ++i) - dst[i] = src[i]; - for (; i < n; ++i) - dst[i] = '\0'; - return dst; -} #endif /* !STRNCPY_RESULT */ typedef CHAR *(*proto_t) (CHAR *, const CHAR *, size_t); @@ -81,7 +54,7 @@ typedef CHAR *(*proto_t) (CHAR *, const static void do_one_test (impl_t *impl, CHAR *dst, const CHAR *src, size_t len, size_t n) { - size_t i, iters = INNER_LOOP_ITERS; + size_t i, iters = INNER_LOOP_ITERS_LARGE * (4 / CHARBYTES); timing_t start, stop, cur; if (CALL (impl, dst, src, n) != STRNCPY_RESULT (dst, len, n))
  49. Download patch argp/argp.h

    --- 2.29-1/argp/argp.h 2019-01-31 16:45:36.000000000 +0000 +++ 2.30-0ubuntu1/argp/argp.h 2019-08-01 04:29:31.000000000 +0000 @@ -554,6 +554,10 @@ __NTH (__option_is_end (const struct arg # endif #endif /* Use extern inlines. */ +#ifdef __LDBL_COMPAT +# include <bits/argp-ldbl.h> +#endif + __END_DECLS #endif /* argp.h */
  50. Download patch debian/patches/git-updates.diff
  51. Download patch debian/local/sbin/ldconfig

    --- 2.29-1/debian/local/sbin/ldconfig 1970-01-01 00:00:00.000000000 +0000 +++ 2.30-0ubuntu1/debian/local/sbin/ldconfig 2019-08-29 10:14:59.000000000 +0000 @@ -0,0 +1,16 @@ +#!/bin/sh + +if test $# = 0 \ + && test x"$LDCONFIG_NOTRIGGER" = x \ + && test x"$DPKG_MAINTSCRIPT_PACKAGE" != x \ + && dpkg-trigger --check-supported 2>/dev/null +then + if dpkg-trigger --no-await ldconfig; then + if test x"$LDCONFIG_TRIGGER_DEBUG" != x; then + echo "ldconfig: wrapper deferring update (trigger activated)" + fi + exit 0 + fi +fi + +exec /sbin/ldconfig.real "$@"
  52. Download patch benchtests/Makefile

    --- 2.29-1/benchtests/Makefile 2019-01-31 16:45:36.000000000 +0000 +++ 2.30-0ubuntu1/benchtests/Makefile 2019-08-01 04:29:31.000000000 +0000 @@ -24,7 +24,7 @@ include ../Makeconfig bench-math := acos acosh asin asinh atan atanh cos cosh exp exp2 log log2 \ modf pow rint sin sincos sinh sqrt tan tanh fmin fmax fminf \ fmaxf powf trunc truncf expf exp2f logf log2f sincosf sinf \ - cosf + cosf isnan isinf isfinite hypot logb logbf bench-pthread := pthread_once thread_create @@ -37,7 +37,7 @@ bench := $(foreach B,$(filter bench-%,${ endif # String function benchmarks. -string-benchset := bcopy bzero memccpy memchr memcmp memcpy memmem memmove \ +string-benchset := memccpy memchr memcmp memcpy memmem memmove \ mempcpy memset rawmemchr stpcpy stpncpy strcasecmp strcasestr \ strcat strchr strchrnul strcmp strcpy strcspn strlen \ strncasecmp strncat strncmp strncpy strnlen strpbrk strrchr \ @@ -88,9 +88,12 @@ CFLAGS-bench-fmax.c += -fno-builtin CFLAGS-bench-fmaxf.c += -fno-builtin CFLAGS-bench-trunc.c += -fno-builtin CFLAGS-bench-truncf.c += -fno-builtin +CFLAGS-bench-isnan.c += -fsignaling-nans +CFLAGS-bench-isinf.c += -fsignaling-nans +CFLAGS-bench-isfinite.c += -fsignaling-nans ifeq (${BENCHSET},) -bench-malloc := malloc-thread +bench-malloc := malloc-thread malloc-simple else bench-malloc := $(filter malloc-%,${BENCHSET}) endif @@ -98,7 +101,7 @@ endif $(addprefix $(objpfx)bench-,$(bench-math)): $(libm) $(addprefix $(objpfx)bench-,$(math-benchset)): $(libm) $(addprefix $(objpfx)bench-,$(bench-pthread)): $(shared-thread-library) -$(objpfx)bench-malloc-thread: $(shared-thread-library) +$(addprefix $(objpfx)bench-,$(bench-malloc)): $(shared-thread-library) @@ -120,24 +123,18 @@ binaries-bench := $(addprefix $(objpfx)b binaries-benchset := $(addprefix $(objpfx)bench-,$(benchset)) binaries-bench-malloc := $(addprefix $(objpfx)bench-,$(bench-malloc)) -# The default duration: 10 seconds. +# The default duration: 1 seconds. ifndef BENCH_DURATION -BENCH_DURATION := 10 +BENCH_DURATION := 1 endif CPPFLAGS-nonlib += -DDURATION=$(BENCH_DURATION) -D_ISOMAC -# Use clock_gettime to measure performance of functions. The default is to use -# HP_TIMING if it is available. -ifdef USE_CLOCK_GETTIME -CPPFLAGS-nonlib += -DUSE_CLOCK_GETTIME -else # On x86 processors, use RDTSCP, instead of RDTSC, to measure performance # of functions. All x86 processors since 2010 support RDTSCP instruction. ifdef USE_RDTSCP CPPFLAGS-nonlib += -DUSE_RDTSCP endif -endif DETAILED_OPT := @@ -171,7 +168,7 @@ bench-clean: ifneq ($(strip ${BENCHSET}),) VALIDBENCHSETNAMES := bench-pthread bench-math bench-string string-benchset \ wcsmbs-benchset stdlib-benchset stdio-common-benchset math-benchset \ - malloc-thread + malloc-thread malloc-simple INVALIDBENCHSETNAMES := $(filter-out ${VALIDBENCHSETNAMES},${BENCHSET}) ifneq (${INVALIDBENCHSETNAMES},) $(info The following values in BENCHSET are invalid: ${INVALIDBENCHSETNAMES}) @@ -200,10 +197,18 @@ bench-set: $(binaries-benchset) bench-malloc: $(binaries-bench-malloc) for run in $^; do \ + echo "$${run}"; \ + if [ `basename $${run}` = "bench-malloc-thread" ]; then \ for thr in 1 8 16 32; do \ echo "Running $${run} $${thr}"; \ - $(run-bench) $${thr} > $${run}-$${thr}.out; \ - done;\ + $(run-bench) $${thr} > $${run}-$${thr}.out; \ + done;\ + else \ + for thr in 8 16 32 64 128 256 512 1024 2048 4096; do \ + echo "Running $${run} $${thr}"; \ + $(run-bench) $${thr} > $${run}-$${thr}.out; \ + done;\ + fi;\ done # Build and execute the benchmark functions. This target generates JSON @@ -234,13 +239,21 @@ bench-func: $(binaries-bench) scripts/benchout.schema.json; \ fi -$(timing-type) $(binaries-bench) $(binaries-benchset) \ - $(binaries-bench-malloc): %: %.o $(objpfx)json-lib.o \ +ifeq ($(bind-now),yes) +link-bench-bind-now = -Wl,-z,now +endif + +bench-link-targets = $(timing-type) $(binaries-bench) $(binaries-benchset) \ + $(binaries-bench-malloc) + +$(bench-link-targets): %: %.o $(objpfx)json-lib.o \ $(link-extra-libs-tests) \ $(sort $(filter $(common-objpfx)lib%,$(link-libc))) \ $(addprefix $(csu-objpfx),start.o) $(+preinit) $(+postinit) $(+link-tests) +$(bench-link-targets): LDFLAGS += $(link-bench-bind-now) + $(objpfx)bench-%.c: %-inputs $(bench-deps) { if [ -n "$($*-INCLUDE)" ]; then \ cat $($*-INCLUDE); \
  53. Download patch benchtests/bench-rawmemchr.c

    --- 2.29-1/benchtests/bench-rawmemchr.c 2019-01-31 16:45:36.000000000 +0000 +++ 2.30-0ubuntu1/benchtests/bench-rawmemchr.c 2019-08-01 04:29:31.000000000 +0000 @@ -17,30 +17,29 @@ <http://www.gnu.org/licenses/>. */ #include <assert.h> +#include <stdint.h> #define TEST_MAIN #define TEST_NAME "rawmemchr" #include "bench-string.h" typedef char *(*proto_t) (const char *, int); -char *simple_rawmemchr (const char *, int); - -IMPL (simple_rawmemchr, 0) -IMPL (rawmemchr, 1) char * -simple_rawmemchr (const char *s, int c) +generic_rawmemchr (const char *s, int c) { - while (1) - if (*s++ == (char) c) - return (char *) s - 1; - return NULL; + if (c != 0) + return memchr (s, c, PTRDIFF_MAX); + return (char *)s + strlen (s); } +IMPL (rawmemchr, 1) +IMPL (generic_rawmemchr, 0) + static void do_one_test (impl_t *impl, const char *s, int c, char *exp_res) { - size_t i, iters = INNER_LOOP_ITERS; + size_t i, iters = INNER_LOOP_ITERS_LARGE * 4; timing_t start, stop, cur; char *res = CALL (impl, s, c); if (res != exp_res)
  54. Download patch debian/patches/any/git-pexpect-pretty-printers.diff

    --- 2.29-1/debian/patches/any/git-pexpect-pretty-printers.diff 2019-09-08 20:31:59.000000000 +0000 +++ 2.30-0ubuntu1/debian/patches/any/git-pexpect-pretty-printers.diff 1970-01-01 00:00:00.000000000 +0000 @@ -1,18 +0,0 @@ -2019-02-14 Jan Kratochvil <jan.kratochvil@redhat.com> - - * scripts/test_printers_common.py: Set TERM to a known harmless - value. - ---- a/scripts/test_printers_common.py -+++ b/scripts/test_printers_common.py -@@ -60,6 +60,10 @@ TIMEOUTFACTOR = os.environ.get('TIMEOUTFACTOR') - if TIMEOUTFACTOR: - timeout = int(TIMEOUTFACTOR) - -+# Otherwise GDB is run in interactive mode and readline may send escape -+# sequences confusing output for pexpect. -+os.environ["TERM"]="dumb" -+ - try: - # Check the gdb version. - version_cmd = '{0} --version'.format(gdb_invocation, timeout=timeout)
  55. Download patch debian/debhelper.in/libc-bin.postinst

    --- 2.29-1/debian/debhelper.in/libc-bin.postinst 2019-07-29 09:56:57.000000000 +0000 +++ 2.30-0ubuntu1/debian/debhelper.in/libc-bin.postinst 2019-08-29 10:14:59.000000000 +0000 @@ -48,6 +48,8 @@ if [ "$1" = "configure" ] && [ "$2" != " fi if [ "$1" = "triggered" ] || [ "$1" = "configure" ]; then + LDCONFIG_NOTRIGGER=y + export LDCONFIG_NOTRIGGER ldconfig || ldconfig --verbose exit 0 fi
  56. Download patch benchtests/bench-strsep.c

    --- 2.29-1/benchtests/bench-strsep.c 2019-01-31 16:45:36.000000000 +0000 +++ 2.30-0ubuntu1/benchtests/bench-strsep.c 2019-08-01 04:29:31.000000000 +0000 @@ -103,7 +103,7 @@ IMPL (oldstrsep, 2) static void do_one_test (impl_t * impl, const char *s1, const char *s2) { - size_t i, iters = INNER_LOOP_ITERS; + size_t i, iters = INNER_LOOP_ITERS_SMALL; timing_t start, stop, cur; TIMING_NOW (start);
  57. Download patch bits/xtitypes.h

    --- 2.29-1/bits/xtitypes.h 2019-01-31 16:45:36.000000000 +0000 +++ 2.30-0ubuntu1/bits/xtitypes.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,33 +0,0 @@ -/* bits/xtitypes.h -- Define some types used by <bits/stropts.h>. Generic. - Copyright (C) 2002-2019 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/>. */ - -#ifndef _STROPTS_H -# error "Never include <bits/xtitypes.h> directly; use <stropts.h> instead." -#endif - -#ifndef _BITS_XTITYPES_H -#define _BITS_XTITYPES_H 1 - -#include <bits/types.h> - -/* This type is used by some structs in <bits/stropts.h>. */ -typedef __SLONGWORD_TYPE __t_scalar_t; -typedef __ULONGWORD_TYPE __t_uscalar_t; - - -#endif /* bits/xtitypes.h */
  58. Download patch benchtests/bench-memmove.c

    --- 2.29-1/benchtests/bench-memmove.c 2019-01-31 16:45:36.000000000 +0000 +++ 2.30-0ubuntu1/benchtests/bench-memmove.c 2019-08-01 04:29:31.000000000 +0000 @@ -17,34 +17,16 @@ <http://www.gnu.org/licenses/>. */ #define TEST_MAIN -#ifdef TEST_BCOPY -# define TEST_NAME "bcopy" -#else -# define TEST_NAME "memmove" -#endif +#define TEST_NAME "memmove" #include "bench-string.h" #include "json-lib.h" char *simple_memmove (char *, const char *, size_t); -#ifdef TEST_BCOPY -typedef void (*proto_t) (const char *, char *, size_t); -void simple_bcopy (const char *, char *, size_t); - -IMPL (simple_bcopy, 0) -IMPL (bcopy, 1) - -void -simple_bcopy (const char *src, char *dst, size_t n) -{ - simple_memmove (dst, src, n); -} -#else typedef char *(*proto_t) (char *, const char *, size_t); -IMPL (simple_memmove, 0) IMPL (memmove, 1) -#endif +IMPL (simple_memmove, 0) char * inhibit_loop_to_libcall @@ -65,8 +47,8 @@ simple_memmove (char *dst, const char *s } static void -do_one_test (json_ctx_t *json_ctx, impl_t *impl, char *dst, char *src, const - char *orig_src, size_t len) +do_one_test (json_ctx_t *json_ctx, impl_t *impl, char *dst, char *src, + size_t len) { size_t i, iters = INNER_LOOP_ITERS; timing_t start, stop, cur; @@ -74,11 +56,7 @@ do_one_test (json_ctx_t *json_ctx, impl_ TIMING_NOW (start); for (i = 0; i < iters; ++i) { -#ifdef TEST_BCOPY - CALL (impl, src, dst, len); -#else CALL (impl, dst, src, len); -#endif } TIMING_NOW (stop); @@ -101,7 +79,7 @@ do_test (json_ctx_t *json_ctx, size_t al if (align2 + len >= page_size) return; - s1 = (char *) (buf1 + align1); + s1 = (char *) (buf2 + align1); s2 = (char *) (buf2 + align2); for (i = 0, j = 1; i < len; i++, j += 23) @@ -114,7 +92,7 @@ do_test (json_ctx_t *json_ctx, size_t al json_array_begin (json_ctx, "timings"); FOR_EACH_IMPL (impl, 0) - do_one_test (json_ctx, impl, s2, (char *) (buf2 + align1), s1, len); + do_one_test (json_ctx, impl, s2, s1, len); json_array_end (json_ctx); json_element_object_end (json_ctx);
  59. Download patch debian/patches/any/submitted-resolv-unaligned.diff

    --- 2.29-1/debian/patches/any/submitted-resolv-unaligned.diff 2019-08-31 13:13:50.000000000 +0000 +++ 2.30-0ubuntu1/debian/patches/any/submitted-resolv-unaligned.diff 2019-08-29 10:12:07.000000000 +0000 @@ -3,8 +3,8 @@ index d80b5318e5..99d7d96027 100644 --- a/resolv/res_mkquery.c +++ b/resolv/res_mkquery.c @@ -83,6 +83,15 @@ - # define RANDOM_BITS(Var) { uint64_t v64; HP_TIMING_NOW (v64); Var = v64; } - #endif + #include <shlib-compat.h> + #include <random-bits.h> +/* The structure HEADER is normally aligned to a word boundary and its + fields are accessed using word loads and stores. We need to access @@ -81,7 +81,7 @@ index 93db5b9a61..36a389509d 100644 +++ b/resolv/res_send.c @@ -110,6 +110,15 @@ #include <libc-diag.h> - #include <hp-timing.h> + #include <random-bits.h> +/* The structure HEADER is normally aligned to a word boundary and its + fields are accessed using word loads and stores. We need to access
  60. Download patch debian/debhelper.in/libc.preinst

    --- 2.29-1/debian/debhelper.in/libc.preinst 2019-08-16 10:57:32.000000000 +0000 +++ 2.30-0ubuntu1/debian/debhelper.in/libc.preinst 2019-08-29 10:14:59.000000000 +0000 @@ -298,6 +298,8 @@ then fi check="kdm postgresql xdm" + # the following substitution processes the check variable + # and returns results in the services variable # NSS services check: __NSS_CHECK__ if [ -n "$services" ]; then @@ -305,7 +307,11 @@ then db_version 2.0 db_reset glibc/upgrade db_subst glibc/upgrade services $services - db_input critical glibc/upgrade || true + if [ "$RELEASE_UPGRADE_MODE" = desktop ]; then + db_input medium glibc/upgrade || true + else + db_input critical glibc/upgrade || true + fi db_go || true db_get glibc/upgrade answer=$RET @@ -348,6 +354,102 @@ then exit 1 fi fi + + services="" + check="apache2 apache apache-ssl apache-perl autofs at" + check="$check boa cucipop courier-authdaemon cron cups exim" + check="$check exim4-base dovecot-common cucipop incron lprng lpr" + check="$check lpr-ppd mysql-server nis openbsd-inetd" + check="$check openldapd postgresql-common proftpd postfix postfix-tls" + check="$check rsync samba sasl2-bin slapd smail sendmail snmpd ssh" + check="$check spamassassin vsftpd wu-ftpd wu-ftpd-academ wwwoffle" + check="$check webmin dropbear gdm gdm3" + # the following substitution processes the check variable + # and returns results in the services variable + # NSS services check: + __NSS_CHECK__ + if [ -n "$services" ]; then + if [ -f /usr/share/debconf/confmodule ] ; then + db_version 2.0 + if [ "$RELEASE_UPGRADE_MODE" = desktop ]; then + db_input medium libraries/restart-without-asking || true + else + db_input critical libraries/restart-without-asking || true + fi + db_go || true + + db_get libraries/restart-without-asking + if [ "$RET" != true ]; then + db_reset glibc/restart-services + db_set glibc/restart-services "$services" + if [ "$RELEASE_UPGRADE_MODE" = desktop ]; then + db_input medium glibc/restart-services || true + else + db_input critical glibc/restart-services || true + fi + db_go || true + db_get glibc/restart-services + services="$RET" + fi + else + echo + echo "Name Service Switch update in the C Library: post-installation question." + echo + echo "Running services and programs that are using NSS need to be restarted," + echo "otherwise they might not be able to do lookup or authentication any more" + echo "(for services such as ssh, this can affect your ability to login)." + echo "Note: restarting sshd/telnetd should not affect any existing connections." + echo + echo "The services detected are: " + echo " $services" + echo + echo "If other services have begun to fail mysteriously after this upgrade, it is" + echo "probably necessary to restart them too. We recommend that you reboot your" + echo "machine after the upgrade to avoid NSS-related troubles." + echo + frontend=`echo "$DEBIAN_FRONTEND" | tr '[:upper:]' '[:lower:]'` + if [ "$frontend" = noninteractive ]; then + echo "Non-interactive mode, restarting services" + answer=yes + else + echo -n "Do you wish to restart services? [Y/n] " + read answer + case $answer in + N*|n*) services="" ;; + *) ;; + esac + fi + fi + + if [ -n "$services" ]; then + echo "Stopping some services possibly affected by the upgrade (will be restarted later):" + for service in $services; do + case "$service" in + cron) + # See bug (LP: #508083) + echo -n " $service: stopping..." + if invoke-rc.d ${service} stop > /dev/null 2>&1; then + echo "done." + echo "$service" >> /var/run/services.need_start + else + echo "FAILED! ($?)" + echo "$service" >> /var/run/services.need_restart + fi + ;; + + *) + # log service details to allow postinst to handle the + # restart. + echo "$service" >> /var/run/services.need_restart + ;; + esac + done + + fi + echo + else + echo "Nothing to restart." + fi fi # end upgrading and $preversion lt GLIBC_VERSION fi # Upgrading
  61. Download patch benchtests/bench-stpcpy.c

    --- 2.29-1/benchtests/bench-stpcpy.c 2019-01-31 16:45:36.000000000 +0000 +++ 2.30-0ubuntu1/benchtests/bench-stpcpy.c 2019-08-01 04:29:31.000000000 +0000 @@ -22,24 +22,18 @@ # define TEST_NAME "stpcpy" #else # define TEST_NAME "wcpcpy" +# define generic_stpcpy generic_wcpcpy #endif /* WIDE */ #include "bench-string.h" -#ifndef WIDE -# define SIMPLE_STPCPY simple_stpcpy -#else -# define SIMPLE_STPCPY simple_wcpcpy -#endif /* WIDE */ - -CHAR *SIMPLE_STPCPY (CHAR *, const CHAR *); - -IMPL (SIMPLE_STPCPY, 0) -IMPL (STPCPY, 1) CHAR * -SIMPLE_STPCPY (CHAR *dst, const CHAR *src) +generic_stpcpy (CHAR *dst, const CHAR *src) { - while ((*dst++ = *src++) != '\0'); - return dst - 1; + size_t len = STRLEN (src); + return (CHAR *) MEMCPY (dst, src, len + 1) + len; } +IMPL (STPCPY, 1) +IMPL (generic_stpcpy, 0) + #include "bench-strcpy.c"
  62. Download patch benchtests/bench-math-inlines.c

    --- 2.29-1/benchtests/bench-math-inlines.c 2019-01-31 16:45:36.000000000 +0000 +++ 2.30-0ubuntu1/benchtests/bench-math-inlines.c 2019-08-01 04:29:31.000000000 +0000 @@ -220,7 +220,7 @@ static void do_one_test (json_ctx_t *json_ctx, proto_t test_fn, volatile double *arr, size_t len, const char *testname) { - size_t iters = 500; + size_t iters = 2048; timing_t start, stop, cur; json_attr_object_begin (json_ctx, testname);
  63. Download patch benchtests/bench-strrchr.c

    --- 2.29-1/benchtests/bench-strrchr.c 2019-01-31 16:45:36.000000000 +0000 +++ 2.30-0ubuntu1/benchtests/bench-strrchr.c 2019-08-01 04:29:31.000000000 +0000 @@ -56,7 +56,7 @@ static void do_one_test (impl_t *impl, const CHAR *s, int c, CHAR *exp_res) { CHAR *res = CALL (impl, s, c); - size_t i, iters = INNER_LOOP_ITERS; + size_t i, iters = INNER_LOOP_ITERS8; timing_t start, stop, cur; if (res != exp_res)
  64. Download patch benchtests/bench-bzero.c

    --- 2.29-1/benchtests/bench-bzero.c 2019-01-31 16:45:36.000000000 +0000 +++ 2.30-0ubuntu1/benchtests/bench-bzero.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,19 +0,0 @@ -/* Measure bzero functions. - Copyright (C) 2013-2019 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/>. */ -#define TEST_BZERO -#include "bench-memset.c"
  65. Download patch debian/local/usr_share_locales/remove-language-pack

    --- 2.29-1/debian/local/usr_share_locales/remove-language-pack 1970-01-01 00:00:00.000000000 +0000 +++ 2.30-0ubuntu1/debian/local/usr_share_locales/remove-language-pack 2019-08-29 10:14:59.000000000 +0000 @@ -0,0 +1,68 @@ +#!/bin/sh -e + +if [ -z "$1" ]; then + echo "Usage: $0 <language code> <class> [<version>]" + exit 0 +fi + +# Copied from locale-gen +normalize_locale() { + # Insert a leading x in case $1 begins with a dash + this_locale=x$1 + charset= + if echo $this_locale | LC_ALL=C grep '\.' > /dev/null 2>&1; then + charset=$(echo $this_locale | sed -e 's/^x//' -e 's/.*\(\.[^@]*\).*/\1/' | LC_ALL=C tr '[A-Z]' '[a-z]' | LC_ALL=C sed -e 's/[^a-z0-9.]//g') + fi + modifier= + if echo $this_locale | LC_ALL=C grep '@' > /dev/null 2>&1; then + modifier=$(echo $this_locale | sed -e 's/^x//' -e 's/.*\(@[^.]*\).*/\1/') + fi + main=$(echo $this_locale | sed -e 's/^x//' -e 's/[.@].*//') + echo $main$charset$modifier +} + +get_supported_local_normalized() { + [ -e /etc/locale.gen ] || return 0 + sort -u /etc/locale.gen | while read locale charset; do + case $locale in + \#*) continue ;; + "") continue ;; + esac + normalize_locale "$locale" + done +} + +remove_locale() { + this_locale=$(normalize_locale "$1") + if ! echo "$supported_local_normalized" | fgrep -qx "$this_locale"; then + if [ -e /usr/lib/locale/locale-archive ]; then + localedef --delete-from-archive "$this_locale" + fi + fi +} + +# remove binary locales +# do nothing for gnome/kde +if [ -z "$2" ]; then + # do not remove locales if we merely remove language-support-* without + # removing language-pack-* + if [ ! -e /var/lib/locales/supported.d/$1 ]; then + supported_local_normalized="$(get_supported_local_normalized)" + if [ "$1" = 'zh-hans' ]; then + remove_locale zh_CN.utf8 + remove_locale zh_SG.utf8 + elif [ "$1" = 'zh-hant' ]; then + remove_locale zh_HK.utf8 + remove_locale zh_TW.utf8 + else + if [ -e /usr/lib/locale/locale-archive ]; then + for l in $(localedef --list-archive|grep "^$1[._@]"); do + remove_locale "$l" + done + fi + fi + fi +fi + +# ensure that .desktop caches are up to date +dpkg-trigger gmenucache || true
  66. Download patch debian/local/manpages/locale-gen.8

    --- 2.29-1/debian/local/manpages/locale-gen.8 2019-07-29 09:56:57.000000000 +0000 +++ 2.30-0ubuntu1/debian/local/manpages/locale-gen.8 2019-08-29 10:14:59.000000000 +0000 @@ -86,6 +86,13 @@ The main configuration file, which has a line that is not empty and does not begin with a # is treated as a locale definition that is to be built. +\fB/var/lib/locales/supported.d/\fP +.PP +A directory containing locale.gen snippets provided by language-pack +packages. Do not edit these manually, they will be overwritten on +package upgrades. +.PP + .SH "SEE ALSO" .PP localedef(1), locale(1), locale.gen(5).
  67. Download patch crypt/sha512.c

    --- 2.29-1/crypt/sha512.c 2019-01-31 16:45:36.000000000 +0000 +++ 2.30-0ubuntu1/crypt/sha512.c 2019-08-01 04:29:31.000000000 +0000 @@ -149,8 +149,8 @@ __sha512_finish_ctx (struct sha512_ctx * /* Put the 128-bit file length in *bits* at the end of the buffer. */ ctx->buffer64[(bytes + pad + 8) / 8] = SWAP (ctx->total[TOTAL128_low] << 3); - ctx->buffer64[(bytes + pad) / 8] = SWAP ((ctx->total[TOTAL128_high] << 3) | - (ctx->total[TOTAL128_low] >> 61)); + ctx->buffer64[(bytes + pad) / 8] = SWAP ((ctx->total[TOTAL128_high] << 3) + | (ctx->total[TOTAL128_low] >> 61)); /* Process last bytes. */ __sha512_process_block (ctx->buffer, bytes + pad + 16, ctx);
  68. Download patch benchtests/bench-strtok.c

    --- 2.29-1/benchtests/bench-strtok.c 2019-01-31 16:45:36.000000000 +0000 +++ 2.30-0ubuntu1/benchtests/bench-strtok.c 2019-08-01 04:29:31.000000000 +0000 @@ -60,7 +60,7 @@ IMPL (strtok, 1) static void do_one_test (impl_t * impl, const char *s1, const char *s2) { - size_t i, iters = INNER_LOOP_ITERS; + size_t i, iters = INNER_LOOP_ITERS_SMALL; timing_t start, stop, cur; TIMING_NOW (start); for (i = 0; i < iters; ++i)
  69. Download patch catgets/gencat.c

    --- 2.29-1/catgets/gencat.c 2019-01-31 16:45:36.000000000 +0000 +++ 2.30-0ubuntu1/catgets/gencat.c 2019-08-01 04:29:31.000000000 +0000 @@ -1196,7 +1196,9 @@ normalize_line (const char *fname, size_ ++rp; } else - /* Simply ignore the backslash character. */; + { + /* Simply ignore the backslash character. */ + } break; } } @@ -1268,7 +1270,7 @@ read_old (struct catalog *catalog, const Insert it at the right position. */ struct message_list *newp; - newp = (struct message_list *) xmalloc (sizeof(*newp)); + newp = (struct message_list *) xmalloc (sizeof (*newp)); newp->number = old_cat_obj.name_ptr[cnt * 3 + 1]; newp->message = &old_cat_obj.strings[old_cat_obj.name_ptr[cnt * 3 + 2]];
  70. Download patch benchtests/bench-strncasecmp.c

    --- 2.29-1/benchtests/bench-strncasecmp.c 2019-01-31 16:45:36.000000000 +0000 +++ 2.30-0ubuntu1/benchtests/bench-strncasecmp.c 2019-08-01 04:29:31.000000000 +0000 @@ -23,9 +23,7 @@ typedef int (*proto_t) (const char *, const char *, size_t); static int simple_strncasecmp (const char *, const char *, size_t); -static int stupid_strncasecmp (const char *, const char *, size_t); -IMPL (stupid_strncasecmp, 0) IMPL (simple_strncasecmp, 0) IMPL (strncasecmp, 1) @@ -46,27 +44,6 @@ simple_strncasecmp (const char *s1, cons ++s2; } return ret; -} - -static int -stupid_strncasecmp (const char *s1, const char *s2, size_t max) -{ - size_t ns1 = strlen (s1) + 1; - size_t ns2 = strlen (s2) + 1; - size_t n = ns1 < ns2 ? ns1 : ns2; - if (n > max) - n = max; - int ret = 0; - - while (n--) - { - if ((ret = ((unsigned char) tolower (*s1) - - (unsigned char) tolower (*s2))) != 0) - break; - ++s1; - ++s2; - } - return ret; } static void
  71. Download patch debian/changelog.ubuntu
  72. Download patch argp/Makefile

    --- 2.29-1/argp/Makefile 2019-01-31 16:45:36.000000000 +0000 +++ 2.30-0ubuntu1/argp/Makefile 2019-08-01 04:29:31.000000000 +0000 @@ -22,7 +22,7 @@ subdir := argp include ../Makeconfig -headers = argp.h +headers = argp.h bits/argp-ldbl.h routines = $(addprefix argp-, ba fmtstream fs-xinl help parse pv \ pvh xinl eexst)
  73. Download patch debian/patches/any/git-libio-stdout-putc.diff
  74. Download patch debian/local/usr_share_locales/install-language-pack

    --- 2.29-1/debian/local/usr_share_locales/install-language-pack 1970-01-01 00:00:00.000000000 +0000 +++ 2.30-0ubuntu1/debian/local/usr_share_locales/install-language-pack 2019-08-29 10:14:59.000000000 +0000 @@ -0,0 +1,19 @@ +#!/bin/sh -e + +if [ -z "$1" ]; then + echo "Usage: $0 <language code> <class> [<version>]" + exit 0 +fi + +# install locales for base packages (not for gnome/kde) +if [ -z "$2" ]; then + # Update requested locales if locales-all is not installed + if dpkg-query -s locales-all >/dev/null 2>&1 ; then + echo "locales-all installed, skipping locales generation" + else + /usr/sbin/locale-gen --keep-existing "$1" + fi +fi + +# ensure that .desktop caches are up to date +dpkg-trigger gmenucache || true
  75. Download patch benchtests/bench-strcspn.c

    --- 2.29-1/benchtests/bench-strcspn.c 2019-01-31 16:45:36.000000000 +0000 +++ 2.30-0ubuntu1/benchtests/bench-strcspn.c 2019-08-01 04:29:31.000000000 +0000 @@ -28,17 +28,13 @@ #ifndef WIDE # define SIMPLE_STRCSPN simple_strcspn -# define STUPID_STRCSPN stupid_strcspn #else # define SIMPLE_STRCSPN simple_wcscspn -# define STUPID_STRCSPN stupid_wcscspn #endif /* WIDE */ typedef size_t (*proto_t) (const CHAR *, const CHAR *); size_t SIMPLE_STRCSPN (const CHAR *, const CHAR *); -size_t STUPID_STRCSPN (const CHAR *, const CHAR *); -IMPL (STUPID_STRCSPN, 0) IMPL (SIMPLE_STRCSPN, 0) IMPL (STRCSPN, 1) @@ -55,17 +51,4 @@ SIMPLE_STRCSPN (const CHAR *s, const CHA return s - str - 1; } -size_t -STUPID_STRCSPN (const CHAR *s, const CHAR *rej) -{ - size_t ns = STRLEN (s), nrej = STRLEN (rej); - size_t i, j; - - for (i = 0; i < ns; ++i) - for (j = 0; j < nrej; ++j) - if (s[i] == rej[j]) - return i; - return i; -} - #include "bench-strpbrk.c"
  76. Download patch debian/debhelper.in/locales.postinst

    --- 2.29-1/debian/debhelper.in/locales.postinst 2019-08-16 10:57:32.000000000 +0000 +++ 2.30-0ubuntu1/debian/debhelper.in/locales.postinst 2019-08-29 10:14:59.000000000 +0000 @@ -73,6 +73,11 @@ EOF update-locale "LANG=$DEFAULT_ENVIRONMENT" fi fi + # Remove cruft from locales from Ubuntu << 16.04: + if dpkg --compare-versions "$2" lt 2.23; then + rm -f /var/lib/locales/supported.d/local + rm -rf /var/lib/belocs + fi fi #DEBHELPER#
  77. Download patch ChangeLog.old/ChangeLog.18

    --- 2.29-1/ChangeLog.old/ChangeLog.18 2019-01-31 16:45:36.000000000 +0000 +++ 2.30-0ubuntu1/ChangeLog.old/ChangeLog.18 2019-08-01 04:29:31.000000000 +0000 @@ -2108,6 +2108,7 @@ 2017-06-20 Zack Weinberg <zackw@panix.com> + [BZ #2489] * bits/signum-generic.h: Renamed from bits/signum.h. Add proper multiple include guard and misuse check. Define __SIGRTMIN = __SIGRTMAX = 32, and define _NSIG = __SIGRTMAX+1. @@ -14295,6 +14296,7 @@ 2016-11-24 Adhemerval Zanella <adhemerval.zanella@linaro.org> + [BZ #651] * sysdeps/nptl/fork.c (__libc_fork): Remove pid cache setting. * nptl/allocatestack.c (allocate_stack): Likewise. (__reclaim_stacks): Likewise. @@ -79025,6 +79027,7 @@ 2012-08-01 Florian Weimer <fweimer@redhat.com> + [BZ #2705] * posix/unistd.h (setuid, setreuid, seteuid, setresuid): Declare with warn_unused_result. (setgid, setregid, setegid, setresgid): Likewise.
  78. Download patch benchtests/bench-strcpy_chk.c

    --- 2.29-1/benchtests/bench-strcpy_chk.c 2019-01-31 16:45:36.000000000 +0000 +++ 2.30-0ubuntu1/benchtests/bench-strcpy_chk.c 2019-08-01 04:29:31.000000000 +0000 @@ -77,7 +77,7 @@ do_one_test (impl_t *impl, char *dst, co size_t len, size_t dlen) { char *res; - size_t i, iters = INNER_LOOP_ITERS; + size_t i, iters = INNER_LOOP_ITERS8; timing_t start, stop, cur; if (dlen <= len)
  79. Download patch benchtests/bench-bcopy.c

    --- 2.29-1/benchtests/bench-bcopy.c 2019-01-31 16:45:36.000000000 +0000 +++ 2.30-0ubuntu1/benchtests/bench-bcopy.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,20 +0,0 @@ -/* Measure bcopy functions. - Copyright (C) 2013-2019 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/>. */ - -#define TEST_BCOPY -#include "bench-memmove.c"
  80. Download patch argp/argp-help.c

    --- 2.29-1/argp/argp-help.c 2019-01-31 16:45:36.000000000 +0000 +++ 2.30-0ubuntu1/argp/argp-help.c 2019-08-01 04:29:31.000000000 +0000 @@ -1750,7 +1750,8 @@ weak_alias (__argp_state_help, argp_stat by the program name and `:', to stderr, and followed by a `Try ... --help' message, then exit (1). */ void -__argp_error (const struct argp_state *state, const char *fmt, ...) +__argp_error_internal (const struct argp_state *state, const char *fmt, + va_list ap, unsigned int mode_flags) { if (!state || !(state->flags & ARGP_NO_ERRS)) { @@ -1758,18 +1759,14 @@ __argp_error (const struct argp_state *s if (stream) { - va_list ap; - #if _LIBC || (HAVE_FLOCKFILE && HAVE_FUNLOCKFILE) __flockfile (stream); #endif - va_start (ap, fmt); - #ifdef _LIBC char *buf; - if (__vasprintf_internal (&buf, fmt, ap, 0) < 0) + if (__vasprintf_internal (&buf, fmt, ap, mode_flags) < 0) buf = NULL; __fxprintf (stream, "%s: %s\n", @@ -1789,14 +1786,20 @@ __argp_error (const struct argp_state *s __argp_state_help (state, stream, ARGP_HELP_STD_ERR); - va_end (ap); - #if _LIBC || (HAVE_FLOCKFILE && HAVE_FUNLOCKFILE) __funlockfile (stream); #endif } } } +void +__argp_error (const struct argp_state *state, const char *fmt, ...) +{ + va_list ap; + va_start (ap, fmt); + __argp_error_internal (state, fmt, ap, 0); + va_end (ap); +} #ifdef weak_alias weak_alias (__argp_error, argp_error) #endif @@ -1810,8 +1813,9 @@ weak_alias (__argp_error, argp_error) *parsing errors*, and the former is for other problems that occur during parsing but don't reflect a (syntactic) problem with the input. */ void -__argp_failure (const struct argp_state *state, int status, int errnum, - const char *fmt, ...) +__argp_failure_internal (const struct argp_state *state, int status, + int errnum, const char *fmt, va_list ap, + unsigned int mode_flags) { if (!state || !(state->flags & ARGP_NO_ERRS)) { @@ -1833,13 +1837,10 @@ __argp_failure (const struct argp_state if (fmt) { - va_list ap; - - va_start (ap, fmt); #ifdef _LIBC char *buf; - if (__vasprintf_internal (&buf, fmt, ap, 0) < 0) + if (__vasprintf_internal (&buf, fmt, ap, mode_flags) < 0) buf = NULL; __fxprintf (stream, ": %s", buf); @@ -1851,8 +1852,6 @@ __argp_failure (const struct argp_state vfprintf (stream, fmt, ap); #endif - - va_end (ap); } if (errnum) @@ -1889,6 +1888,15 @@ __argp_failure (const struct argp_state } } } +void +__argp_failure (const struct argp_state *state, int status, int errnum, + const char *fmt, ...) +{ + va_list ap; + va_start (ap, fmt); + __argp_failure_internal (state, status, errnum, fmt, ap, 0); + va_end (ap); +} #ifdef weak_alias weak_alias (__argp_failure, argp_failure) #endif
  81. Download patch benchtests/bench-strstr.c
  82. Download patch debian/patches/hurd-i386/git-anon-mmap-shared.diff

    --- 2.29-1/debian/patches/hurd-i386/git-anon-mmap-shared.diff 1970-01-01 00:00:00.000000000 +0000 +++ 2.30-0ubuntu1/debian/patches/hurd-i386/git-anon-mmap-shared.diff 2019-08-29 10:14:59.000000000 +0000 @@ -0,0 +1,36 @@ +Optimizing anonymous maps brings bugs, and does not optimize much anyway. + +https://sourceware.org/bugzilla/show_bug.cgi?id=19903 + +--- a/sysdeps/mach/hurd/mmap.c ++++ b/sysdeps/mach/hurd/mmap.c +@@ -44,29 +44,6 @@ __mmap (__ptr_t addr, size_t len, int pr + if ((mapaddr & (__vm_page_size - 1)) || (offset & (__vm_page_size - 1))) + return (void *) (long int) __hurd_fail (EINVAL); + +- if ((flags & (MAP_TYPE|MAP_INHERIT)) == MAP_ANON +- && prot == (PROT_READ|PROT_WRITE)) /* cf VM_PROT_DEFAULT */ +- { +- /* vm_allocate has (a little) less overhead in the kernel too. */ +- err = __vm_allocate (__mach_task_self (), &mapaddr, len, mapaddr == 0); +- +- if (err == KERN_NO_SPACE) +- { +- if (flags & MAP_FIXED) +- { +- /* XXX this is not atomic as it is in unix! */ +- /* The region is already allocated; deallocate it first. */ +- err = __vm_deallocate (__mach_task_self (), mapaddr, len); +- if (!err) +- err = __vm_allocate (__mach_task_self (), &mapaddr, len, 0); +- } +- else if (mapaddr != 0) +- err = __vm_allocate (__mach_task_self (), &mapaddr, len, 1); +- } +- +- return err ? (void *) (long int) __hurd_fail (err) : (void *) mapaddr; +- } +- + vmprot = VM_PROT_NONE; + if (prot & PROT_READ) + vmprot |= VM_PROT_READ;
  83. Download patch debian/patches/any/git-socket-constants.diff
  84. Download patch benchtests/bench-strlen.c

    --- 2.29-1/benchtests/bench-strlen.c 2019-01-31 16:45:36.000000000 +0000 +++ 2.30-0ubuntu1/benchtests/bench-strlen.c 2019-08-01 04:29:31.000000000 +0000 @@ -21,6 +21,8 @@ # define TEST_NAME "strlen" #else # define TEST_NAME "wcslen" +# define generic_strlen generic_wcslen +# define memchr_strlen wcschr_wcslen #endif #include "bench-string.h" @@ -34,15 +36,6 @@ size_t memchr_strlen (const CHAR *); IMPL (memchr_strlen, 0) IMPL (generic_strlen, 0) -#ifndef WIDE -size_t -builtin_strlen (const CHAR *p) -{ - return __builtin_strlen (p); -} -IMPL (builtin_strlen, 0) -#endif - size_t memchr_strlen (const CHAR *p) { @@ -55,7 +48,7 @@ IMPL (STRLEN, 1) static void do_one_test (json_ctx_t *json_ctx, impl_t *impl, const CHAR *s, size_t exp_len) { - size_t len = CALL (impl, s), i, iters = INNER_LOOP_ITERS; + size_t len = CALL (impl, s), i, iters = INNER_LOOP_ITERS_LARGE; timing_t start, stop, cur; if (len != exp_len) @@ -84,7 +77,7 @@ do_test (json_ctx_t *json_ctx, size_t al size_t i; align &= 63; - if (align + sizeof(CHAR) * len >= page_size) + if (align + sizeof (CHAR) * len >= page_size) return; json_element_object_begin (json_ctx); @@ -136,16 +129,16 @@ test_main (void) for (i = 1; i < 8; ++i) { - do_test (&json_ctx, sizeof(CHAR) * i, i); + do_test (&json_ctx, sizeof (CHAR) * i, i); do_test (&json_ctx, 0, i); } for (i = 2; i <= 12; ++i) { do_test (&json_ctx, 0, 1 << i); - do_test (&json_ctx, sizeof(CHAR) * 7, 1 << i); - do_test (&json_ctx, sizeof(CHAR) * i, 1 << i); - do_test (&json_ctx, sizeof(CHAR) * i, (size_t)((1 << i) / 1.5)); + do_test (&json_ctx, sizeof (CHAR) * 7, 1 << i); + do_test (&json_ctx, sizeof (CHAR) * i, 1 << i); + do_test (&json_ctx, sizeof (CHAR) * i, (size_t)((1 << i) / 1.5)); } json_array_end (&json_ctx);
  85. Download patch config.h.in

    --- 2.29-1/config.h.in 2019-01-31 16:45:36.000000000 +0000 +++ 2.30-0ubuntu1/config.h.in 2019-08-01 04:29:31.000000000 +0000 @@ -71,6 +71,9 @@ /* Define if assembler supports z13 zarch instructions as default on S390. */ #undef HAVE_S390_MIN_Z13_ZARCH_ASM_SUPPORT +/* Define if assembler supports arch13 zarch instruction as default on S390. */ +#undef HAVE_S390_MIN_ARCH13_ZARCH_ASM_SUPPORT + /* Define if assembler supports vector instructions on S390. */ #undef HAVE_S390_VX_ASM_SUPPORT @@ -78,6 +81,9 @@ on S390. */ #undef HAVE_S390_VX_GCC_SUPPORT +/* Define if assembler supports arch13 instructions on S390. */ +#undef HAVE_S390_ARCH13_ASM_SUPPORT + /* Define if assembler supports Intel MPX. */ #undef HAVE_MPX_SUPPORT
  86. Download patch benchtests/bench-strcpy.c

    --- 2.29-1/benchtests/bench-strcpy.c 2019-01-31 16:45:36.000000000 +0000 +++ 2.30-0ubuntu1/benchtests/bench-strcpy.c 2019-08-01 04:29:31.000000000 +0000 @@ -33,26 +33,19 @@ # define TEST_NAME "strcpy" # else # define TEST_NAME "wcscpy" +# define generic_strcpy generic_wcscpy # endif -# include "bench-string.h" -# ifndef WIDE -# define SIMPLE_STRCPY simple_strcpy -# else -# define SIMPLE_STRCPY simple_wcscpy -# endif - -CHAR *SIMPLE_STRCPY (CHAR *, const CHAR *); - -IMPL (SIMPLE_STRCPY, 0) -IMPL (STRCPY, 1) +#include "bench-string.h" CHAR * -SIMPLE_STRCPY (CHAR *dst, const CHAR *src) +generic_strcpy (CHAR *dst, const CHAR *src) { - CHAR *ret = dst; - while ((*dst++ = *src++) != '\0'); - return ret; + return MEMCPY (dst, src, STRLEN (src) + 1); } + +IMPL (STRCPY, 1) +IMPL (generic_strcpy, 0) + #endif typedef CHAR *(*proto_t) (CHAR *, const CHAR *); @@ -102,11 +95,11 @@ do_test (size_t align1, size_t align2, s but in wchar_ts, in bytes it will equal to align * (sizeof (wchar_t)) len for wcschr here isn't in bytes but it's number of wchar_t symbols. */ align1 &= 7; - if ((align1 + len) * sizeof(CHAR) >= page_size) + if ((align1 + len) * sizeof (CHAR) >= page_size) return; align2 &= 7; - if ((align2 + len) * sizeof(CHAR) >= page_size) + if ((align2 + len) * sizeof (CHAR) >= page_size) return; s1 = (CHAR *) (buf1) + align1; @@ -116,7 +109,8 @@ do_test (size_t align1, size_t align2, s s1[i] = 32 + 23 * i % (max_char - 32); s1[len] = 0; - printf ("Length %4zd, alignments in bytes %2zd/%2zd:", len, align1 * sizeof(CHAR), align2 * sizeof(CHAR)); + printf ("Length %4zd, alignments in bytes %2zd/%2zd:", len, + align1 * sizeof (CHAR), align2 * sizeof (CHAR)); FOR_EACH_IMPL (impl, 0) do_one_test (impl, s2, s1, len);
  87. Download patch benchtests/bench-malloc-simple.c

    --- 2.29-1/benchtests/bench-malloc-simple.c 1970-01-01 00:00:00.000000000 +0000 +++ 2.30-0ubuntu1/benchtests/bench-malloc-simple.c 2019-08-01 04:29:31.000000000 +0000 @@ -0,0 +1,185 @@ +/* Benchmark malloc and free functions. + Copyright (C) 2019 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 <pthread.h> +#include <stdio.h> +#include <stdlib.h> +#include <malloc.h> +#include <sys/resource.h> +#include "bench-timing.h" +#include "json-lib.h" + +/* Benchmark the malloc/free performance of a varying number of blocks of a + given size. This enables performance tracking of the t-cache and fastbins. + It tests 3 different scenarios: single-threaded using main arena, + multi-threaded using thread-arena, and main arena with SINGLE_THREAD_P + false. */ + +#define NUM_ITERS 200000 +#define NUM_ALLOCS 4 +#define MAX_ALLOCS 1600 + +typedef struct +{ + size_t iters; + size_t size; + int n; + timing_t elapsed; +} malloc_args; + +static void +do_benchmark (malloc_args *args, int **arr) +{ + timing_t start, stop; + size_t iters = args->iters; + size_t size = args->size; + int n = args->n; + + TIMING_NOW (start); + + for (int j = 0; j < iters; j++) + { + for (int i = 0; i < n; i++) + arr[i] = malloc (size); + + for (int i = 0; i < n; i++) + free (arr[i]); + } + + TIMING_NOW (stop); + + TIMING_DIFF (args->elapsed, start, stop); +} + +static malloc_args tests[3][NUM_ALLOCS]; +static int allocs[NUM_ALLOCS] = { 25, 100, 400, MAX_ALLOCS }; + +static void * +thread_test (void *p) +{ + int **arr = (int**)p; + + /* Run benchmark multi-threaded. */ + for (int i = 0; i < NUM_ALLOCS; i++) + do_benchmark (&tests[2][i], arr); + + return p; +} + +void +bench (unsigned long size) +{ + size_t iters = NUM_ITERS; + int **arr = (int**) malloc (MAX_ALLOCS * sizeof (void*)); + + for (int t = 0; t < 3; t++) + for (int i = 0; i < NUM_ALLOCS; i++) + { + tests[t][i].n = allocs[i]; + tests[t][i].size = size; + tests[t][i].iters = iters / allocs[i]; + + /* Do a quick warmup run. */ + if (t == 0) + do_benchmark (&tests[0][i], arr); + } + + /* Run benchmark single threaded in main_arena. */ + for (int i = 0; i < NUM_ALLOCS; i++) + do_benchmark (&tests[0][i], arr); + + /* Run benchmark in a thread_arena. */ + pthread_t t; + pthread_create (&t, NULL, thread_test, (void*)arr); + pthread_join (t, NULL); + + /* Repeat benchmark in main_arena with SINGLE_THREAD_P == false. */ + for (int i = 0; i < NUM_ALLOCS; i++) + do_benchmark (&tests[1][i], arr); + + free (arr); + + json_ctx_t json_ctx; + + json_init (&json_ctx, 0, stdout); + + json_document_begin (&json_ctx); + + json_attr_string (&json_ctx, "timing_type", TIMING_TYPE); + + json_attr_object_begin (&json_ctx, "functions"); + + json_attr_object_begin (&json_ctx, "malloc"); + + char s[100]; + double iters2 = iters; + + json_attr_object_begin (&json_ctx, ""); + json_attr_double (&json_ctx, "malloc_block_size", size); + + struct rusage usage; + getrusage (RUSAGE_SELF, &usage); + json_attr_double (&json_ctx, "max_rss", usage.ru_maxrss); + + for (int i = 0; i < NUM_ALLOCS; i++) + { + sprintf (s, "main_arena_st_allocs_%04d_time", allocs[i]); + json_attr_double (&json_ctx, s, tests[0][i].elapsed / iters2); + } + + for (int i = 0; i < NUM_ALLOCS; i++) + { + sprintf (s, "main_arena_mt_allocs_%04d_time", allocs[i]); + json_attr_double (&json_ctx, s, tests[1][i].elapsed / iters2); + } + + for (int i = 0; i < NUM_ALLOCS; i++) + { + sprintf (s, "thread_arena__allocs_%04d_time", allocs[i]); + json_attr_double (&json_ctx, s, tests[2][i].elapsed / iters2); + } + + json_attr_object_end (&json_ctx); + + json_attr_object_end (&json_ctx); + + json_attr_object_end (&json_ctx); + + json_document_end (&json_ctx); +} + +static void usage (const char *name) +{ + fprintf (stderr, "%s: <alloc_size>\n", name); + exit (1); +} + +int +main (int argc, char **argv) +{ + long val = 16; + if (argc == 2) + val = strtol (argv[1], NULL, 0); + + if (argc > 2 || val <= 0) + usage (argv[0]); + + bench (val); + + return 0; +}
  88. Download patch bits/signal_ext.h

    --- 2.29-1/bits/signal_ext.h 1970-01-01 00:00:00.000000000 +0000 +++ 2.30-0ubuntu1/bits/signal_ext.h 2019-08-01 04:29:31.000000000 +0000 @@ -0,0 +1,21 @@ +/* System-specific extensions of <signal.h>, generic version. + Copyright (C) 2019 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/>. */ + +#ifndef _SIGNAL_H +# error "Never include <bits/signal_ext.h> directly; use <signal.h> instead." +#endif
  89. Download patch benchtests/bench-strcasestr.c

    --- 2.29-1/benchtests/bench-strcasestr.c 2019-01-31 16:45:36.000000000 +0000 +++ 2.30-0ubuntu1/benchtests/bench-strcasestr.c 2019-08-01 04:29:31.000000000 +0000 @@ -27,33 +27,8 @@ #define __strnlen strnlen #include "../string/strcasestr.c" - -static char * -stupid_strcasestr (const char *s1, const char *s2) -{ - ssize_t s1len = strlen (s1); - ssize_t s2len = strlen (s2); - - if (s2len > s1len) - return NULL; - - for (ssize_t i = 0; i <= s1len - s2len; ++i) - { - size_t j; - for (j = 0; j < s2len; ++j) - if (tolower (s1[i + j]) != tolower (s2[j])) - break; - if (j == s2len) - return (char *) s1 + i; - } - - return NULL; -} - - typedef char *(*proto_t) (const char *, const char *); -IMPL (stupid_strcasestr, 0) IMPL (simple_strcasestr, 0) IMPL (strcasestr, 1) @@ -61,7 +36,7 @@ IMPL (strcasestr, 1) static void do_one_test (impl_t *impl, const char *s1, const char *s2, char *exp_result) { - size_t i, iters = INNER_LOOP_ITERS; + size_t i, iters = INNER_LOOP_ITERS_SMALL; timing_t start, stop, cur; TIMING_NOW (start);
  90. Download patch benchtests/bench-skeleton.c

    --- 2.29-1/benchtests/bench-skeleton.c 2019-01-31 16:45:36.000000000 +0000 +++ 2.30-0ubuntu1/benchtests/bench-skeleton.c 2019-08-01 04:29:31.000000000 +0000 @@ -29,9 +29,9 @@ #include "bench-util.c" #define TIMESPEC_AFTER(a, b) \ - (((a).tv_sec == (b).tv_sec) ? \ - ((a).tv_nsec > (b).tv_nsec) : \ - ((a).tv_sec > (b).tv_sec)) + (((a).tv_sec == (b).tv_sec) \ + ? ((a).tv_nsec > (b).tv_nsec) \ + : ((a).tv_sec > (b).tv_sec)) int main (int argc, char **argv) { @@ -48,14 +48,11 @@ main (int argc, char **argv) memset (&runtime, 0, sizeof (runtime)); - unsigned long iters, res; + unsigned long iters = 1000; #ifdef BENCH_INIT BENCH_INIT (); #endif - TIMING_INIT (res); - - iters = 1000 * res; json_init (&json_ctx, 2, stdout);
  91. Download patch crypt/sha256.c

    --- 2.29-1/crypt/sha256.c 2019-01-31 16:45:36.000000000 +0000 +++ 2.30-0ubuntu1/crypt/sha256.c 2019-08-01 04:29:31.000000000 +0000 @@ -125,8 +125,8 @@ __sha256_finish_ctx (struct sha256_ctx * ctx->buffer64[(bytes + pad) / 8] = SWAP64 (ctx->total64 << 3); #else ctx->buffer32[(bytes + pad + 4) / 4] = SWAP (ctx->total[TOTAL64_low] << 3); - ctx->buffer32[(bytes + pad) / 4] = SWAP ((ctx->total[TOTAL64_high] << 3) | - (ctx->total[TOTAL64_low] >> 29)); + ctx->buffer32[(bytes + pad) / 4] = SWAP ((ctx->total[TOTAL64_high] << 3) + | (ctx->total[TOTAL64_low] >> 29)); #endif /* Process last bytes. */
  92. Download patch crypt/md5.c

    --- 2.29-1/crypt/md5.c 2019-01-31 16:45:36.000000000 +0000 +++ 2.30-0ubuntu1/crypt/md5.c 2019-08-01 04:29:31.000000000 +0000 @@ -116,8 +116,8 @@ md5_finish_ctx (struct md5_ctx *ctx, voi /* Put the 64-bit file length in *bits* at the end of the buffer. */ ctx->buffer32[(bytes + pad) / 4] = SWAP (ctx->total[0] << 3); - ctx->buffer32[(bytes + pad + 4) / 4] = SWAP ((ctx->total[1] << 3) | - (ctx->total[0] >> 29)); + ctx->buffer32[(bytes + pad + 4) / 4] = SWAP ((ctx->total[1] << 3) + | (ctx->total[0] >> 29)); /* Process last bytes. */ __md5_process_block (ctx->buffer, bytes + pad + 8, ctx);
  93. Download patch benchtests/bench-memmove-walk.c

    --- 2.29-1/benchtests/bench-memmove-walk.c 2019-01-31 16:45:36.000000000 +0000 +++ 2.30-0ubuntu1/benchtests/bench-memmove-walk.c 2019-08-01 04:29:31.000000000 +0000 @@ -107,23 +107,15 @@ test_main (void) /* Non-overlapping buffers. */ for (size_t i = START_SIZE; i <= MIN_PAGE_SIZE; i <<= 1) { - /* Test length alignments from 0-16 bytes. */ - for (int j = 0; j < 8; j++) - { - do_test (&json_ctx, i + j, false); - do_test (&json_ctx, i + 16 - j, false); - } + do_test (&json_ctx, i, false); + do_test (&json_ctx, i + 1, false); } /* Overlapping buffers. */ for (size_t i = START_SIZE; i <= MIN_PAGE_SIZE; i <<= 1) { - /* Test length alignments from 0-16 bytes. */ - for (int j = 0; j < 8; j++) - { - do_test (&json_ctx, i + j, true); - do_test (&json_ctx, i + 16 - j, true); - } + do_test (&json_ctx, i, true); + do_test (&json_ctx, i + 1, true); } json_array_end (&json_ctx);
  94. Download patch benchtests/bench-memcpy.c

    --- 2.29-1/benchtests/bench-memcpy.c 2019-01-31 16:45:36.000000000 +0000 +++ 2.30-0ubuntu1/benchtests/bench-memcpy.c 2019-08-01 04:29:31.000000000 +0000 @@ -23,13 +23,6 @@ # define TEST_NAME "memcpy" # include "bench-string.h" -char *simple_memcpy (char *, const char *, size_t); -char *builtin_memcpy (char *, const char *, size_t); - -IMPL (simple_memcpy, 0) -IMPL (builtin_memcpy, 0) -IMPL (memcpy, 1) - char * simple_memcpy (char *dst, const char *src, size_t n) { @@ -39,11 +32,9 @@ simple_memcpy (char *dst, const char *sr return ret; } -char * -builtin_memcpy (char *dst, const char *src, size_t n) -{ - return __builtin_memcpy (dst, src, n); -} +IMPL (memcpy, 1) +IMPL (simple_memcpy, 0) + #endif # include "json-lib.h"
  95. Download patch bits/unistd_ext.h

    --- 2.29-1/bits/unistd_ext.h 1970-01-01 00:00:00.000000000 +0000 +++ 2.30-0ubuntu1/bits/unistd_ext.h 2019-08-01 04:29:31.000000000 +0000 @@ -0,0 +1,21 @@ +/* System-specific extensions of <unistd.h>, generic version. + Copyright (C) 2019 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/>. */ + +#ifndef _UNISTD_H +# error "Never include <bits/unistd_ext.h> directly; use <unistd.h> instead." +#endif
  96. Download patch benchtests/bench-strncmp.c

    --- 2.29-1/benchtests/bench-strncmp.c 2019-01-31 16:45:36.000000000 +0000 +++ 2.30-0ubuntu1/benchtests/bench-strncmp.c 2019-08-01 04:29:31.000000000 +0000 @@ -28,7 +28,6 @@ #ifdef WIDE # define L(str) L##str # define SIMPLE_STRNCMP simple_wcsncmp -# define STUPID_STRNCMP stupid_wcsncmp /* Wcsncmp uses signed semantics for comparison, not unsigned. Avoid using substraction since possible overflow. */ @@ -47,29 +46,9 @@ simple_wcsncmp (const CHAR *s1, const CH return 0; } -int -stupid_wcsncmp (const CHAR *s1, const CHAR *s2, size_t n) -{ - wchar_t c1, c2; - size_t ns1 = wcsnlen (s1, n) + 1, ns2 = wcsnlen (s2, n) + 1; - - n = ns1 < n ? ns1 : n; - n = ns2 < n ? ns2 : n; - - while (n--) - { - c1 = *s1++; - c2 = *s2++; - if (c1 != c2) - return c1 > c2 ? 1 : -1; - } - return 0; -} - #else # define L(str) str # define SIMPLE_STRNCMP simple_strncmp -# define STUPID_STRNCMP stupid_strncmp /* Strncmp uses unsigned semantics for comparison. */ int @@ -82,23 +61,10 @@ simple_strncmp (const char *s1, const ch return ret; } -int -stupid_strncmp (const char *s1, const char *s2, size_t n) -{ - size_t ns1 = strnlen (s1, n) + 1, ns2 = strnlen (s2, n) + 1; - int ret = 0; - - n = ns1 < n ? ns1 : n; - n = ns2 < n ? ns2 : n; - while (n-- && (ret = *(unsigned char *) s1++ - *(unsigned char *) s2++) == 0); - return ret; -} - #endif /* !WIDE */ typedef int (*proto_t) (const CHAR *, const CHAR *, size_t); -IMPL (STUPID_STRNCMP, 0) IMPL (SIMPLE_STRNCMP, 0) IMPL (STRNCMP, 1) @@ -107,7 +73,7 @@ static void do_one_test (json_ctx_t *json_ctx, impl_t *impl, const CHAR *s1, const CHAR *s2, size_t n, int exp_result) { - size_t i, iters = INNER_LOOP_ITERS; + size_t i, iters = INNER_LOOP_ITERS8; timing_t start, stop, cur; TIMING_NOW (start);
  97. Download patch benchtests/bench-memcpy-random.c

    --- 2.29-1/benchtests/bench-memcpy-random.c 2019-01-31 16:45:36.000000000 +0000 +++ 2.30-0ubuntu1/benchtests/bench-memcpy-random.c 2019-08-01 04:29:31.000000000 +0000 @@ -101,7 +101,7 @@ do_one_test (json_ctx_t *json_ctx, impl_ copy_t *copy, size_t n) { timing_t start, stop, cur; - size_t iters = INNER_LOOP_ITERS * 20; + size_t iters = INNER_LOOP_ITERS_MEDIUM; TIMING_NOW (start); for (int i = 0; i < iters; ++i)
  98. Download patch benchtests/bench-memset.c

    --- 2.29-1/benchtests/bench-memset.c 2019-01-31 16:45:36.000000000 +0000 +++ 2.30-0ubuntu1/benchtests/bench-memset.c 2019-08-01 04:29:31.000000000 +0000 @@ -17,66 +17,22 @@ <http://www.gnu.org/licenses/>. */ #define TEST_MAIN -#ifdef TEST_BZERO -# define TEST_NAME "bzero" -#else -# ifndef WIDE -# define TEST_NAME "memset" -# else -# define TEST_NAME "wmemset" -# endif /* WIDE */ -#endif /* !TEST_BZERO */ -#define MIN_PAGE_SIZE 131072 -#include "bench-string.h" - #ifndef WIDE -# define SIMPLE_MEMSET simple_memset +# define TEST_NAME "memset" #else -# define SIMPLE_MEMSET simple_wmemset +# define TEST_NAME "wmemset" #endif /* WIDE */ +#define MIN_PAGE_SIZE 131072 +#include "bench-string.h" #include "json-lib.h" CHAR *SIMPLE_MEMSET (CHAR *, int, size_t); -#ifdef TEST_BZERO -typedef void (*proto_t) (char *, size_t); -void simple_bzero (char *, size_t); -void builtin_bzero (char *, size_t); - -IMPL (simple_bzero, 0) -IMPL (builtin_bzero, 0) -IMPL (bzero, 1) - -void -simple_bzero (char *s, size_t n) -{ - SIMPLE_MEMSET (s, 0, n); -} - -void -builtin_bzero (char *s, size_t n) -{ - __builtin_bzero (s, n); -} -#else typedef CHAR *(*proto_t) (CHAR *, int, size_t); -IMPL (SIMPLE_MEMSET, 0) -# ifndef WIDE -char *builtin_memset (char *, int, size_t); -IMPL (builtin_memset, 0) -# endif /* !WIDE */ IMPL (MEMSET, 1) - -# ifndef WIDE -char * -builtin_memset (char *s, int c, size_t n) -{ - return __builtin_memset (s, c, n); -} -# endif /* !WIDE */ -#endif /* !TEST_BZERO */ +IMPL (SIMPLE_MEMSET, 0) CHAR * inhibit_loop_to_libcall @@ -98,11 +54,7 @@ do_one_test (json_ctx_t *json_ctx, impl_ TIMING_NOW (start); for (i = 0; i < iters; ++i) { -#ifdef TEST_BZERO - CALL (impl, s, n); -#else CALL (impl, s, c, n); -#endif /* !TEST_BZERO */ } TIMING_NOW (stop); @@ -159,9 +111,7 @@ test_main (void) json_array_begin (&json_ctx, "results"); -#ifndef TEST_BZERO for (c = -65; c <= 130; c += 65) -#endif { for (i = 0; i < 18; ++i) do_test (&json_ctx, 0, c, 1 << i);
  99. Download patch argp/argp-test.c

    --- 2.29-1/argp/argp-test.c 2019-01-31 16:45:36.000000000 +0000 +++ 2.30-0ubuntu1/argp/argp-test.c 2019-08-01 04:29:31.000000000 +0000 @@ -123,7 +123,7 @@ static const char doc[] = "Test program static void popt (int key, char *arg) { - char buf[10]; + char buf[12]; if (isprint (key)) sprintf (buf, "%c", key); else
  100. Download patch benchtests/bench-memmove-large.c

    --- 2.29-1/benchtests/bench-memmove-large.c 2019-01-31 16:45:36.000000000 +0000 +++ 2.30-0ubuntu1/benchtests/bench-memmove-large.c 2019-08-01 04:29:31.000000000 +0000 @@ -30,8 +30,8 @@ IMPL (memmove, 1) typedef char *(*proto_t) (char *, const char *, size_t); static void -do_one_test (json_ctx_t *json_ctx, impl_t *impl, char *dst, char *src, const - char *orig_src, size_t len) +do_one_test (json_ctx_t *json_ctx, impl_t *impl, char *dst, char *src, + size_t len) { size_t i, iters = 16; timing_t start, stop, cur; @@ -62,7 +62,7 @@ do_test (json_ctx_t *json_ctx, size_t al if (align2 + len >= page_size) return; - s1 = (char *) (buf1 + align1); + s1 = (char *) (buf2 + align1); s2 = (char *) (buf2 + align2); for (i = 0, j = 1; i < len; i++, j += 23) @@ -75,7 +75,7 @@ do_test (json_ctx_t *json_ctx, size_t al json_array_begin (json_ctx, "timings"); FOR_EACH_IMPL (impl, 0) - do_one_test (json_ctx, impl, s2, (char *) (buf2 + align1), s1, len); + do_one_test (json_ctx, impl, s2, s1, len); json_array_end (json_ctx); json_element_object_end (json_ctx);
  101. ...

Debian ( Changelog | PTS | Bugs ) Ubuntu ( Changelog | txt | LP | Bugs ) | Diff from Ubuntu

Source: util-linux

util-linux (2.34-0.1ubuntu2) eoan; urgency=medium * d/p/prevent-fstrim-inside-container.patch: - Prevent fstrim to run inside a container environment. (LP: #1589289) -- Eric Desrochers <eric.desrochers@canonical.com> Wed, 21 Aug 2019 13:19:03 +0000 util-linux (2.34-0.1ubuntu1) eoan; urgency=low * Merge from Debian unstable. Remaining changes: - Build hwclock with audit support. - Drop debian/hwclock.rules and hwclock.default, recent kernels sync the RTC automatically. - Add sulogin-fallback-static-sh.patch: Add support for /bin/static-sh as fallback if the regular shell fails to execute. Patch ported from sysvinit. (see LP #505887) - Add sulogin-lockedpwd.patch: Make sure file systems can be fixed on machines with locked root accounts (as Ubuntu does by default). Don't require --force for sulogin. - Clean up weekly fstrim cron file, now a systemd timer unit. - Update s390-tools breaks/replaces, to the correct version for ubuntu. - Enable fstrim.timer by default. * Dropped changes, included upstream: - debian/patches/32-bit-safe-mbr-parsing.patch: [PATCH] libfdisk: (dos) Use strtoul to parse the label-id. -- Steve Langasek <steve.langasek@ubuntu.com> Thu, 15 Aug 2019 23:50:01 -0700

Modifications :
  1. Download patch debian/util-linux.hwclock.default

    --- 2.34-0.1/debian/util-linux.hwclock.default 2019-07-28 15:14:02.000000000 +0000 +++ 2.34-0.1ubuntu2/debian/util-linux.hwclock.default 1970-01-01 00:00:00.000000000 +0000 @@ -1,19 +0,0 @@ -# Defaults for the hwclock init script. See hwclock(5) and hwclock(8). - -# This is used to specify that the hardware clock incapable of storing -# years outside the range of 1994-1999. Set to yes if the hardware is -# broken or no if working correctly. -#BADYEAR=no - -# Set this to yes if it is possible to access the hardware clock, -# or no if it is not. -#HWCLOCKACCESS=yes - -# Set this to any options you might need to give to hwclock, such -# as machine hardware clock type for Alphas. -#HWCLOCKPARS= - -# Set this to the hardware clock device you want to use, it should -# probably match the CONFIG_RTC_HCTOSYS_DEVICE kernel config option. -#HCTOSYS_DEVICE=rtc0 -
  2. Download patch debian/rules

    --- 2.34-0.1/debian/rules 2019-07-28 15:14:02.000000000 +0000 +++ 2.34-0.1ubuntu2/debian/rules 2019-07-28 21:44:43.000000000 +0000 @@ -11,6 +11,7 @@ CONFOPTS += --enable-raw CONFOPTS += --with-selinux CONFOPTS += --with-smack CONFOPTS += --enable-partx +CONFOPTS += --with-audit ifneq ($(filter stage1,$(DEB_BUILD_PROFILES)),) CONFOPTS += --without-systemd --without-udev --without-audit else @@ -134,9 +135,9 @@ override_dh_installinit: ifeq (linux,$(DEB_HOST_ARCH_OS)) ifeq (,$(findstring s390,$(DEB_HOST_ARCH))) # install /etc/init.d/hwclock.sh - dh_installinit --name=hwclock.sh --no-start - # install /etc/default/hwclock - dh_installinit --name=hwclock + # - update-rc.d manually handled in maintainers scripts as there + # is special per-arch considerations. + dh_installinit --name=hwclock.sh --noscripts endif endif # install uuidd sysvinit script @@ -144,6 +145,7 @@ endif ln -s ../misc-utils/uuidd.rc debian/uuid-runtime.uuidd.init dh_installinit --name=uuidd --restart-after-upgrade rm -f debian/uuid-runtime.uuidd.init + dh_installsystemd --package=util-linux fstrim.timer override_dh_installpam: dh_installpam --package=util-linux --name=runuser
  3. Download patch debian/util-linux.install

    --- 2.34-0.1/debian/util-linux.install 2019-07-28 15:14:02.000000000 +0000 +++ 2.34-0.1ubuntu2/debian/util-linux.install 2019-07-28 21:44:43.000000000 +0000 @@ -1,5 +1,4 @@ #!/usr/bin/dh-exec --with=install -debian/hwclock.rules => /lib/udev/rules.d/85-hwclock.rules debian/hwclock-set => /lib/udev/hwclock-set # perl gets to do rename, not us. debian/tmp/usr/bin/rename => /usr/bin/rename.ul
  4. Download patch debian/patches/sulogin-fallback-static-sh.patch

    --- 2.34-0.1/debian/patches/sulogin-fallback-static-sh.patch 1970-01-01 00:00:00.000000000 +0000 +++ 2.34-0.1ubuntu2/debian/patches/sulogin-fallback-static-sh.patch 2018-02-14 22:20:35.000000000 +0000 @@ -0,0 +1,18 @@ +Description: Add support for /bin/static-sh as fallback if the regular shell fails to execute +Author: Michael Vogt <michael.vogt@ubuntu.com> +Bug-Ubuntu: https://launchpad.net/bugs/505887 + +--- a/login-utils/sulogin.c ++++ b/login-utils/sulogin.c +@@ -793,6 +793,11 @@ + xsetenv("SHELL", "/bin/sh", 1); + execl("/bin/sh", profile ? "-sh" : "sh", NULL); + warn(_("failed to execute %s"), "/bin/sh"); ++ ++ /* Fall back to static shell */ ++ setenv("SHELL", "/bin/static-sh", 1); ++ execl("/bin/static-sh", profile ? "-sh" : "sh", NULL); ++ warn(_("failed to execute %s"), "/bin/static-sh"); + } + + static void usage(void)
  5. Download patch debian/control

    --- 2.34-0.1/debian/control 2019-07-28 15:14:02.000000000 +0000 +++ 2.34-0.1ubuntu2/debian/control 2019-07-28 21:44:43.000000000 +0000 @@ -19,10 +19,12 @@ Build-Depends: bc <!stage1 !nocheck>, socat <!stage1 !nocheck>, systemd [linux-any] <!stage1>, bison, - zlib1g-dev + zlib1g-dev, + libaudit-dev Section: base Priority: required -Maintainer: LaMont Jones <lamont@debian.org> +Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com> +XSBC-Original-Maintainer: LaMont Jones <lamont@debian.org> Uploaders: Adam Conrad <adconrad@0c3.net> Standards-Version: 4.4.0 Rules-Requires-Root: binary-targets @@ -79,7 +81,7 @@ Build-Profiles: <!stage1> XB-Important: yes Section: admin Pre-Depends: ${misc:Pre-Depends}, ${shlibs:Depends} -Depends: ${misc:Depends}, util-linux (>= 2.29.2-3~) +Depends: ${misc:Depends}, util-linux (>= 2.30.1-0ubuntu4~) Suggests: nfs-common (>=1:1.1.0-13) Breaks: bash-completion (<< 1:2.1-4.3~) Replaces: bash-completion (<< 1:2.1-4.3~) @@ -112,8 +114,8 @@ Section: utils Priority: important Pre-Depends: ${misc:Pre-Depends} Depends: ${misc:Depends}, ${shlibs:Depends} -Replaces: util-linux (<< 2.29.2-3~) -Breaks: util-linux (<< 2.29.2-3~) +Replaces: util-linux (<< 2.30.1-0ubuntu4~) +Breaks: util-linux (<< 2.30.1-0ubuntu4~) Multi-Arch: foreign Description: collection of partitioning utilities This package contains the classic fdisk, sfdisk and cfdisk partitioning @@ -368,7 +370,7 @@ Depends: ${misc:Depends}, ${shlibs:Depen Package-Type: udeb Description: stripped down miscellaneous system utilities, for debian-installer This is a minimal version of util-linux for debian-installer. It only - contains the blkid binary at the moment. + contains the blkid and fallocate binaries at the moment. Package: rfkill Architecture: linux-any
  6. Download patch debian/patches/prevent-fstrim-inside-container.patch

    --- 2.34-0.1/debian/patches/prevent-fstrim-inside-container.patch 1970-01-01 00:00:00.000000000 +0000 +++ 2.34-0.1ubuntu2/debian/patches/prevent-fstrim-inside-container.patch 2019-08-21 13:17:10.000000000 +0000 @@ -0,0 +1,44 @@ +Description: fstrim shouldn't run inside a container + Container type implies the following products: + openvz OpenVZ/Virtuozzo + lxc Linux container implementation by LXC + lxc-libvirt Linux container implementation by libvirt + systemd-nspawn systemd's minimal container implementation, see systemd-nspawn(1) + docker Docker container manager + podman Podman container manager + rkt rkt app container runtime + wsl Windows Subsystem for Linux + + References: + https://www.freedesktop.org/software/systemd/man/systemd.unit.html + https://www.freedesktop.org/software/systemd/man/systemd-detect-virt.html# + + Fix: #840 +Author: Eric Desrochers <eric.desrochers@canonical.com> +Origin: upstream, https://github.com/karelzak/util-linux/commit/0280d31a2bd6292acd9a4b86d0f6b5feb275a618 +Bug: https://github.com/karelzak/util-linux/issues/840 +Bug-Ubuntu: https://launchpad.net/bugs/1589289 +Index: util-linux-2.34/sys-utils/fstrim.service.in +=================================================================== +--- util-linux-2.34.orig/sys-utils/fstrim.service.in ++++ util-linux-2.34/sys-utils/fstrim.service.in +@@ -1,6 +1,7 @@ + [Unit] + Description=Discard unused blocks on filesystems from /etc/fstab + Documentation=man:fstrim(8) ++ConditionVirtualization=!container + + [Service] + Type=oneshot +Index: util-linux-2.34/sys-utils/fstrim.timer +=================================================================== +--- util-linux-2.34.orig/sys-utils/fstrim.timer ++++ util-linux-2.34/sys-utils/fstrim.timer +@@ -1,6 +1,7 @@ + [Unit] + Description=Discard unused blocks once a week + Documentation=man:fstrim ++ConditionVirtualization=!container + + [Timer] + OnCalendar=weekly
  7. Download patch debian/util-linux.maintscript

    --- 2.34-0.1/debian/util-linux.maintscript 1970-01-01 00:00:00.000000000 +0000 +++ 2.34-0.1ubuntu2/debian/util-linux.maintscript 2019-01-14 13:00:23.000000000 +0000 @@ -0,0 +1 @@ +rm_conffile /etc/cron.weekly/fstrim 2.31.1-0.4ubuntu1~
  8. Download patch debian/patches/series

    --- 2.34-0.1/debian/patches/series 1970-01-01 00:00:00.000000000 +0000 +++ 2.34-0.1ubuntu2/debian/patches/series 2019-08-21 13:19:03.000000000 +0000 @@ -0,0 +1,3 @@ +sulogin-fallback-static-sh.patch +sulogin-lockedpwd.patch +prevent-fstrim-inside-container.patch
  9. Download patch debian/patches/sulogin-lockedpwd.patch

    --- 2.34-0.1/debian/patches/sulogin-lockedpwd.patch 1970-01-01 00:00:00.000000000 +0000 +++ 2.34-0.1ubuntu2/debian/patches/sulogin-lockedpwd.patch 2019-01-14 13:00:23.000000000 +0000 @@ -0,0 +1,18 @@ +Description: Make sure file systems can be fixed on machines with locked root accounts (as Ubuntu does by default). Don't require --force for sulogin. +Author: Martin Pitt <martin.pitt@ubuntu.com> +Bug-Debian: https://bugs.debian.org/326678 + +Index: util-linux-2.33.1-0.1ubuntu1/login-utils/sulogin.c +=================================================================== +--- util-linux-2.33.1-0.1ubuntu1.orig/login-utils/sulogin.c ++++ util-linux-2.33.1-0.1ubuntu1/login-utils/sulogin.c +@@ -982,7 +982,8 @@ + const char *passwd = pwd->pw_passwd; + const char *answer; + int doshell = 0; +- int deny = !opt_e && locked_account_password(pwd->pw_passwd); ++ /* Ubuntu's root account is locked by default allow access without --force */ ++ int deny = 0; + + doprompt(passwd, con, deny); +

Debian ( Changelog | PTS | Bugs ) Ubuntu ( Changelog | txt | LP | Bugs ) | Diff from Ubuntu

Source: glibc-doc-reference

glibc-doc-reference (2.29-1ubuntu1) eoan; urgency=low * Merge from Debian unstable. Remaining changes: -- Steve Langasek <steve.langasek@ubuntu.com> Sat, 24 Aug 2019 21:10:43 -0700

Modifications :
  1. Download patch debian/control

    --- 2.29-1/debian/control 2019-08-16 20:20:57.000000000 +0000 +++ 2.29-1ubuntu1/debian/control 2019-08-25 04:10:43.000000000 +0000 @@ -3,7 +3,8 @@ Section: non-free/doc Priority: optional Build-Depends: debhelper (>= 12) Build-Depends-Indep: texinfo, gawk, python3, texlive-binaries, texlive-latex-base -Maintainer: GNU Libc Maintainers <debian-glibc@lists.debian.org> +Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com> +XSBC-Original-Maintainer: GNU Libc Maintainers <debian-glibc@lists.debian.org> Uploaders: Clint Adams <schizo@debian.org>, Aurelien Jarno <aurel32@debian.org>, Adam Conrad <adconrad@0c3.net> Standards-Version: 4.4.0 Vcs-Browser: https://salsa.debian.org/glibc-team/glibc-doc-reference
  2. Download patch debian/patches/series

    --- 2.29-1/debian/patches/series 2018-03-03 12:55:45.000000000 +0000 +++ 2.29-1ubuntu1/debian/patches/series 2019-08-17 03:41:56.000000000 +0000 @@ -1,2 +1,3 @@ 01-build-system.diff 02-dont-clutter-main-info-directory.diff +Revert-Revert-Remove-inappropriate-joke.patch
  3. Download patch debian/patches/Revert-Revert-Remove-inappropriate-joke.patch

    --- 2.29-1/debian/patches/Revert-Revert-Remove-inappropriate-joke.patch 1970-01-01 00:00:00.000000000 +0000 +++ 2.29-1ubuntu1/debian/patches/Revert-Revert-Remove-inappropriate-joke.patch 2018-11-09 17:11:21.000000000 +0000 @@ -0,0 +1,34 @@ +From 41a9e27758f9ead95ca1c4f545cf24f1e95aa23e Mon Sep 17 00:00:00 2001 +From: Dimitri John Ledkov <xnox@ubuntu.com> +Date: Fri, 9 Nov 2018 17:05:16 +0000 +Subject: [PATCH] Revert "Revert: Remove inappropriate joke" + +This reverts commit ffa81c22a3ac0fb75ad9bf2b1c3cdbf9eafa0bc9. + +Signed-off-by: Dimitri John Ledkov <xnox@ubuntu.com> +--- + manual/startup.texi | 8 -------- + 1 file changed, 8 deletions(-) + +diff --git a/manual/startup.texi b/manual/startup.texi +index 7395d32dd0..21c48cd037 100644 +--- a/manual/startup.texi ++++ b/manual/startup.texi +@@ -1005,14 +1005,6 @@ This function actually terminates the process by raising a + 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 + +-- +2.19.1 +
  1. glibc
  2. util-linux
  3. glibc-doc-reference