From 86f0ee9140f84e5a571022c45fd22944864b4a07 Mon Sep 17 00:00:00 2001 From: Michael Gehring Date: Wed, 14 Sep 2016 13:55:56 +0200 Subject: [PATCH] glibc: sync with upstream release branch Fixes CVE-2016-6323 --- srcpkgs/glibc/patches/glibc-upstream-01.patch | 53 ++ srcpkgs/glibc/patches/glibc-upstream-02.patch | 136 +++ srcpkgs/glibc/patches/glibc-upstream-03.patch | 795 ++++++++++++++++++ srcpkgs/glibc/patches/glibc-upstream-04.patch | 80 ++ srcpkgs/glibc/patches/glibc-upstream-05.patch | 68 ++ srcpkgs/glibc/patches/glibc-upstream-06.patch | 140 +++ srcpkgs/glibc/patches/glibc-upstream-07.patch | 474 +++++++++++ srcpkgs/glibc/patches/glibc-upstream-08.patch | 228 +++++ srcpkgs/glibc/patches/glibc-upstream-09.patch | 83 ++ srcpkgs/glibc/patches/glibc-upstream-10.patch | 150 ++++ srcpkgs/glibc/patches/glibc-upstream-11.patch | 40 + srcpkgs/glibc/patches/glibc-upstream-12.patch | 41 + srcpkgs/glibc/patches/glibc-upstream-13.patch | 46 + srcpkgs/glibc/patches/glibc-upstream-14.patch | 42 + srcpkgs/glibc/patches/glibc-upstream-15.patch | 36 + srcpkgs/glibc/template | 3 +- 16 files changed, 2414 insertions(+), 1 deletion(-) create mode 100644 srcpkgs/glibc/patches/glibc-upstream-01.patch create mode 100644 srcpkgs/glibc/patches/glibc-upstream-02.patch create mode 100644 srcpkgs/glibc/patches/glibc-upstream-03.patch create mode 100644 srcpkgs/glibc/patches/glibc-upstream-04.patch create mode 100644 srcpkgs/glibc/patches/glibc-upstream-05.patch create mode 100644 srcpkgs/glibc/patches/glibc-upstream-06.patch create mode 100644 srcpkgs/glibc/patches/glibc-upstream-07.patch create mode 100644 srcpkgs/glibc/patches/glibc-upstream-08.patch create mode 100644 srcpkgs/glibc/patches/glibc-upstream-09.patch create mode 100644 srcpkgs/glibc/patches/glibc-upstream-10.patch create mode 100644 srcpkgs/glibc/patches/glibc-upstream-11.patch create mode 100644 srcpkgs/glibc/patches/glibc-upstream-12.patch create mode 100644 srcpkgs/glibc/patches/glibc-upstream-13.patch create mode 100644 srcpkgs/glibc/patches/glibc-upstream-14.patch create mode 100644 srcpkgs/glibc/patches/glibc-upstream-15.patch diff --git a/srcpkgs/glibc/patches/glibc-upstream-01.patch b/srcpkgs/glibc/patches/glibc-upstream-01.patch new file mode 100644 index 0000000000..16842fd2ab --- /dev/null +++ b/srcpkgs/glibc/patches/glibc-upstream-01.patch @@ -0,0 +1,53 @@ +From d39c4a5ec099548f4f7864f29873e15f5ceb93e7 Mon Sep 17 00:00:00 2001 +From: Florian Weimer +Date: Thu, 4 Aug 2016 11:10:57 +0200 +Subject: [PATCH 01] x86: Use sysdep.o from libc.a in static libraries + +Static libraries can use the sysdep.o copy in libc.a without +a performance penalty. This results in a visible difference +if libpthread.a is relinked into a single object file (which +is needed to support libraries which check for the presence +of certain symbols to enable threading support, which generally +fails with static linking unless libpthread.a is relinked). + +(cherry picked from commit e67330ab57bfd0f964539576ae7dcc658c456724) +--- + ChangeLog | 7 +++++++ + sysdeps/unix/sysv/linux/i386/Makefile | 2 ++ + 2 files changed, 9 insertions(+) + +diff --git a/ChangeLog b/ChangeLog +index c44c926..5dc53ac 100644 +--- a/ChangeLog ++++ b/ChangeLog +@@ -1,3 +1,10 @@ ++2016-08-04 Florian Weimer ++ ++ Use sysdep.o from libc.a in static libraries. ++ * sysdeps/unix/sysv/linux/i386/Makefile ++ (libpthread-shared-only-routines): Add sysdep. ++ (librt-shared-only-routines): Likewise. ++ + 2016-08-01 Carlos O'Donell + + * version.h (RELEASE): Set to "stable" +diff --git a/sysdeps/unix/sysv/linux/i386/Makefile b/sysdeps/unix/sysv/linux/i386/Makefile +index 71ba61e..b015ff7 100644 +--- a/sysdeps/unix/sysv/linux/i386/Makefile ++++ b/sysdeps/unix/sysv/linux/i386/Makefile +@@ -48,9 +48,11 @@ endif + ifeq ($(subdir),nptl) + # pull in __syscall_error routine + libpthread-routines += sysdep ++libpthread-shared-only-routines += sysdep + endif + + ifeq ($(subdir),rt) + # pull in __syscall_error routine + librt-routines += sysdep ++librt-shared-only-routines += sysdep + endif +-- +2.7.4.GIT + + diff --git a/srcpkgs/glibc/patches/glibc-upstream-02.patch b/srcpkgs/glibc/patches/glibc-upstream-02.patch new file mode 100644 index 0000000000..31080461e7 --- /dev/null +++ b/srcpkgs/glibc/patches/glibc-upstream-02.patch @@ -0,0 +1,136 @@ +From 96cd434f66849f0d250869c0da846920b6081425 Mon Sep 17 00:00:00 2001 +From: Florian Weimer +Date: Tue, 2 Aug 2016 12:24:50 +0200 +Subject: [PATCH 02] malloc: Preserve arena free list/thread count invariant + [BZ #20370] + +It is necessary to preserve the invariant that if an arena is +on the free list, it has thread attach count zero. Otherwise, +when arena_thread_freeres sees the zero attach count, it will +add it, and without the invariant, an arena could get pushed +to the list twice, resulting in a cycle. + +One possible execution trace looks like this: + +Thread 1 examines free list and observes it as empty. +Thread 2 exits and adds its arena to the free list, + with attached_threads == 0). +Thread 1 selects this arena in reused_arena (not from the free list). +Thread 1 increments attached_threads and attaches itself. + (The arena remains on the free list.) +Thread 1 exits, decrements attached_threads, + and adds the arena to the free list. + +The final step creates a cycle in the usual way (by overwriting the +next_free member with the former list head, while there is another +list item pointing to the arena structure). + +tst-malloc-thread-exit exhibits this issue, but it was only visible +with a debugger because the incorrect fix in bug 19243 removed +the assert from get_free_list. + +(cherry picked from commit f88aab5d508c13ae4a88124e65773d7d827cd47b) +--- + ChangeLog | 8 ++++++++ + malloc/arena.c | 41 ++++++++++++++++++++++++++++++++++++----- + 2 files changed, 44 insertions(+), 5 deletions(-) + +diff --git a/ChangeLog b/ChangeLog +index 5dc53ac..a538bea 100644 +--- a/ChangeLog ++++ b/ChangeLog +@@ -1,3 +1,11 @@ ++2016-08-02 Florian Weimer ++ ++ [BZ #20370] ++ * malloc/arena.c (get_free_list): Update comment. Assert that ++ arenas on the free list have no attached threads. ++ (remove_from_free_list): New function. ++ (reused_arena): Call it. ++ + 2016-08-04 Florian Weimer + + Use sysdep.o from libc.a in static libraries. +diff --git a/malloc/arena.c b/malloc/arena.c +index 229783f..4e16593 100644 +--- a/malloc/arena.c ++++ b/malloc/arena.c +@@ -702,8 +702,7 @@ _int_new_arena (size_t size) + } + + +-/* Remove an arena from free_list. The arena may be in use because it +- was attached concurrently to a thread by reused_arena below. */ ++/* Remove an arena from free_list. */ + static mstate + get_free_list (void) + { +@@ -718,7 +717,8 @@ get_free_list (void) + free_list = result->next_free; + + /* The arena will be attached to this thread. */ +- ++result->attached_threads; ++ assert (result->attached_threads == 0); ++ result->attached_threads = 1; + + detach_arena (replaced_arena); + } +@@ -735,6 +735,26 @@ get_free_list (void) + return result; + } + ++/* Remove the arena from the free list (if it is present). ++ free_list_lock must have been acquired by the caller. */ ++static void ++remove_from_free_list (mstate arena) ++{ ++ mstate *previous = &free_list; ++ for (mstate p = free_list; p != NULL; p = p->next_free) ++ { ++ assert (p->attached_threads == 0); ++ if (p == arena) ++ { ++ /* Remove the requested arena from the list. */ ++ *previous = p->next_free; ++ break; ++ } ++ else ++ previous = &p->next_free; ++ } ++} ++ + /* Lock and return an arena that can be reused for memory allocation. + Avoid AVOID_ARENA as we have already failed to allocate memory in + it and it is currently locked. */ +@@ -782,14 +802,25 @@ reused_arena (mstate avoid_arena) + (void) mutex_lock (&result->mutex); + + out: +- /* Attach the arena to the current thread. Note that we may have +- selected an arena which was on free_list. */ ++ /* Attach the arena to the current thread. */ + { + /* Update the arena thread attachment counters. */ + mstate replaced_arena = thread_arena; + (void) mutex_lock (&free_list_lock); + detach_arena (replaced_arena); ++ ++ /* We may have picked up an arena on the free list. We need to ++ preserve the invariant that no arena on the free list has a ++ positive attached_threads counter (otherwise, ++ arena_thread_freeres cannot use the counter to determine if the ++ arena needs to be put on the free list). We unconditionally ++ remove the selected arena from the free list. The caller of ++ reused_arena checked the free list and observed it to be empty, ++ so the list is very short. */ ++ remove_from_free_list (result); ++ + ++result->attached_threads; ++ + (void) mutex_unlock (&free_list_lock); + } + +-- +2.7.4.GIT + + diff --git a/srcpkgs/glibc/patches/glibc-upstream-03.patch b/srcpkgs/glibc/patches/glibc-upstream-03.patch new file mode 100644 index 0000000000..4281daf269 --- /dev/null +++ b/srcpkgs/glibc/patches/glibc-upstream-03.patch @@ -0,0 +1,795 @@ +From ea23815a795f72035262953dad5beb03e09c17dd Mon Sep 17 00:00:00 2001 +From: Carlos O'Donell +Date: Thu, 4 Aug 2016 12:21:42 -0400 +Subject: [PATCH 03] Update from Translation Project. + +--- + ChangeLog | 6 +++ + po/de.po | 6 +-- + po/fi.po | 90 ++++++++++++++++++--------------------- + po/sv.po | 143 ++++++++++++++++++++++++++++---------------------------------- + 4 files changed, 114 insertions(+), 131 deletions(-) + +diff --git a/ChangeLog b/ChangeLog +index a538bea..84ae7a7 100644 +--- a/ChangeLog ++++ b/ChangeLog +@@ -1,3 +1,9 @@ ++2016-08-04 Carlos O'Donell ++ ++ * po/de.po: Update from Translation Project. ++ * po/fi.po: Likewise. ++ * po/sv.po: Likewise. ++ + 2016-08-02 Florian Weimer + + [BZ #20370] +diff --git a/po/de.po b/po/de.po +index 1383e8c..ca14c7e 100644 +--- a/po/de.po ++++ b/po/de.po +@@ -8,7 +8,7 @@ msgid "" + msgstr "" + "Project-Id-Version: GNU libc 2.22-pre1\n" + "POT-Creation-Date: 2015-07-31 00:10-0400\n" +-"PO-Revision-Date: 2015-08-31 18:30+0200\n" ++"PO-Revision-Date: 2016-04-22 18:44+0200\n" + "Last-Translator: Jochen Hein \n" + "Language-Team: German \n" + "Language: de\n" +@@ -4479,13 +4479,13 @@ msgstr "" + "%15s Cache ist dauerhaft\n" + "%15s Cache wird gemeinsam verwendet\n" + "%15Zu vorgeschlagene Größe\n" +-"%15Zu Gesamtröße des Data-Pools\n" ++"%15Zu Gesamtgröße des Data-Pools\n" + "%15Zu Benutzter Speicher im Data-Pool\n" + "%15lu Time to Live für positive Einträge in Sekunden\n" + "%15lu Time to Live für negative Einträge in Sekunden\n" + "%15 Cache-Hits bei positiven Einträgen\n" + "%15 Cache-Hits bei positiven Einträgen\n" +-"%15 Cache-Misses bei positiven Einträgen\n" ++"%15 Cache-Misses bei positiven Einträgen\n" + "%15 Cache-Misses bei negativen Einträgen\n" + "%15lu%% Cache-Hit Verhältnis\n" + "%15zu aktuelle Anzahl der Werte im Cache\n" +diff --git a/po/fi.po b/po/fi.po +index 17cb3e3..8a2ab83 100644 +--- a/po/fi.po ++++ b/po/fi.po +@@ -24,16 +24,16 @@ + # + msgid "" + msgstr "" +-"Project-Id-Version: libc 2.21-pre1\n" ++"Project-Id-Version: libc 2.22-pre1\n" + "POT-Creation-Date: 2015-07-31 00:10-0400\n" +-"PO-Revision-Date: 2015-07-28 20:29+0300\n" ++"PO-Revision-Date: 2016-05-26 21:14+0300\n" + "Last-Translator: Lauri Nurmi \n" + "Language-Team: Finnish \n" + "Language: fi\n" + "MIME-Version: 1.0\n" + "Content-Type: text/plain; charset=UTF-8\n" + "Content-Transfer-Encoding: 8bit\n" +-"X-Generator: Poedit 1.8.3\n" ++"X-Generator: Poedit 1.8.7\n" + "Plural-Forms: nplurals=2; plural=(n != 1);\n" + + #: argp/argp-help.c:227 +@@ -126,7 +126,7 @@ msgid "%s%s%s:%u: %s%sUnexpected error: %s.\n" + msgstr "%s%s%s:%u: %s%sOdottamaton virhe: %s.\n" + + #: assert/assert.c:101 +-#, fuzzy, c-format ++#, c-format + msgid "" + "%s%s%s:%u: %s%sAssertion `%s' failed.\n" + "%n" +@@ -169,12 +169,12 @@ msgstr "" + #: malloc/memusagestat.c:563 nss/getent.c:973 nss/makedb.c:369 + #: posix/getconf.c:486 sunrpc/rpcinfo.c:691 + #: sysdeps/unix/sysv/linux/lddlibc4.c:61 +-#, fuzzy, c-format ++#, c-format + msgid "" + "For bug reporting instructions, please see:\n" + "%s.\n" + msgstr "" +-"Ohjeet ohjelmistovioista ilmoittamiseen ovat osoitteessa\n" ++"Katso ohjeet vikailmoitusten tekemiseen osoitteesta:\n" + "%s.\n" + + #: catgets/gencat.c:245 debug/pcprofiledump.c:225 debug/xtrace.sh:64 +@@ -321,9 +321,8 @@ msgstr "Käyttö: xtrace [VALITSIN]... OHJELMA [OHJELMANVALITSIN]...\\n" + + #: debug/xtrace.sh:32 elf/sotruss.sh:56 elf/sotruss.sh:67 elf/sotruss.sh:135 + #: malloc/memusage.sh:26 +-#, fuzzy + msgid "Try \\`%s --help' or \\`%s --usage' for more information.\\n" +-msgstr "Kokeile ”%s --help” tai ”%s --usage” saadaksesi lisää tietoa.\n" ++msgstr "Kokeile ”%s --help” tai ”%s --usage” saadaksesi lisää tietoa.\\n" + + #: debug/xtrace.sh:38 + #, fuzzy +@@ -594,9 +593,8 @@ msgid "cannot enable executable stack as shared object requires" + msgstr "jaettua objektikahvaa ei voi luoda" + + #: elf/dl-load.c:1339 +-#, fuzzy + msgid "cannot close file descriptor" +-msgstr "tiedostoa %s ei voi sulkea" ++msgstr "tiedostokahvaa ei voi sulkea" + + #: elf/dl-load.c:1568 + msgid "file too short" +@@ -796,9 +794,8 @@ msgid "Format to use: new, old or compat (default)" + msgstr "Käytettävä muoto: ”new”, ”old” tai ”compat” (oletus)" + + #: elf/ldconfig.c:151 +-#, fuzzy + msgid "Ignore auxiliary cache file" +-msgstr "Käytä CACHEa välimuistitiedostona" ++msgstr "Jätä huomiotta apuvälimuistitiedosto" + + #: elf/ldconfig.c:159 + msgid "Configure Dynamic Linker Run Time Bindings." +@@ -1087,9 +1084,9 @@ msgid "invalid process ID '%s'" + msgstr "virheellinen prosessi-ID ”%s”" + + #: elf/pldd.c:120 +-#, fuzzy, c-format ++#, c-format + msgid "cannot open %s" +-msgstr "laitetta %s ei voi avata" ++msgstr "tiedostoa %s ei voi avata" + + #: elf/pldd.c:152 + #, fuzzy, c-format +@@ -1102,24 +1099,24 @@ msgid "cannot prepare reading %s/task" + msgstr "ei voi avata laitetta %s lukutilaan" + + #: elf/pldd.c:168 +-#, fuzzy, c-format ++#, c-format + msgid "invalid thread ID '%s'" +-msgstr "virheellinen prosessi-ID ”%s”" ++msgstr "virheellinen säie-ID ”%s”" + + #: elf/pldd.c:179 +-#, fuzzy, c-format ++#, c-format + msgid "cannot attach to process %lu" +-msgstr "tiedostoa ”%s” ei voi avata" ++msgstr "ei voida kiinnittyä prosessiin %lu" + + #: elf/pldd.c:294 + #, c-format + msgid "cannot get information about process %lu" +-msgstr "" ++msgstr "tietojen saaminen prosessista %lu ei onnistu" + + #: elf/pldd.c:307 +-#, fuzzy, c-format ++#, c-format + msgid "process %lu is no ELF program" +-msgstr "ohjelma %lu ei ole käytettävissä\n" ++msgstr "prosessi %lu ei ole ELF-ohjelma" + + #: elf/readelflib.c:34 + #, c-format +@@ -1203,7 +1200,7 @@ msgstr "%s kohde ei saa olla hakemisto\n" + #: elf/sln.c:184 + #, c-format + msgid "%s: failed to remove the old destination\n" +-msgstr "" ++msgstr "%s: vanhan kohteen poistaminen epäonnistui\n" + + #: elf/sln.c:192 + #, c-format +@@ -1237,9 +1234,8 @@ msgid "Mandatory arguments to long options are also mandatory for any correspond + msgstr "Pakolliset argumentit pitkille valitsimille ovat pakollisia kaikille vastaaville lyhyille valitsimille.\\n" + + #: elf/sotruss.sh:55 +-#, fuzzy + msgid "%s: option requires an argument -- '%s'\\n" +-msgstr "%s: valitsin ”%s” vaatii argumentin\n" ++msgstr "%s: valitsin vaatii argumentin -- ”%c”\\n" + + #: elf/sotruss.sh:61 + msgid "%s: option is ambiguous; possibilities:" +@@ -1507,7 +1503,6 @@ msgid "unknown iconv() error %d" + msgstr "tuntematon iconv()-virhe %d" + + #: iconv/iconv_prog.c:791 +-#, fuzzy + msgid "" + "The following list contains all the coded character sets known. This does\n" + "not necessarily mean that all combinations of these names can be used for\n" +@@ -1516,9 +1511,9 @@ msgid "" + "\n" + " " + msgstr "" +-"Seuraavassa listassa ovat kaikki tunnetut koodatut merkistöt. Se ei\n" ++"Seuraavassa listassa ovat kaikki tunnetut koodatut merkistöt. Tämä ei\n" + "kuitenkaan välttämättä tarkoita sitä, että kaikkia näiden nimien\n" +-"yhdistelmiä voidaan käyttää FROM- ja TO-komentoriviparametreina. Yksi\n" ++"yhdistelmiä voisi käyttää FROM- ja TO-komentoriviparametreina. Yksi\n" + "koodattu merkistö voi olla listalla useilla eri nimillä (aliaksilla).\n" + "\n" + " " +@@ -2733,14 +2728,12 @@ msgid "locale.alias file to consult when making archive" + msgstr "Arkistoa luotaessa käytettävä locale.alias-tiedosto" + + #: locale/programs/localedef.c:150 +-#, fuzzy + msgid "Generate little-endian output" +-msgstr "Tuota little-endian-koodia" ++msgstr "Tuota little-endian-muotoa" + + #: locale/programs/localedef.c:152 +-#, fuzzy + msgid "Generate big-endian output" +-msgstr "Tuota big-endian-koodia" ++msgstr "Tuota big-endian-muotoa" + + #: locale/programs/localedef.c:157 + msgid "Compile locale specification" +@@ -4275,10 +4268,9 @@ msgid "" + msgstr "" + + #: nscd/nscd.c:635 +-#, fuzzy, c-format +-#| msgid "lstat failed" ++#, c-format + msgid "'wait' failed\n" +-msgstr "tiedoston tilan luku epäonnistui" ++msgstr "”wait” epäonnistui\n" + + #: nscd/nscd.c:642 + #, c-format +@@ -4670,9 +4662,9 @@ msgid "cannot create temporary file" + msgstr "tilapäistä tiedostoa ei voi luoda" + + #: nss/makedb.c:304 +-#, fuzzy, c-format ++#, c-format + msgid "cannot stat newly created file" +-msgstr "tiedoston ”%s” tilaa ei voi lukea: %s" ++msgstr "juuri luodun tiedoston tilaa ei voi lukea" + + #: nss/makedb.c:315 + #, c-format +@@ -4680,9 +4672,9 @@ msgid "cannot rename temporary file" + msgstr "tilapäistä tiedostoa ei voi nimetä uudelleen" + + #: nss/makedb.c:531 nss/makedb.c:554 +-#, fuzzy, c-format ++#, c-format + msgid "cannot create search tree" +-msgstr "hakupolulle ei voi luoda välimuistia" ++msgstr "hakupuuta ei voi luoda" + + #: nss/makedb.c:560 + msgid "duplicate key" +@@ -4699,9 +4691,9 @@ msgid "failed to write new database file" + msgstr "uuden tietokantatiedoston kirjoittaminen epäonnistui" + + #: nss/makedb.c:812 +-#, fuzzy, c-format ++#, c-format + msgid "cannot stat database file" +-msgstr "tiedoston ”%s” tilaa ei voi lukea: %s" ++msgstr "tietokantatiedoston tilaa ei voi lukea" + + #: nss/makedb.c:817 + #, fuzzy, c-format +@@ -4709,9 +4701,9 @@ msgid "cannot map database file" + msgstr "Karttatietokannassa ei ole enempää tietueita" + + #: nss/makedb.c:820 +-#, fuzzy, c-format ++#, c-format + msgid "file not a database file" +-msgstr "luettaessa profilointidatatiedoston tilaa" ++msgstr "tiedosto ei ole tietokantatiedosto" + + #: nss/makedb.c:871 + #, fuzzy, c-format +@@ -4726,7 +4718,7 @@ msgstr "Käyttö: %s [-v määrittely] muuttujanimi [polku]\n" + #: posix/getconf.c:403 + #, c-format + msgid " %s -a [pathname]\n" +-msgstr "" ++msgstr " %s -a [polku]\n" + + #: posix/getconf.c:479 + #, c-format +@@ -5094,11 +5086,11 @@ msgstr "Laitetta irrotettu" + + #: stdio-common/psiginfo.c:139 + msgid "Signal sent by kill()" +-msgstr "" ++msgstr "Signaalin lähetti kill()" + + #: stdio-common/psiginfo.c:142 + msgid "Signal sent by sigqueue()" +-msgstr "" ++msgstr "Signaalin lähetti sigqueue()" + + #: stdio-common/psiginfo.c:145 + msgid "Signal generated by the expiration of a timer" +@@ -5114,7 +5106,7 @@ msgstr "" + + #: stdio-common/psiginfo.c:157 + msgid "Signal sent by tkill()" +-msgstr "" ++msgstr "Signaalin lähetti tkill()" + + #: stdio-common/psiginfo.c:162 + msgid "Signal generated by the completion of an asynchronous name lookup request" +@@ -5296,9 +5288,8 @@ msgid "Failed (unspecified error)" + msgstr "Epäonnistui (määrittelemätön virhe)" + + #: sunrpc/clnt_raw.c:115 +-#, fuzzy + msgid "clnt_raw.c: fatal header serialization error" +-msgstr "clnt_raw.c: vakava otsikon serialisointivirhe" ++msgstr "clnt_raw.c: vakava otsikon sarjallistamisvirhe" + + #: sunrpc/pm_getmaps.c:77 + msgid "pmap_getmaps.c: rpc problem" +@@ -6825,9 +6816,8 @@ msgid "Interrupted by a signal" + msgstr "Signaalin keskeyttämä" + + #: sysdeps/posix/gai_strerror-strs.h:17 +-#, fuzzy + msgid "Parameter string not correctly encoded" +-msgstr "Parametrimerkkijono on väärin koodattu" ++msgstr "Parametrimerkkijono ei ole koodattu oikein" + + #: sysdeps/unix/sysv/linux/i386/readelflib.c:65 + #, c-format +diff --git a/po/sv.po b/po/sv.po +index 49d1f23..e046577 100644 +--- a/po/sv.po ++++ b/po/sv.po +@@ -1,13 +1,17 @@ + # GNU libc message catalog for Swedish +-# Copyright © 1996, 1998, 2001, 2002, 2003, 2006, 2008, 2009, 2011, 2012, 2013, 2014, 2015 Free Software Foundation, Inc. ++# Copyright © 1996, 1998, 2001, 2002, 2003, 2006, 2008, 2009, 2011, 2012, 2013, 2014, 2015, 2016 Free Software Foundation, Inc. + # This file is distributed under the same license as the glibc package. +-# Jan Djärv , 1996, 1998, 2001, 2002, 2003, 2006, 2007, 2008, 2009, 2011, 2012, 2013, 2014, 2015 ++# ++# Jan Djärv , 1996, 1998, 2001, 2002, 2003, 2006, 2007, 2008, 2009, 2011, 2012, 2013, 2014, 2015. ++# Göran Uddeborg , 2016. ++# ++# $Revision: 1.3 $ + msgid "" + msgstr "" +-"Project-Id-Version: libc 2.21-pre1\n" ++"Project-Id-Version: libc 2.22-pre1\n" + "POT-Creation-Date: 2015-07-31 00:10-0400\n" +-"PO-Revision-Date: 2015-01-24 10:35+0100\n" +-"Last-Translator: Jan Djärv \n" ++"PO-Revision-Date: 2016-08-02 17:17+0200\n" ++"Last-Translator: Göran Uddeborg \n" + "Language-Team: Swedish \n" + "Language: sv\n" + "MIME-Version: 1.0\n" +@@ -48,7 +52,7 @@ msgstr " [FLAGGA...]" + #: argp/argp-help.c:1643 + #, c-format + msgid "Try `%s --help' or `%s --usage' for more information.\n" +-msgstr "Försök med \"%s --help\" eller \"%s --usage\" för mer information\n" ++msgstr "Försök med ”%s --help” eller ”%s --usage” för mer information.\n" + + #: argp/argp-help.c:1671 + #, c-format +@@ -304,11 +308,11 @@ msgstr "Användning: xtrace [FLAGGA]... PROGRAM [PROGRAMFLAGGA}...\\n" + #: debug/xtrace.sh:32 elf/sotruss.sh:56 elf/sotruss.sh:67 elf/sotruss.sh:135 + #: malloc/memusage.sh:26 + msgid "Try \\`%s --help' or \\`%s --usage' for more information.\\n" +-msgstr "Försök med \\\"%s --help\\\" eller \\\"%s --usage\\\" för mer information\\n" ++msgstr "Försök med ”%s --help” eller ”%s --usage” för mer information\\n" + + #: debug/xtrace.sh:38 + msgid "%s: option '%s' requires an argument.\\n" +-msgstr "%s: flaggan \\\"%s\\\" kräver ett argument\\n" ++msgstr "%s: flaggan ”%s” kräver ett argument.\\n" + + #: debug/xtrace.sh:45 + msgid "" +@@ -332,19 +336,17 @@ msgstr "" + " --usage Visa en kort hjälptext\n" + " -V,--version Visa versionsinformation och avsluta\n" + "\n" +-"Obligatoriska argument för långa flaggor är obligatoriska även för\n" ++"Obligatoriska argument för långa flaggor är obligatoriska även för\n" + "motsvarande korta.\n" + + #: debug/xtrace.sh:57 elf/ldd.bash.in:55 elf/sotruss.sh:49 + #: malloc/memusage.sh:64 + msgid "For bug reporting instructions, please see:\\\\n%s.\\\\n" +-msgstr "" +-"För felrapporteringsinstruktioner, se:\\\\n%s.\\\\n\n" +-"Rapportera fel eller synpunkter på översättningen till .\\\\n" ++msgstr "För felrapporteringsinstruktioner, se:\\\\n%s.\\\\nRapportera fel eller synpunkter på översättningen till:\\\\n.\\\\n" + + #: debug/xtrace.sh:125 + msgid "xtrace: unrecognized option \\`$1'\\n" +-msgstr "xtrace: okänd flagga \"$1\"\\n" ++msgstr "xtrace: okänd flagga ”$1”\\n" + + #: debug/xtrace.sh:138 + msgid "No program name given\\n" +@@ -353,12 +355,12 @@ msgstr "Inget programnamn givet\\n" + #: debug/xtrace.sh:146 + #, sh-format + msgid "executable \\`$program' not found\\n" +-msgstr "program \"$program\" hittades inte\\n" ++msgstr "program ”$program” hittades inte\\n" + + #: debug/xtrace.sh:150 + #, sh-format + msgid "\\`$program' is no executable\\n" +-msgstr "\"$program\" är inte en körbar binär\\n" ++msgstr "”$program” är inte en körbar binär\\n" + + #: dlfcn/dlinfo.c:63 + msgid "RTLD_SELF used in code not dynamically loaded" +@@ -396,7 +398,7 @@ msgstr ", OS ABI: %s %d.%d.%d" + #: elf/cache.c:157 elf/ldconfig.c:1340 + #, c-format + msgid "Can't open cache file %s\n" +-msgstr "Kan inte öppna cache-fil \"%s\"\n" ++msgstr "Kan inte öppna cache-filen %s\n" + + #: elf/cache.c:171 + #, c-format +@@ -416,7 +418,7 @@ msgstr "%d bibliotek hittades i cache \"%s\"\n" + #: elf/cache.c:426 + #, c-format + msgid "Can't create temporary cache file %s" +-msgstr "Kan inte skapa temporär cache-fil \"%s\"" ++msgstr "Kan inte skapa en temporär cache-fil %s" + + #: elf/cache.c:434 elf/cache.c:444 elf/cache.c:448 elf/cache.c:453 + #, c-format +@@ -829,7 +831,7 @@ msgstr "Kan inte ta status (lstat) på %s" + #: elf/ldconfig.c:609 + #, c-format + msgid "Ignored file %s since it is not a regular file." +-msgstr "Ignorerar fil %s eftersom den inte är en vanlig fil" ++msgstr "Ignorerar fil %s eftersom den inte är en vanlig fil." + + #: elf/ldconfig.c:618 + #, c-format +@@ -951,7 +953,7 @@ msgstr "" + + #: elf/ldd.bash.in:80 + msgid "ldd: option \\`$1' is ambiguous" +-msgstr "ldd: flaggan \"$1\" är tvetydig" ++msgstr "ldd: flaggan ”$1” är tvetydig" + + #: elf/ldd.bash.in:87 + msgid "unrecognized option" +@@ -959,7 +961,7 @@ msgstr "okänd flagga" + + #: elf/ldd.bash.in:88 elf/ldd.bash.in:125 + msgid "Try \\`ldd --help' for more information." +-msgstr "Försök med \"ldd --help\" för mer information" ++msgstr "Försök med \"ldd --help\" för mer information." + + #: elf/ldd.bash.in:124 + msgid "missing file arguments" +@@ -1028,10 +1030,9 @@ msgid "cannot read object name" + msgstr "kan inte läsa objektnamn" + + #: elf/pldd-xx.c:219 +-#, fuzzy, c-format +-#| msgid "cannot allocate memory for program header" ++#, c-format + msgid "cannot allocate buffer for object name" +-msgstr "kan inte allokera minne för programhuvud" ++msgstr "kan inte allokera en buffert för objektnamn" + + #: elf/pldd.c:64 + msgid "List dynamic shared objects loaded into process." +@@ -1212,11 +1213,11 @@ msgstr "" + + #: elf/sotruss.sh:46 + msgid "Mandatory arguments to long options are also mandatory for any corresponding\\nshort options.\\n" +-msgstr "Obligatoriska respektive valfria argument för långa flaggor är obligatoriska respektive\\nvalfria även för korta.\\n" ++msgstr "Obligatoriska respektive valfria argument för långa flaggor är obligatoriska\\nrespektive valfria även för korta.\\n" + + #: elf/sotruss.sh:55 + msgid "%s: option requires an argument -- '%s'\\n" +-msgstr "%s: flaggan kräver ett argument -- \\\"%s\\\"\\n" ++msgstr "%s: flaggan kräver ett argument — ”%s”\\n" + + #: elf/sotruss.sh:61 + msgid "%s: option is ambiguous; possibilities:" +@@ -1240,7 +1241,7 @@ msgstr "" + + #: elf/sotruss.sh:134 + msgid "%s: unrecognized option '%c%s'\\n" +-msgstr "%s: okänd flagga \\\"%c%s\\\"\\n" ++msgstr "%s: okänd flagga ”%c%s”\\n" + + #: elf/sprof.c:77 + msgid "Output selection:" +@@ -1260,7 +1261,7 @@ msgstr "generera anropsgraf" + + #: elf/sprof.c:89 + msgid "Read and display shared object profiling data." +-msgstr "Läs och visa profildata för delat objekt" ++msgstr "Läs och visa profildata för delat objekt." + + #: elf/sprof.c:94 + msgid "SHOBJ [PROFDATA]" +@@ -1622,7 +1623,7 @@ msgstr "Fel: .netrc kan läsas av andra." + + #: inet/ruserpass.c:185 + msgid "Remove password or make file unreadable by others." +-msgstr "Ta bort lösenord eller gör filen oläsbar för andra" ++msgstr "Ta bort lösenord eller gör filen oläsbar för andra." + + #: inet/ruserpass.c:277 + #, c-format +@@ -2182,12 +2183,12 @@ msgstr "Inget namn definierat i teckenuppsättning" + #: locale/programs/ld-ctype.c:479 + #, c-format + msgid "character L'\\u%0*x' in class `%s' must be in class `%s'" +-msgstr "tecken L\"\\u%0*x\" i klass \"%s\" måste vara i klass \"%s\"" ++msgstr "tecken L'\\u%0*x' i klassen ”%s” måste vara i klassen ”%s”" + + #: locale/programs/ld-ctype.c:494 + #, c-format + msgid "character L'\\u%0*x' in class `%s' must not be in class `%s'" +-msgstr "tecken L\"\\u%0*x\" i klass \"%s\" får inte vara i klass \"%s\"" ++msgstr "tecken L'\\u%0*x' i klassen ”%s” får inte vara i klassen ”%s”" + + #: locale/programs/ld-ctype.c:508 locale/programs/ld-ctype.c:566 + #, c-format +@@ -2611,7 +2612,7 @@ msgstr "Skriv mer information" + + #: locale/programs/locale.c:85 + msgid "Get locale-specific information." +-msgstr "Hämta lokalspecifik information" ++msgstr "Hämta lokalspecifik information." + + #: locale/programs/locale.c:88 + msgid "" +@@ -3022,7 +3023,7 @@ msgstr "felaktig mcheck_status, biblioteket är felaktigt\n" + + #: malloc/memusage.sh:32 + msgid "%s: option '%s' requires an argument\\n" +-msgstr "%s: flaggan \\\"%s\\\" kräver ett argument\\n" ++msgstr "%s: flaggan ”%s” kräver ett argument\\n" + + #: malloc/memusage.sh:38 + msgid "" +@@ -3091,11 +3092,11 @@ msgstr "" + + #: malloc/memusage.sh:191 + msgid "memusage: option \\`${1##*=}' is ambiguous" +-msgstr "memusage: flaggan \"${1##*=}\" är tvetydig" ++msgstr "memusage: flaggan ”${1##*=}” är tvetydig" + + #: malloc/memusage.sh:200 + msgid "memusage: unrecognized option \\`$1'" +-msgstr "memusage: okänd flagga \"$1\"" ++msgstr "memusage: okänd flagga ”$1”" + + #: malloc/memusage.sh:213 + msgid "No program name given" +@@ -3341,7 +3342,7 @@ msgstr "Kan inte skapa process hos server" + + #: nis/nis_error.h:48 + msgid "Master server busy, full dump rescheduled." +-msgstr "Huvudserver är upptagen, full dump åter schemalagd" ++msgstr "Huvudserver är upptagen, full dump åter schemalagd." + + #: nis/nis_local_names.c:121 + #, c-format +@@ -3511,7 +3512,7 @@ msgstr "\t\tRättigheter : " + + #: nis/nis_print.c:290 + msgid "Linked Object Type : " +-msgstr "Länkad objekttyp: " ++msgstr "Länkad objekttyp : " + + #: nis/nis_print.c:292 + #, c-format +@@ -3802,15 +3803,14 @@ msgid " (first)" + msgstr " (första)" + + #: nscd/cache.c:288 +-#, fuzzy, c-format +-#| msgid "cannot stat() file `%s': %s" ++#, c-format + msgid "checking for monitored file `%s': %s" +-msgstr "kan inte ta status på fil \"%s\": %s" ++msgstr "kontrollerar den övervakade filen ”%s”: %s" + + #: nscd/cache.c:298 + #, c-format + msgid "monitored file `%s` changed (mtime)" +-msgstr "" ++msgstr "den övervakade filen ”%s” ändrades (mtime)" + + #: nscd/cache.c:341 + #, c-format +@@ -3906,34 +3906,32 @@ msgstr "kan inte få uttag (socket) att acceptera förbindelser: %s" + #: nscd/connections.c:973 + #, c-format + msgid "disabled inotify-based monitoring for file `%s': %s" +-msgstr "" ++msgstr "avaktiverade inotify-baserad övervakning för filen ”%s”: %s" + + #: nscd/connections.c:977 + #, c-format + msgid "monitoring file `%s` (%d)" +-msgstr "" ++msgstr "övervakar filen ”%s” (%d)" + + #: nscd/connections.c:990 + #, c-format + msgid "disabled inotify-based monitoring for directory `%s': %s" +-msgstr "" ++msgstr "avaktiverade inotify-baserad övervakning av katalogen ”%s”: %s" + + #: nscd/connections.c:994 +-#, fuzzy, c-format +-#| msgid "Can't open directory %s" ++#, c-format + msgid "monitoring directory `%s` (%d)" +-msgstr "Kan inte öppna katalog %s" ++msgstr "övervakar katalogen ”%s” (%d)" + + #: nscd/connections.c:1022 +-#, fuzzy, c-format +-#| msgid "register trace file %s for database %s" ++#, c-format + msgid "monitoring file %s for database %s" +-msgstr "registrera spårningsfil %s för databas %s" ++msgstr "övervakar filen %s för databas %s" + + #: nscd/connections.c:1032 + #, c-format + msgid "stat failed for file `%s'; will try again later: %s" +-msgstr "" ++msgstr "stat misslyckades för filen ”%s”; kommer försöka igen senare: %s" + + #: nscd/connections.c:1151 + #, c-format +@@ -4032,44 +4030,42 @@ msgstr "handle_request: begäran mottagen (Version = %d)" + #: nscd/connections.c:1963 + #, c-format + msgid "ignored inotify event for `%s` (file exists)" +-msgstr "" ++msgstr "ignorerade inotify-händelse för ”%s” (filen finns)" + + #: nscd/connections.c:1968 + #, c-format + msgid "monitored file `%s` was %s, removing watch" +-msgstr "" ++msgstr "den övervakade filen ”%s” var %s, tar bort vakten" + + #: nscd/connections.c:1976 nscd/connections.c:2018 + #, c-format + msgid "failed to remove file watch `%s`: %s" +-msgstr "" ++msgstr "misslyckades att ta bort filvakt ”%s”: %s" + + #: nscd/connections.c:1991 + #, c-format + msgid "monitored file `%s` was written to" +-msgstr "" ++msgstr "den övervakade filen ”%s” skrevs till" + + #: nscd/connections.c:2015 + #, c-format + msgid "monitored parent directory `%s` was %s, removing watch on `%s`" +-msgstr "" ++msgstr "den övervakade föräldrakatalogen ”%s” var %s, tar bort vakten av ”%s”" + + #: nscd/connections.c:2041 + #, c-format + msgid "monitored file `%s` was %s, adding watch" +-msgstr "" ++msgstr "den övervakade filen ”%s” var %s, lägger till vakt" + + #: nscd/connections.c:2053 +-#, fuzzy, c-format +-#| msgid "failed to load shared object `%s'" ++#, c-format + msgid "failed to add file watch `%s`: %s" +-msgstr "misslyckades med att ladda delat objekt \"%s\"" ++msgstr "misslyckades med att lägga till filvakt ”%s”: %s" + + #: nscd/connections.c:2247 nscd/connections.c:2428 +-#, fuzzy, c-format +-#| msgid "disabled inotify after read error %d" ++#, c-format + msgid "disabled inotify-based monitoring after read error %d" +-msgstr "inaktiverade inotify efter läsfel %d" ++msgstr "avaktiverade inotify-baserad övervakning efter läsfel %d" + + #: nscd/connections.c:2543 + msgid "could not initialize conditional variable" +@@ -4199,7 +4195,7 @@ msgstr "Använd separat cache för varje användare" + + #: nscd/nscd.c:122 + msgid "Name Service Cache Daemon." +-msgstr "Namntjänst cache-demon" ++msgstr "Cache-demon för namntjänsten." + + #: nscd/nscd.c:155 nss/getent.c:1007 nss/makedb.c:206 + #, c-format +@@ -4531,11 +4527,11 @@ msgstr "Access Vector Cache (AVC) startad" + + #: nscd/selinux.c:368 + msgid "Error querying policy for undefined object classes or permissions." +-msgstr "Fel när policy för odefinierade objektklasser eller rättigheter hämtades" ++msgstr "Fel när policy för odefinierade objektklasser eller rättigheter hämtades." + + #: nscd/selinux.c:375 + msgid "Error getting security class for nscd." +-msgstr "Fel när säkerhetsklass för nscd hämtades" ++msgstr "Fel när säkerhetsklass för nscd hämtades." + + #: nscd/selinux.c:380 + #, c-format +@@ -4609,7 +4605,7 @@ msgstr "inaktivera DIN-kodning" + + #: nss/getent.c:64 + msgid "Get entries from administrative database." +-msgstr "Hämta poster från den administrativa databasen" ++msgstr "Hämta poster från den administrativa databasen." + + #: nss/getent.c:148 nss/getent.c:477 nss/getent.c:522 + #, c-format +@@ -4652,7 +4648,7 @@ msgstr "Genererad rad som inte ingår i iterationen" + + #: nss/makedb.c:131 + msgid "Create simple database from textual input." +-msgstr "Skapa en enkel databas från textuell indata" ++msgstr "Skapa en enkel databas från textuell indata." + + #: nss/makedb.c:134 + msgid "" +@@ -5412,7 +5408,7 @@ msgstr "Kan inte ange netid-flaggan utan TIRPC!\n" + #: sunrpc/rpc_main.c:1374 + #, c-format + msgid "Cannot use table flags with newstyle!\n" +-msgstr "Kan inte ange tabellflaggor med ny stil\n" ++msgstr "Kan inte ange tabellflaggor med ny stil!\n" + + #: sunrpc/rpc_main.c:1393 + #, c-format +@@ -7270,18 +7266,9 @@ msgstr "tidszonsförkortning skiljer sig från POSIX-standarden" + + #: timezone/zic.c:2789 + msgid "too many, or too long, time zone abbreviations" +-msgstr "för många eller för långa tidszonförkortningar" ++msgstr "för många eller för långa tidszonsförkortningar" + + #: timezone/zic.c:2829 + #, c-format + msgid "%s: Can't create directory %s: %s\n" + msgstr "%s: Kan inte skapa katalog %s: %s\n" +- +-#~ msgid "cannot load any more object with static TLS" +-#~ msgstr "kan inte ladda fler objekt med statiskt TLS" +- +-#~ msgid "%s: no PLTREL found in object %s\n" +-#~ msgstr "%s: hittade inga PLTREL i objekt %s\n" +- +-#~ msgid "cannot create internal descriptors" +-#~ msgstr "kan inte skapa interna deskriptorer" +-- +2.7.4.GIT + + diff --git a/srcpkgs/glibc/patches/glibc-upstream-04.patch b/srcpkgs/glibc/patches/glibc-upstream-04.patch new file mode 100644 index 0000000000..332488a1d4 --- /dev/null +++ b/srcpkgs/glibc/patches/glibc-upstream-04.patch @@ -0,0 +1,80 @@ +From 8026e9db17af663b19a42892874d483328ada828 Mon Sep 17 00:00:00 2001 +From: Aurelien Jarno +Date: Wed, 3 Aug 2016 00:22:44 +0200 +Subject: [PATCH 04] powerpc: fix ifunc-sel.h with GCC 6 + +On 32-bit PowerPC GCC 6 always saves the PIC register on the stack in +the prologue and adjust the stack in the epilogue. It is therefore not +possible anymore to just exit the function in the inline asm code, +otherwise it corrupts the stack pointer. This causes the following tests +to fail when using GCC 6: + +FAIL: elf/ifuncmain1 +FAIL: elf/ifuncmain1pic +FAIL: elf/ifuncmain1picstatic +FAIL: elf/ifuncmain1pie +FAIL: elf/ifuncmain1staticpic +FAIL: elf/ifuncmain1staticpie +FAIL: elf/ifuncmain1vis +FAIL: elf/ifuncmain1vispic +FAIL: elf/ifuncmain1vispie +FAIL: elf/ifuncmain2pic +FAIL: elf/ifuncmain2picstatic +FAIL: elf/ifuncmain3 +FAIL: elf/ifuncmain4picstatic +FAIL: elf/ifuncmain5 +FAIL: elf/ifuncmain5picstatic +FAIL: elf/ifuncmain5staticpic + +The solution is to replace the beqlr instructions by a beq to the end +of the inline asm code. This fixes all the above failures. + +ChangeLog: + * sysdeps/powerpc/ifunc-sel.h (ifunc_sel): Replace beqlr instructions + by beq instructions jumping to the end of the function. + +(cherry picked from commit ee71e5b6dd6a21e981ad0fa74359e066f5a8b359) +--- + ChangeLog | 5 +++++ + sysdeps/powerpc/ifunc-sel.h | 7 ++++--- + 2 files changed, 9 insertions(+), 3 deletions(-) + +diff --git a/ChangeLog b/ChangeLog +index 84ae7a7..16aa09d 100644 +--- a/ChangeLog ++++ b/ChangeLog +@@ -1,3 +1,8 @@ ++2016-08-03 Aurelien Jarno ++ ++ * sysdeps/powerpc/ifunc-sel.h (ifunc_sel): Replace beqlr instructions ++ by beq instructions jumping to the end of the function. ++ + 2016-08-04 Carlos O'Donell + + * po/de.po: Update from Translation Project. +diff --git a/sysdeps/powerpc/ifunc-sel.h b/sysdeps/powerpc/ifunc-sel.h +index 526d8ed..79d110f 100644 +--- a/sysdeps/powerpc/ifunc-sel.h ++++ b/sysdeps/powerpc/ifunc-sel.h +@@ -17,13 +17,14 @@ ifunc_sel (int (*f1) (void), int (*f2) (void), int (*f3) (void)) + "addis %0,11,%2-1b@ha\n\t" + "addi %0,%0,%2-1b@l\n\t" + "cmpwi 12,1\n\t" +- "beqlr\n\t" ++ "beq 2f\n\t" + "addis %0,11,%3-1b@ha\n\t" + "addi %0,%0,%3-1b@l\n\t" + "cmpwi 12,-1\n\t" +- "beqlr\n\t" ++ "beq 2f\n\t" + "addis %0,11,%4-1b@ha\n\t" +- "addi %0,%0,%4-1b@l" ++ "addi %0,%0,%4-1b@l\n\t" ++ "2:" + : "=r" (ret) + : "X" (&global), "X" (f1), "X" (f2), "X" (f3)); + return ret; +-- +2.7.4.GIT + + diff --git a/srcpkgs/glibc/patches/glibc-upstream-05.patch b/srcpkgs/glibc/patches/glibc-upstream-05.patch new file mode 100644 index 0000000000..2aee6c507d --- /dev/null +++ b/srcpkgs/glibc/patches/glibc-upstream-05.patch @@ -0,0 +1,68 @@ +From f038a42f547836ecb61b2a7ce1c50542df2ac769 Mon Sep 17 00:00:00 2001 +From: Aurelien Jarno +Date: Wed, 3 Aug 2016 00:22:44 +0200 +Subject: [PATCH 05] powerpc: fix ifunc-sel.h fix asm constraints and + clobber list + +As pointer out on the mailing list, the inline assembly code in +sysdeps/powerpc/ifunc-sel.h doesn't have a list of clobbered registers +and used wrong constraints. + +This patch fixes that. I verified it doesn't introduce any change in the +generated code. + +Changelog: + * sysdeps/powerpc/ifunc-sel.h (ifunc_sel): Add "11", "12", "cr0" to the + clobber list. Use "i" constraint instead of "X". + (ifunc_one): Add "12" to the clobber list. Use "i" constraint instead + of "X". + +(cherry picked from commit 30f926d3b3dcb74c038155715ed341d5c4b334eb) +--- + ChangeLog | 4 ++++ + sysdeps/powerpc/ifunc-sel.h | 6 ++++-- + 2 files changed, 8 insertions(+), 2 deletions(-) + +diff --git a/ChangeLog b/ChangeLog +index 16aa09d..7ef0fe6 100644 +--- a/ChangeLog ++++ b/ChangeLog +@@ -2,6 +2,10 @@ + + * sysdeps/powerpc/ifunc-sel.h (ifunc_sel): Replace beqlr instructions + by beq instructions jumping to the end of the function. ++ * sysdeps/powerpc/ifunc-sel.h (ifunc_sel): Add "11", "12", "cr0" to the ++ clobber list. Use "i" constraint instead of "X". ++ (ifunc_one): Add "12" to the clobber list. Use "i" constraint instead ++ of "X". + + 2016-08-04 Carlos O'Donell + +diff --git a/sysdeps/powerpc/ifunc-sel.h b/sysdeps/powerpc/ifunc-sel.h +index 79d110f..ac589bd 100644 +--- a/sysdeps/powerpc/ifunc-sel.h ++++ b/sysdeps/powerpc/ifunc-sel.h +@@ -26,7 +26,8 @@ ifunc_sel (int (*f1) (void), int (*f2) (void), int (*f3) (void)) + "addi %0,%0,%4-1b@l\n\t" + "2:" + : "=r" (ret) +- : "X" (&global), "X" (f1), "X" (f2), "X" (f3)); ++ : "i" (&global), "i" (f1), "i" (f2), "i" (f3) ++ : "11", "12", "cr0"); + return ret; + } + +@@ -41,7 +42,8 @@ ifunc_one (int (*f1) (void)) + "addis %0,%0,%1-1b@ha\n\t" + "addi %0,%0,%1-1b@l" + : "=r" (ret) +- : "X" (f1)); ++ : "i" (f1) ++ : "12"); + return ret; + } + #endif +-- +2.7.4.GIT + + diff --git a/srcpkgs/glibc/patches/glibc-upstream-06.patch b/srcpkgs/glibc/patches/glibc-upstream-06.patch new file mode 100644 index 0000000000..fd527269a0 --- /dev/null +++ b/srcpkgs/glibc/patches/glibc-upstream-06.patch @@ -0,0 +1,140 @@ +From b3012e4d56e63dd4b1eecf9f006c77b0f1d6939a Mon Sep 17 00:00:00 2001 +From: "David S. Miller" +Date: Tue, 2 Aug 2016 21:00:21 -0700 +Subject: [PATCH 06] Fix sNaN handling in nearbyint on 32-bit sparc. + + * sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_nearbyint-vis3.S + (__nearbyint_vis3): Don't check for sNaN before float register is + loaded with the incoming argument. + * sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_nearbyintf-vis3.S + (__nearbyintf_vis3): Likewise. + * sysdeps/sparc/sparc32/sparcv9/fpu/s_nearbyint.S (__nearbyint): + Likewise. + * sysdeps/sparc/sparc32/sparcv9/fpu/s_nearbyintf.S (__nearbyintf): + Likewise. + +(cherry picked from commit 3ef3f1b93fdf20143865cc16dd75f39a7f0fac2f) +--- + ChangeLog | 12 ++++++++++++ + .../sparc/sparc32/sparcv9/fpu/multiarch/s_nearbyint-vis3.S | 6 +++--- + .../sparc/sparc32/sparcv9/fpu/multiarch/s_nearbyintf-vis3.S | 2 +- + sysdeps/sparc/sparc32/sparcv9/fpu/s_nearbyint.S | 8 ++++---- + sysdeps/sparc/sparc32/sparcv9/fpu/s_nearbyintf.S | 4 ++-- + 5 files changed, 22 insertions(+), 10 deletions(-) + +diff --git a/ChangeLog b/ChangeLog +index 7ef0fe6..b9b29b3 100644 +--- a/ChangeLog ++++ b/ChangeLog +@@ -1,3 +1,15 @@ ++2016-08-02 David S. Miller ++ ++ * sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_nearbyint-vis3.S ++ (__nearbyint_vis3): Don't check for sNaN before float register is ++ loaded with the incoming argument. ++ * sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_nearbyintf-vis3.S ++ (__nearbyintf_vis3): Likewise. ++ * sysdeps/sparc/sparc32/sparcv9/fpu/s_nearbyint.S (__nearbyint): ++ Likewise. ++ * sysdeps/sparc/sparc32/sparcv9/fpu/s_nearbyintf.S (__nearbyintf): ++ Likewise. ++ + 2016-08-03 Aurelien Jarno + + * sysdeps/powerpc/ifunc-sel.h (ifunc_sel): Replace beqlr instructions +diff --git a/sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_nearbyint-vis3.S b/sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_nearbyint-vis3.S +index d9ff0cc..ff81b0d 100644 +--- a/sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_nearbyint-vis3.S ++++ b/sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_nearbyint-vis3.S +@@ -36,15 +36,15 @@ + #define SIGN_BIT %f12 /* -0.0 */ + + ENTRY (__nearbyint_vis3) ++ sllx %o0, 32, %o0 ++ or %o0, %o1, %o0 ++ movxtod %o0, %f0 + fcmpd %fcc3, %f0, %f0 /* Check for sNaN */ + st %fsr, [%sp + 88] + sethi %hi(TWO_FIFTYTWO), %o2 + sethi %hi(0xf8003e0), %o5 + ld [%sp + 88], %o4 +- sllx %o0, 32, %o0 + or %o5, %lo(0xf8003e0), %o5 +- or %o0, %o1, %o0 +- movxtod %o0, %f0 + andn %o4, %o5, %o4 + fzero ZERO + st %o4, [%sp + 80] +diff --git a/sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_nearbyintf-vis3.S b/sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_nearbyintf-vis3.S +index 5cd1eb0..833a0df 100644 +--- a/sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_nearbyintf-vis3.S ++++ b/sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_nearbyintf-vis3.S +@@ -35,9 +35,9 @@ + #define SIGN_BIT %f12 /* -0.0 */ + + ENTRY (__nearbyintf_vis3) ++ movwtos %o0, %f1 + fcmps %fcc3, %f1, %f1 /* Check for sNaN */ + st %fsr, [%sp + 88] +- movwtos %o0, %f1 + sethi %hi(TWO_TWENTYTHREE), %o2 + sethi %hi(0xf8003e0), %o5 + ld [%sp + 88], %o4 +diff --git a/sysdeps/sparc/sparc32/sparcv9/fpu/s_nearbyint.S b/sysdeps/sparc/sparc32/sparcv9/fpu/s_nearbyint.S +index 84a1097..198440a 100644 +--- a/sysdeps/sparc/sparc32/sparcv9/fpu/s_nearbyint.S ++++ b/sysdeps/sparc/sparc32/sparcv9/fpu/s_nearbyint.S +@@ -36,21 +36,21 @@ + #define SIGN_BIT %f12 /* -0.0 */ + + ENTRY (__nearbyint) ++ sllx %o0, 32, %o0 ++ or %o0, %o1, %o0 ++ stx %o0, [%sp + 72] ++ ldd [%sp + 72], %f0 + fcmpd %fcc3, %f0, %f0 /* Check for sNaN */ + st %fsr, [%sp + 88] + sethi %hi(TWO_FIFTYTWO), %o2 + sethi %hi(0xf8003e0), %o5 + ld [%sp + 88], %o4 +- sllx %o0, 32, %o0 + or %o5, %lo(0xf8003e0), %o5 +- or %o0, %o1, %o0 + andn %o4, %o5, %o4 + fzero ZERO + st %o4, [%sp + 80] +- stx %o0, [%sp + 72] + sllx %o2, 32, %o2 + fnegd ZERO, SIGN_BIT +- ldd [%sp + 72], %f0 + ld [%sp + 80], %fsr + stx %o2, [%sp + 72] + fabsd %f0, %f14 +diff --git a/sysdeps/sparc/sparc32/sparcv9/fpu/s_nearbyintf.S b/sysdeps/sparc/sparc32/sparcv9/fpu/s_nearbyintf.S +index d5cf5ce..9be41f6 100644 +--- a/sysdeps/sparc/sparc32/sparcv9/fpu/s_nearbyintf.S ++++ b/sysdeps/sparc/sparc32/sparcv9/fpu/s_nearbyintf.S +@@ -35,9 +35,10 @@ + #define SIGN_BIT %f12 /* -0.0 */ + + ENTRY (__nearbyintf) ++ st %o0, [%sp + 68] ++ ld [%sp + 68], %f1 + fcmps %fcc3, %f1, %f1 /* Check for sNaN */ + st %fsr, [%sp + 88] +- st %o0, [%sp + 68] + sethi %hi(TWO_TWENTYTHREE), %o2 + sethi %hi(0xf8003e0), %o5 + ld [%sp + 88], %o4 +@@ -46,7 +47,6 @@ ENTRY (__nearbyintf) + fnegs ZERO, SIGN_BIT + andn %o4, %o5, %o4 + st %o4, [%sp + 80] +- ld [%sp + 68], %f1 + ld [%sp + 80], %fsr + st %o2, [%sp + 68] + fabss %f1, %f14 +-- +2.7.4.GIT + + diff --git a/srcpkgs/glibc/patches/glibc-upstream-07.patch b/srcpkgs/glibc/patches/glibc-upstream-07.patch new file mode 100644 index 0000000000..7e71f4cb0e --- /dev/null +++ b/srcpkgs/glibc/patches/glibc-upstream-07.patch @@ -0,0 +1,474 @@ +From 0ba4a7522b9491ad32713ab87990e627ef196de4 Mon Sep 17 00:00:00 2001 +From: Aurelien Jarno +Date: Fri, 5 Aug 2016 22:35:01 +0200 +Subject: [PATCH 07] sparc: remove fdim sparc specific implementations + +The fdim and fdimf functions on sparc do not fully follow the standard +and do not set errno to ERANGE when the result overflows. Since glibc +2.24 this causes the two following tests to fail: + + Failure: fdim (max_value, -max_value): errno set to 0, expected 34 (ERANGE) + Failure: fdim_upward (max_value, -max_value): errno set to 0, expected 34 (ERANGE) + +It happens that using GCC with the generic C code generates very similar +code to the sparc specific implementations. Therefore this patches +remove them. Note it might still worth adding a vis3 specific version of +fdim on sparc32/sparcv9, this is done in a following patch to ease +backporting. + +Changelog: + * sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/Makefile + [$(subdir) = math && $(have-as-vis3) = yes] (libm-sysdep_routines): + Remove s_fdimf-vis3, s_fdim-vis3. + * sysdeps/sparc/sparc32/fpu/s_fdim.S: Delete file. + * sysdeps/sparc/sparc32/fpu/s_fdimf.S: Likewise. + * sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_fdim-vis3.S: Likewise. + * sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_fdim.S: Likewise. + * sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_fdimf-vis3.S: Likewise. + * sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_fdimf.S: Likewise. + * sysdeps/sparc/sparc32/sparcv9/fpu/s_fdim.S: Likewise. + * sysdeps/sparc/sparc32/sparcv9/fpu/s_fdimf.S: Likewise. + * sysdeps/sparc/sparc64/fpu/s_fdim.S: Likewise. + * sysdeps/sparc/sparc64/fpu/s_fdimf.S: Likewise. + +(cherry picked from commit 8a9f4eb95894eae7e725e79721ba26fbc5b4ed06) +--- + ChangeLog | 16 +++++++++ + sysdeps/sparc/sparc32/fpu/s_fdim.S | 42 ---------------------- + sysdeps/sparc/sparc32/fpu/s_fdimf.S | 35 ------------------ + .../sparc/sparc32/sparcv9/fpu/multiarch/Makefile | 4 +-- + .../sparc32/sparcv9/fpu/multiarch/s_fdim-vis3.S | 34 ------------------ + .../sparc/sparc32/sparcv9/fpu/multiarch/s_fdim.S | 19 ---------- + .../sparc32/sparcv9/fpu/multiarch/s_fdimf-vis3.S | 32 ----------------- + .../sparc/sparc32/sparcv9/fpu/multiarch/s_fdimf.S | 12 ------- + sysdeps/sparc/sparc32/sparcv9/fpu/s_fdim.S | 40 --------------------- + sysdeps/sparc/sparc32/sparcv9/fpu/s_fdimf.S | 35 ------------------ + sysdeps/sparc/sparc64/fpu/s_fdim.S | 32 ----------------- + sysdeps/sparc/sparc64/fpu/s_fdimf.S | 31 ---------------- + 12 files changed, 18 insertions(+), 314 deletions(-) + delete mode 100644 sysdeps/sparc/sparc32/fpu/s_fdim.S + delete mode 100644 sysdeps/sparc/sparc32/fpu/s_fdimf.S + delete mode 100644 sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_fdim-vis3.S + delete mode 100644 sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_fdim.S + delete mode 100644 sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_fdimf-vis3.S + delete mode 100644 sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_fdimf.S + delete mode 100644 sysdeps/sparc/sparc32/sparcv9/fpu/s_fdim.S + delete mode 100644 sysdeps/sparc/sparc32/sparcv9/fpu/s_fdimf.S + delete mode 100644 sysdeps/sparc/sparc64/fpu/s_fdim.S + delete mode 100644 sysdeps/sparc/sparc64/fpu/s_fdimf.S + +diff --git a/ChangeLog b/ChangeLog +index b9b29b3..acdc443 100644 +--- a/ChangeLog ++++ b/ChangeLog +@@ -1,3 +1,19 @@ ++2016-08-05 Aurelien Jarno ++ ++ * sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/Makefile ++ [$(subdir) = math && $(have-as-vis3) = yes] (libm-sysdep_routines): ++ Remove s_fdimf-vis3, s_fdim-vis3. ++ * sysdeps/sparc/sparc32/fpu/s_fdim.S: Delete file. ++ * sysdeps/sparc/sparc32/fpu/s_fdimf.S: Likewise. ++ * sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_fdim-vis3.S: Likewise. ++ * sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_fdim.S: Likewise. ++ * sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_fdimf-vis3.S: Likewise. ++ * sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_fdimf.S: Likewise. ++ * sysdeps/sparc/sparc32/sparcv9/fpu/s_fdim.S: Likewise. ++ * sysdeps/sparc/sparc32/sparcv9/fpu/s_fdimf.S: Likewise. ++ * sysdeps/sparc/sparc64/fpu/s_fdim.S: Likewise. ++ * sysdeps/sparc/sparc64/fpu/s_fdimf.S: Likewise. ++ + 2016-08-02 David S. Miller + + * sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_nearbyint-vis3.S +diff --git a/sysdeps/sparc/sparc32/fpu/s_fdim.S b/sysdeps/sparc/sparc32/fpu/s_fdim.S +deleted file mode 100644 +index e93970f..0000000 +--- a/sysdeps/sparc/sparc32/fpu/s_fdim.S ++++ /dev/null +@@ -1,42 +0,0 @@ +-/* Compute positive difference, sparc 32-bit. +- Copyright (C) 2013-2016 Free Software Foundation, Inc. +- This file is part of the GNU C Library. +- Contributed by David S. Miller . +- +- 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 +- . */ +- +-#include +-#include +- +-ENTRY(__fdim) +- std %o0, [%sp + 72] +- std %o2, [%sp + 80] +- ldd [%sp + 72], %f0 +- ldd [%sp + 80], %f2 +- fcmpd %f0, %f2 +- st %g0, [%sp + 72] +- fbug 1f +- st %g0, [%sp + 76] +- ldd [%sp + 72], %f0 +- fnegs %f0, %f2 +- fmovs %f1, %f3 +-1: retl +- fsubd %f0, %f2, %f0 +-END(__fdim) +-weak_alias (__fdim, fdim) +- +-#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1) +-compat_symbol (libm, __fdim, fdiml, GLIBC_2_1); +-#endif +diff --git a/sysdeps/sparc/sparc32/fpu/s_fdimf.S b/sysdeps/sparc/sparc32/fpu/s_fdimf.S +deleted file mode 100644 +index c3fe8af..0000000 +--- a/sysdeps/sparc/sparc32/fpu/s_fdimf.S ++++ /dev/null +@@ -1,35 +0,0 @@ +-/* Compute positive difference, sparc 32-bit. +- Copyright (C) 2013-2016 Free Software Foundation, Inc. +- This file is part of the GNU C Library. +- Contributed by David S. Miller . +- +- 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 +- . */ +- +-#include +- +-ENTRY(__fdimf) +- st %o0, [%sp + 72] +- st %o1, [%sp + 76] +- ld [%sp + 72], %f0 +- ld [%sp + 76], %f1 +- fcmps %f0, %f1 +- fbug 1f +- st %g0, [%sp + 72] +- ld [%sp + 72], %f0 +- fnegs %f0, %f1 +-1: retl +- fsubs %f0, %f1, %f0 +-END(__fdimf) +-weak_alias (__fdimf, fdimf) +diff --git a/sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/Makefile b/sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/Makefile +index ebbe28b..13d3c6d 100644 +--- a/sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/Makefile ++++ b/sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/Makefile +@@ -4,8 +4,8 @@ libm-sysdep_routines += m_copysignf-vis3 m_copysign-vis3 s_fabs-vis3 \ + s_fabsf-vis3 s_llrintf-vis3 s_llrint-vis3 \ + s_rintf-vis3 s_rint-vis3 w_sqrt-vis3 w_sqrtf-vis3 \ + s_fminf-vis3 s_fmin-vis3 s_fmaxf-vis3 s_fmax-vis3 \ +- s_fmaf-vis3 s_fma-vis3 s_fdimf-vis3 s_fdim-vis3 \ +- s_nearbyint-vis3 s_nearbyintf-vis3 ++ s_fmaf-vis3 s_fma-vis3 s_nearbyint-vis3 \ ++ s_nearbyintf-vis3 + sysdep_routines += s_copysignf-vis3 s_copysign-vis3 + endif + endif +diff --git a/sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_fdim-vis3.S b/sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_fdim-vis3.S +deleted file mode 100644 +index 4a479b1..0000000 +--- a/sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_fdim-vis3.S ++++ /dev/null +@@ -1,34 +0,0 @@ +-/* Compute positive difference, sparc 32-bit+v9+vis3. +- Copyright (C) 2013-2016 Free Software Foundation, Inc. +- This file is part of the GNU C Library. +- Contributed by David S. Miller . +- +- 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 +- . */ +- +-#include +- +-ENTRY(__fdim_vis3) +- movwtos %o0, %f0 +- movwtos %o1, %f1 +- movwtos %o2, %f2 +- movwtos %o3, %f3 +- fcmpd %f0, %f2 +- fbug 1f +- nop +- fzero %f0 +- fnegd %f0, %f2 +-1: retl +- fsubd %f0, %f2, %f0 +-END(__fdim_vis3) +diff --git a/sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_fdim.S b/sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_fdim.S +deleted file mode 100644 +index 4b13408..0000000 +--- a/sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_fdim.S ++++ /dev/null +@@ -1,19 +0,0 @@ +-#include +-#include +- +-SPARC_ASM_VIS3_IFUNC(fdim) +- +-weak_alias (__fdim, fdim) +- +-#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1) +-compat_symbol (libm, __fdim, fdiml, GLIBC_2_1); +-#endif +- +-# undef weak_alias +-# define weak_alias(a, b) +-# undef compat_symbol +-# define compat_symbol(a, b, c, d) +- +-#define __fdim __fdim_generic +- +-#include "../s_fdim.S" +diff --git a/sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_fdimf-vis3.S b/sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_fdimf-vis3.S +deleted file mode 100644 +index 081fc15..0000000 +--- a/sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_fdimf-vis3.S ++++ /dev/null +@@ -1,32 +0,0 @@ +-/* Compute positive difference, sparc 32-bit+v9+vis3. +- Copyright (C) 2013-2016 Free Software Foundation, Inc. +- This file is part of the GNU C Library. +- Contributed by David S. Miller . +- +- 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 +- . */ +- +-#include +- +-ENTRY(__fdimf_vis3) +- movwtos %o0, %f0 +- movwtos %o1, %f1 +- fcmps %f0, %f1 +- fbug 1f +- nop +- fzeros %f0 +- fnegs %f0, %f1 +-1: retl +- fsubs %f0, %f1, %f0 +-END(__fdimf_vis3) +diff --git a/sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_fdimf.S b/sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_fdimf.S +deleted file mode 100644 +index 30381d6..0000000 +--- a/sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_fdimf.S ++++ /dev/null +@@ -1,12 +0,0 @@ +-#include +- +-SPARC_ASM_VIS3_IFUNC(fdimf) +- +-weak_alias (__fdimf, fdimf) +- +-# undef weak_alias +-# define weak_alias(a, b) +- +-#define __fdimf __fdimf_generic +- +-#include "../s_fdimf.S" +diff --git a/sysdeps/sparc/sparc32/sparcv9/fpu/s_fdim.S b/sysdeps/sparc/sparc32/sparcv9/fpu/s_fdim.S +deleted file mode 100644 +index 37f7f44..0000000 +--- a/sysdeps/sparc/sparc32/sparcv9/fpu/s_fdim.S ++++ /dev/null +@@ -1,40 +0,0 @@ +-/* Compute positive difference, sparc 32-bit+v9. +- Copyright (C) 2013-2016 Free Software Foundation, Inc. +- This file is part of the GNU C Library. +- Contributed by David S. Miller . +- +- 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 +- . */ +- +-#include +-#include +- +-ENTRY(__fdim) +- std %o0, [%sp + 72] +- std %o2, [%sp + 80] +- ldd [%sp + 72], %f0 +- ldd [%sp + 80], %f2 +- fcmpd %f0, %f2 +- fbug 1f +- nop +- fzero %f0 +- fnegd %f0, %f2 +-1: retl +- fsubd %f0, %f2, %f0 +-END(__fdim) +-weak_alias (__fdim, fdim) +- +-#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1) +-compat_symbol (libm, __fdim, fdiml, GLIBC_2_1); +-#endif +diff --git a/sysdeps/sparc/sparc32/sparcv9/fpu/s_fdimf.S b/sysdeps/sparc/sparc32/sparcv9/fpu/s_fdimf.S +deleted file mode 100644 +index 9e0e3f2..0000000 +--- a/sysdeps/sparc/sparc32/sparcv9/fpu/s_fdimf.S ++++ /dev/null +@@ -1,35 +0,0 @@ +-/* Compute positive difference, sparc 32-bit+v9. +- Copyright (C) 2013-2016 Free Software Foundation, Inc. +- This file is part of the GNU C Library. +- Contributed by David S. Miller . +- +- 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 +- . */ +- +-#include +- +-ENTRY(__fdimf) +- st %o0, [%sp + 72] +- st %o1, [%sp + 76] +- ld [%sp + 72], %f0 +- ld [%sp + 76], %f1 +- fcmps %f0, %f1 +- fbug 1f +- nop +- fzeros %f0 +- fnegs %f0, %f1 +-1: retl +- fsubs %f0, %f1, %f0 +-END(__fdimf) +-weak_alias (__fdimf, fdimf) +diff --git a/sysdeps/sparc/sparc64/fpu/s_fdim.S b/sysdeps/sparc/sparc64/fpu/s_fdim.S +deleted file mode 100644 +index 7fae72a..0000000 +--- a/sysdeps/sparc/sparc64/fpu/s_fdim.S ++++ /dev/null +@@ -1,32 +0,0 @@ +-/* Compute positive difference, sparc 64-bit. +- Copyright (C) 2013-2016 Free Software Foundation, Inc. +- This file is part of the GNU C Library. +- Contributed by David S. Miller . +- +- 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 +- . */ +- +-#include +-#include +- +-ENTRY(__fdim) +- fcmpd %f0, %f2 +- fbug 1f +- nop +- fzero %f0 +- fnegd %f0, %f2 +-1: retl +- fsubd %f0, %f2, %f0 +-END(__fdim) +-weak_alias (__fdim, fdim) +diff --git a/sysdeps/sparc/sparc64/fpu/s_fdimf.S b/sysdeps/sparc/sparc64/fpu/s_fdimf.S +deleted file mode 100644 +index 356c23c..0000000 +--- a/sysdeps/sparc/sparc64/fpu/s_fdimf.S ++++ /dev/null +@@ -1,31 +0,0 @@ +-/* Compute positive difference, sparc 64-bit. +- Copyright (C) 2013-2016 Free Software Foundation, Inc. +- This file is part of the GNU C Library. +- Contributed by David S. Miller . +- +- 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 +- . */ +- +-#include +- +-ENTRY(__fdimf) +- fcmps %f1, %f3 +- fbug 1f +- nop +- fzeros %f1 +- fnegs %f1, %f3 +-1: retl +- fsubs %f1, %f3, %f0 +-END(__fdimf) +-weak_alias (__fdimf, fdimf) +-- +2.7.4.GIT + + diff --git a/srcpkgs/glibc/patches/glibc-upstream-08.patch b/srcpkgs/glibc/patches/glibc-upstream-08.patch new file mode 100644 index 0000000000..004773d9fd --- /dev/null +++ b/srcpkgs/glibc/patches/glibc-upstream-08.patch @@ -0,0 +1,228 @@ +From e2e4984ad62330fa1d328d9eeb0a3e42620825b6 Mon Sep 17 00:00:00 2001 +From: Florian Weimer +Date: Wed, 17 Aug 2016 14:57:00 +0200 +Subject: [PATCH 08] Do not override objects in libc.a in other static + libraries [BZ #20452] + +With this change, we no longer add sysdep.o and similar objects which +are present in libc.a to other static libraries. + +(cherry picked from commit d9067fca40b8aac156d73cfa44d6875813555a6c) +--- + ChangeLog | 34 +++++++++++++++++++++++++++++ + sysdeps/ia64/nptl/Makefile | 1 + + sysdeps/mips/Makefile | 1 + + sysdeps/mips/nptl/Makefile | 1 + + sysdeps/s390/nptl/Makefile | 1 + + sysdeps/unix/alpha/Makefile | 1 + + sysdeps/unix/sysv/linux/alpha/Makefile | 1 + + sysdeps/unix/sysv/linux/i386/Makefile | 1 + + sysdeps/unix/sysv/linux/ia64/Makefile | 1 + + sysdeps/unix/sysv/linux/microblaze/Makefile | 3 ++- + sysdeps/unix/sysv/linux/powerpc/Makefile | 2 ++ + sysdeps/unix/sysv/linux/s390/Makefile | 1 + + sysdeps/unix/sysv/linux/sparc/Makefile | 2 ++ + sysdeps/unix/sysv/linux/tile/Makefile | 1 + + 14 files changed, 50 insertions(+), 1 deletion(-) + +diff --git a/ChangeLog b/ChangeLog +index acdc443..9dfd24d 100644 +--- a/ChangeLog ++++ b/ChangeLog +@@ -1,3 +1,37 @@ ++2016-08-17 Florian Weimer ++ ++ [BZ #20452] ++ Avoid additional copies of objects in libc.a in static libraries. ++ * sysdeps/ia64/nptl/Makefile (libpthread-shared-only-routines): ++ Add ptw-sysdep, ptw-sigblock, ptw-sigprocmask. ++ * sysdeps/mips/Makefile (librt-shared-only-routines): Add ++ rt-sysdep. ++ * sysdeps/mips/nptl/Makefile (libpthread-shared-only-routines): ++ Add nptl-sysdep. ++ * sysdeps/s390/nptl/Makefile (libpthread-shared-only-routines): ++ Add ptw-sysdep. ++ * sysdeps/unix/alpha/Makefile (librt-shared-only-routines): Add ++ rt-sysdep. ++ * sysdeps/unix/sysv/linux/alpha/Makefile ++ (libpthread-shared-only-routines): Add ptw-sysdep, ++ ptw-sigprocmask, ptw-rt_sigaction. ++ * sysdeps/unix/sysv/linux/ia64/Makefile ++ (librt-shared-only-routines): Add rt-sysdep. ++ * sysdeps/unix/sysv/linux/i386/Makefile ++ (libpthread-shared-only-routines): Add libc-do-syscall. ++ * sysdeps/unix/sysv/linux/microblaze/Makefile ++ (libpthread-shared-only-routines): Add sysdep. ++ * sysdeps/unix/sysv/linux/powerpc/Makefile ++ (librt-shared-only-routines): Add rt-sysdep. ++ (libpthread-shared-only-routines): Add sysdep. ++ * sysdeps/unix/sysv/linux/s390/Makefile ++ (librt-shared-only-routines): Add rt-sysdep. ++ * sysdeps/unix/sysv/linux/sparc/Makefile ++ (librt-shared-only-routines): Add rt-sysdep. ++ (libpthread-shared-only-routines): Add sysdep. ++ * sysdeps/unix/sysv/linux/tile/Makefile ++ (libpthread-shared-only-routines): Likewise. ++ + 2016-08-05 Aurelien Jarno + + * sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/Makefile +diff --git a/sysdeps/ia64/nptl/Makefile b/sysdeps/ia64/nptl/Makefile +index 48f1327..1e6be8e 100644 +--- a/sysdeps/ia64/nptl/Makefile ++++ b/sysdeps/ia64/nptl/Makefile +@@ -21,4 +21,5 @@ endif + + ifeq ($(subdir),nptl) + libpthread-routines += ptw-sysdep ptw-sigblock ptw-sigprocmask ++libpthread-shared-only-routines += ptw-sysdep ptw-sigblock ptw-sigprocmask + endif +diff --git a/sysdeps/mips/Makefile b/sysdeps/mips/Makefile +index 3d35523..7c1d779 100644 +--- a/sysdeps/mips/Makefile ++++ b/sysdeps/mips/Makefile +@@ -9,6 +9,7 @@ endif + + ifeq ($(subdir),rt) + librt-sysdep_routines += rt-sysdep ++librt-shared-only-routines += rt-sysdep + endif + + ifeq ($(subdir),debug) +diff --git a/sysdeps/mips/nptl/Makefile b/sysdeps/mips/nptl/Makefile +index 117744f..dda154d 100644 +--- a/sysdeps/mips/nptl/Makefile ++++ b/sysdeps/mips/nptl/Makefile +@@ -21,4 +21,5 @@ endif + + ifeq ($(subdir),nptl) + libpthread-sysdep_routines += nptl-sysdep ++libpthread-shared-only-routines += nptl-sysdep + endif +diff --git a/sysdeps/s390/nptl/Makefile b/sysdeps/s390/nptl/Makefile +index 5734b98..3a391c8 100644 +--- a/sysdeps/s390/nptl/Makefile ++++ b/sysdeps/s390/nptl/Makefile +@@ -21,4 +21,5 @@ endif + + ifeq ($(subdir),nptl) + libpthread-routines += ptw-sysdep ++libpthread-shared-only-routines += ptw-sysdep + endif +diff --git a/sysdeps/unix/alpha/Makefile b/sysdeps/unix/alpha/Makefile +index 441aa02..0660847 100644 +--- a/sysdeps/unix/alpha/Makefile ++++ b/sysdeps/unix/alpha/Makefile +@@ -1,3 +1,4 @@ + ifeq ($(subdir),rt) + librt-sysdep_routines += rt-sysdep ++librt-shared-only-routines += rt-sysdep + endif +diff --git a/sysdeps/unix/sysv/linux/alpha/Makefile b/sysdeps/unix/sysv/linux/alpha/Makefile +index c089545..3b523b7 100644 +--- a/sysdeps/unix/sysv/linux/alpha/Makefile ++++ b/sysdeps/unix/sysv/linux/alpha/Makefile +@@ -40,4 +40,5 @@ endif # math + ifeq ($(subdir),nptl) + # pull in __syscall_error routine, __sigprocmask, __syscall_rt_sigaction + libpthread-routines += ptw-sysdep ptw-sigprocmask ptw-rt_sigaction ++libpthread-shared-only-routines += ptw-sysdep ptw-sigprocmask ptw-rt_sigaction + endif +diff --git a/sysdeps/unix/sysv/linux/i386/Makefile b/sysdeps/unix/sysv/linux/i386/Makefile +index b015ff7..6073a9f 100644 +--- a/sysdeps/unix/sysv/linux/i386/Makefile ++++ b/sysdeps/unix/sysv/linux/i386/Makefile +@@ -31,6 +31,7 @@ endif + # libpthread uses six-argument inline syscalls. + ifeq ($(subdir),nptl) + libpthread-sysdep_routines += libc-do-syscall ++libpthread-shared-only-routines += libc-do-syscall + endif + + ifeq ($(subdir),resource) +diff --git a/sysdeps/unix/sysv/linux/ia64/Makefile b/sysdeps/unix/sysv/linux/ia64/Makefile +index 1de62c5..4d6766d 100644 +--- a/sysdeps/unix/sysv/linux/ia64/Makefile ++++ b/sysdeps/unix/sysv/linux/ia64/Makefile +@@ -19,6 +19,7 @@ endif + + ifeq ($(subdir),rt) + librt-routines += rt-sysdep ++librt-shared-only-routines += rt-sysdep + endif + + ifeq ($(subdir),nptl) +diff --git a/sysdeps/unix/sysv/linux/microblaze/Makefile b/sysdeps/unix/sysv/linux/microblaze/Makefile +index 44a838f..d178bc6 100644 +--- a/sysdeps/unix/sysv/linux/microblaze/Makefile ++++ b/sysdeps/unix/sysv/linux/microblaze/Makefile +@@ -5,4 +5,5 @@ endif + ifeq ($(subdir),nptl) + # pull in __syscall_error routine + libpthread-routines += sysdep +-endif +\ No newline at end of file ++libpthread-shared-only-routines += sysdep ++endif +diff --git a/sysdeps/unix/sysv/linux/powerpc/Makefile b/sysdeps/unix/sysv/linux/powerpc/Makefile +index c89ed9e..2cfb46e 100644 +--- a/sysdeps/unix/sysv/linux/powerpc/Makefile ++++ b/sysdeps/unix/sysv/linux/powerpc/Makefile +@@ -8,6 +8,7 @@ abi-64-v2-condition := __WORDSIZE == 64 && _CALL_ELF == 2 + + ifeq ($(subdir),rt) + librt-routines += rt-sysdep ++librt-shared-only-routines += rt-sysdep + endif + + ifeq ($(subdir),stdlib) +@@ -34,4 +35,5 @@ ifeq ($(subdir),nptl) + libpthread-routines += sysdep + libpthread-sysdep_routines += elision-lock elision-unlock elision-timed \ + elision-trylock ++libpthread-shared-only-routines += sysdep + endif +diff --git a/sysdeps/unix/sysv/linux/s390/Makefile b/sysdeps/unix/sysv/linux/s390/Makefile +index 497ffd5..f8ed013 100644 +--- a/sysdeps/unix/sysv/linux/s390/Makefile ++++ b/sysdeps/unix/sysv/linux/s390/Makefile +@@ -6,6 +6,7 @@ abi-64-condition := __WORDSIZE == 64 + + ifeq ($(subdir),rt) + librt-routines += rt-sysdep ++librt-shared-only-routines += rt-sysdep + endif + + ifeq ($(subdir),stdlib) +diff --git a/sysdeps/unix/sysv/linux/sparc/Makefile b/sysdeps/unix/sysv/linux/sparc/Makefile +index e67aecf..a67d199 100644 +--- a/sysdeps/unix/sysv/linux/sparc/Makefile ++++ b/sysdeps/unix/sysv/linux/sparc/Makefile +@@ -6,6 +6,7 @@ abi-64-condition := __WORDSIZE == 64 + + ifeq ($(subdir),rt) + librt-routines += rt-sysdep ++librt-shared-only-routines += rt-sysdep + endif + + ifeq ($(subdir),sysvipc) +@@ -15,4 +16,5 @@ endif + ifeq ($(subdir),nptl) + # pull in __syscall_error routine + libpthread-routines += sysdep ++libpthread-shared-only-routines += sysdep + endif +diff --git a/sysdeps/unix/sysv/linux/tile/Makefile b/sysdeps/unix/sysv/linux/tile/Makefile +index 1c1cfff..43acea3 100644 +--- a/sysdeps/unix/sysv/linux/tile/Makefile ++++ b/sysdeps/unix/sysv/linux/tile/Makefile +@@ -25,4 +25,5 @@ endif + ifeq ($(subdir),nptl) + # pull in __syscall_error routine + libpthread-routines += sysdep ++libpthread-shared-only-routines += sysdep + endif +-- +2.7.4.GIT + + diff --git a/srcpkgs/glibc/patches/glibc-upstream-09.patch b/srcpkgs/glibc/patches/glibc-upstream-09.patch new file mode 100644 index 0000000000..6543a6fae8 --- /dev/null +++ b/srcpkgs/glibc/patches/glibc-upstream-09.patch @@ -0,0 +1,83 @@ +From 72450627ba8a173366265af550115de951f148c9 Mon Sep 17 00:00:00 2001 +From: Andreas Schwab +Date: Thu, 18 Aug 2016 11:38:28 +0200 +Subject: [PATCH 09] arm: mark __startcontext as .cantunwind (bug 20435) + +__startcontext marks the bottom of the call stack of the contexts created +by makecontext. + +(cherry picked from commit 9e2ff6c9cc54c0b4402b8d49e4abe7000fde7617) + +Also includes the NEWS update, cherry-picked from commits +056dd72af83f5459ce6d545a49dea6dba7d635dc and +4d047efdbc55b0d68947cde682e5363d16a66294. +--- + ChangeLog | 6 ++++++ + NEWS | 11 +++++++++++ + sysdeps/unix/sysv/linux/arm/setcontext.S | 7 +++++++ + 3 files changed, 24 insertions(+) + +diff --git a/ChangeLog b/ChangeLog +index 9dfd24d..734e34b 100644 +--- a/ChangeLog ++++ b/ChangeLog +@@ -1,3 +1,9 @@ ++2016-08-15 Andreas Schwab ++ ++ [BZ #20435] ++ * sysdeps/unix/sysv/linux/arm/setcontext.S (__startcontext): Mark ++ as .cantunwind. ++ + 2016-08-17 Florian Weimer + + [BZ #20452] +diff --git a/NEWS b/NEWS +index b0447e7..4a042db 100644 +--- a/NEWS ++++ b/NEWS +@@ -5,6 +5,17 @@ See the end for copying conditions. + Please send GNU C library bug reports via + using `glibc' in the "product" field. + ++Version 2.24.1 ++ ++Security related changes: ++ ++* On ARM EABI (32-bit), generating a backtrace for execution contexts which ++ have been created with makecontext could fail to terminate due to a ++ missing .cantunwind annotation. This has been observed to lead to a hang ++ (denial of service) in some Go applications compiled with gccgo. Reported ++ by Andreas Schwab. (CVE-2016-6323) ++ ++ + Version 2.24 + + * The minimum Linux kernel version that this version of the GNU C Library +diff --git a/sysdeps/unix/sysv/linux/arm/setcontext.S b/sysdeps/unix/sysv/linux/arm/setcontext.S +index 603e508..d1f168f 100644 +--- a/sysdeps/unix/sysv/linux/arm/setcontext.S ++++ b/sysdeps/unix/sysv/linux/arm/setcontext.S +@@ -86,12 +86,19 @@ weak_alias(__setcontext, setcontext) + + /* Called when a makecontext() context returns. Start the + context in R4 or fall through to exit(). */ ++ /* Unwind descriptors are looked up based on PC - 2, so we have to ++ make sure to mark the instruction preceding the __startcontext ++ label as .cantunwind. */ ++ .fnstart ++ .cantunwind ++ nop + ENTRY(__startcontext) + movs r0, r4 + bne PLTJMP(__setcontext) + + @ New context was 0 - exit + b PLTJMP(HIDDEN_JUMPTARGET(exit)) ++ .fnend + END(__startcontext) + + #ifdef PIC +-- +2.7.4.GIT + + diff --git a/srcpkgs/glibc/patches/glibc-upstream-10.patch b/srcpkgs/glibc/patches/glibc-upstream-10.patch new file mode 100644 index 0000000000..0fed5872d7 --- /dev/null +++ b/srcpkgs/glibc/patches/glibc-upstream-10.patch @@ -0,0 +1,150 @@ +From 58ef663c94e0bf21e88af6afce13b62d723cc415 Mon Sep 17 00:00:00 2001 +From: Florian Weimer +Date: Thu, 18 Aug 2016 11:15:42 +0200 +Subject: [PATCH 10] argp: Do not override GCC keywords with macros [BZ + #16907] + +glibc provides fallback definitions already. It is not necessary to +suppress warnings for unknown attributes because GCC does this +automatically for system headers. + +This commit does not sync with gnulib because gnulib has started to use +_GL_* macros in the header file, which are arguably in the gnulib +implementation space and not suitable for an installed glibc header +file. + +(cherry picked from commit 2c820533c61fed175390bc6058afbbe42d2edc37) +--- + ChangeLog | 8 ++++++++ + argp/argp-fmtstream.h | 19 ++++--------------- + argp/argp.h | 42 ++---------------------------------------- + 3 files changed, 14 insertions(+), 55 deletions(-) + +diff --git a/ChangeLog b/ChangeLog +index 734e34b..1351bfd 100644 +--- a/ChangeLog ++++ b/ChangeLog +@@ -1,3 +1,11 @@ ++2016-08-18 Florian Weimer ++ ++ [BZ #16907] ++ * argp/argp.h: Switch to __BEGIN_DECLS and __END_DECLS. ++ (__THROW, __NTH, __attribute__, __restrict): Remove definitions. ++ * argp/argp-fmtstream.h: Add __BEGIN_DECLS and __END_DECLS. ++ (__attribute__): Remove definition. ++ + 2016-08-15 Andreas Schwab + + [BZ #20435] +diff --git a/argp/argp-fmtstream.h b/argp/argp-fmtstream.h +index bdeaa54..e8c5797 100644 +--- a/argp/argp-fmtstream.h ++++ b/argp/argp-fmtstream.h +@@ -29,21 +29,6 @@ + #include + #include + +-#ifndef __attribute__ +-/* This feature is available in gcc versions 2.5 and later. */ +-# if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 5) || \ +- defined __STRICT_ANSI__ +-# define __attribute__(Spec) /* empty */ +-# endif +-/* The __-protected variants of `format' and `printf' attributes +- are accepted by gcc versions 2.6.4 (effectively 2.7) and later. */ +-# if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 7) || \ +- defined __STRICT_ANSI__ +-# define __format__ format +-# define __printf__ printf +-# endif +-#endif +- + #if defined (__GNU_LIBRARY__) && defined (HAVE_LINEWRAP_H) + /* line_wrap_stream is available, so use that. */ + #define ARGP_FMTSTREAM_USE_LINEWRAP +@@ -111,6 +96,8 @@ struct argp_fmtstream + + typedef struct argp_fmtstream *argp_fmtstream_t; + ++__BEGIN_DECLS ++ + /* Return an argp_fmtstream that outputs to STREAM, and which prefixes lines + written on it with LMARGIN spaces and limits them to RMARGIN columns + total. If WMARGIN >= 0, words that extend past RMARGIN are wrapped by +@@ -297,6 +284,8 @@ __argp_fmtstream_point (argp_fmtstream_t __fs) + + #endif /* __OPTIMIZE__ */ + ++__END_DECLS ++ + #endif /* ARGP_FMTSTREAM_USE_LINEWRAP */ + + #endif /* argp-fmtstream.h */ +diff --git a/argp/argp.h b/argp/argp.h +index e67bbef..7cb5a69 100644 +--- a/argp/argp.h ++++ b/argp/argp.h +@@ -28,48 +28,12 @@ + #define __need_error_t + #include + +-#ifndef __THROW +-# define __THROW +-#endif +-#ifndef __NTH +-# define __NTH(fct) fct __THROW +-#endif +- +-#ifndef __attribute__ +-/* This feature is available in gcc versions 2.5 and later. */ +-# if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 5) || \ +- defined __STRICT_ANSI__ +-# define __attribute__(Spec) /* empty */ +-# endif +-/* The __-protected variants of `format' and `printf' attributes +- are accepted by gcc versions 2.6.4 (effectively 2.7) and later. */ +-# if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 7) || \ +- defined __STRICT_ANSI__ +-# define __format__ format +-# define __printf__ printf +-# endif +-#endif +- +-/* GCC 2.95 and later have "__restrict"; C99 compilers have +- "restrict", and "configure" may have defined "restrict". */ +-#ifndef __restrict +-# if ! (2 < __GNUC__ || (2 == __GNUC__ && 95 <= __GNUC_MINOR__)) +-# if defined restrict || 199901L <= __STDC_VERSION__ +-# define __restrict restrict +-# else +-# define __restrict +-# endif +-# endif +-#endif +- + #ifndef __error_t_defined + typedef int error_t; + # define __error_t_defined + #endif + +-#ifdef __cplusplus +-extern "C" { +-#endif ++__BEGIN_DECLS + + /* A description of a particular option. A pointer to an array of + these is passed in the OPTIONS field of an argp structure. Each option +@@ -590,8 +554,6 @@ __NTH (__option_is_end (const struct argp_option *__opt)) + # endif + #endif /* Use extern inlines. */ + +-#ifdef __cplusplus +-} +-#endif ++__END_DECLS + + #endif /* argp.h */ +-- +2.7.4.GIT + + diff --git a/srcpkgs/glibc/patches/glibc-upstream-11.patch b/srcpkgs/glibc/patches/glibc-upstream-11.patch new file mode 100644 index 0000000000..d1f310248c --- /dev/null +++ b/srcpkgs/glibc/patches/glibc-upstream-11.patch @@ -0,0 +1,40 @@ +From 8c716c2e2f916bc18a3857129c181b96990a87d6 Mon Sep 17 00:00:00 2001 +From: Florian Weimer +Date: Wed, 17 Aug 2016 16:14:02 +0200 +Subject: [PATCH 11] nptl/tst-once5: Reduce time to expected failure + +(cherry picked from commit 1f645571d2db9008b3cd3d5acb9ff93357864283) +--- + ChangeLog | 5 +++++ + nptl/tst-once5.cc | 2 ++ + 2 files changed, 7 insertions(+) + +diff --git a/ChangeLog b/ChangeLog +index 1351bfd..3af5852 100644 +--- a/ChangeLog ++++ b/ChangeLog +@@ -1,3 +1,8 @@ ++2016-08-17 Florian Weimer ++ ++ Reduce time to expected nptl/tst-once5 failure. ++ * nptl/tst-once5.cc (TIMEOUT): Define. ++ + 2016-08-18 Florian Weimer + + [BZ #16907] +diff --git a/nptl/tst-once5.cc b/nptl/tst-once5.cc +index 978d827..513ac53 100644 +--- a/nptl/tst-once5.cc ++++ b/nptl/tst-once5.cc +@@ -75,5 +75,7 @@ do_test (void) + return result; + } + ++// The test currently hangs and is XFAILed. Reduce the timeout. ++#define TIMEOUT 1 + #define TEST_FUNCTION do_test () + #include "../test-skeleton.c" +-- +2.7.4.GIT + + diff --git a/srcpkgs/glibc/patches/glibc-upstream-12.patch b/srcpkgs/glibc/patches/glibc-upstream-12.patch new file mode 100644 index 0000000000..3858253d4b --- /dev/null +++ b/srcpkgs/glibc/patches/glibc-upstream-12.patch @@ -0,0 +1,41 @@ +From 537067248021228861ec88bb1feb8922e9818701 Mon Sep 17 00:00:00 2001 +From: Roland McGrath +Date: Fri, 2 Sep 2016 16:56:35 -0700 +Subject: [PATCH 12] NaCl: Fix compile error in clock function. + + * sysdeps/nacl/clock.c (clock): nacl_abi_clock_t -> nacl_irt_clock_t + +(cherry picked from commit 307c2c2dfff76330a29a3ab69a0177b118142145) +--- + ChangeLog | 4 ++++ + sysdeps/nacl/clock.c | 2 +- + 2 files changed, 5 insertions(+), 1 deletion(-) + +diff --git a/ChangeLog b/ChangeLog +index 3af5852..0127244 100644 +--- a/ChangeLog ++++ b/ChangeLog +@@ -1,3 +1,7 @@ ++2016-09-02 Roland McGrath ++ ++ * sysdeps/nacl/clock.c (clock): nacl_abi_clock_t -> nacl_irt_clock_t ++ + 2016-08-17 Florian Weimer + + Reduce time to expected nptl/tst-once5 failure. +diff --git a/sysdeps/nacl/clock.c b/sysdeps/nacl/clock.c +index 664ad65..b6fbcfd 100644 +--- a/sysdeps/nacl/clock.c ++++ b/sysdeps/nacl/clock.c +@@ -24,6 +24,6 @@ + clock_t + clock (void) + { +- nacl_abi_clock_t result; ++ nacl_irt_clock_t result; + return NACL_CALL (__nacl_irt_basic.clock (&result), result); + } +-- +2.7.4.GIT + + diff --git a/srcpkgs/glibc/patches/glibc-upstream-13.patch b/srcpkgs/glibc/patches/glibc-upstream-13.patch new file mode 100644 index 0000000000..c33a1f2711 --- /dev/null +++ b/srcpkgs/glibc/patches/glibc-upstream-13.patch @@ -0,0 +1,46 @@ +From d289049cf550b975487f94dfbd7af9d5a50b2233 Mon Sep 17 00:00:00 2001 +From: Roland McGrath +Date: Fri, 2 Sep 2016 16:57:59 -0700 +Subject: [PATCH 13] Fix generic wait3 after union wait_status removal. + + * sysdeps/posix/wait3.c: Don't treat STAT_LOC as a union, since it's + not any more. + +(cherry picked from commit 9a3d16ac152447567bfc822497c564a0630c79fe) +--- + ChangeLog | 5 +++++ + sysdeps/posix/wait3.c | 2 +- + 2 files changed, 6 insertions(+), 1 deletion(-) + +diff --git a/ChangeLog b/ChangeLog +index 0127244..2738295 100644 +--- a/ChangeLog ++++ b/ChangeLog +@@ -1,5 +1,10 @@ + 2016-09-02 Roland McGrath + ++ * sysdeps/posix/wait3.c: Don't treat STAT_LOC as a union, since it's ++ not any more. ++ ++2016-09-02 Roland McGrath ++ + * sysdeps/nacl/clock.c (clock): nacl_abi_clock_t -> nacl_irt_clock_t + + 2016-08-17 Florian Weimer +diff --git a/sysdeps/posix/wait3.c b/sysdeps/posix/wait3.c +index cf43d97..73722d2 100644 +--- a/sysdeps/posix/wait3.c ++++ b/sysdeps/posix/wait3.c +@@ -33,7 +33,7 @@ __wait3 (int *stat_loc, int options, struct rusage *usage) + __set_errno (ENOSYS); + return (pid_t) -1; + } +- return __waitpid (WAIT_ANY, stat_loc.__iptr, options); ++ return __waitpid (WAIT_ANY, stat_loc, options); + } + + weak_alias (__wait3, wait3) +-- +2.7.4.GIT + + diff --git a/srcpkgs/glibc/patches/glibc-upstream-14.patch b/srcpkgs/glibc/patches/glibc-upstream-14.patch new file mode 100644 index 0000000000..1ae76c393c --- /dev/null +++ b/srcpkgs/glibc/patches/glibc-upstream-14.patch @@ -0,0 +1,42 @@ +From a7a89294919144e58ae59d03f809ca3f8553ee77 Mon Sep 17 00:00:00 2001 +From: Roland McGrath +Date: Fri, 2 Sep 2016 16:58:42 -0700 +Subject: [PATCH 14] NaCl: Fix compile error for __dup after + libc_hidden_proto addition. + + * sysdeps/nacl/dup.c: Add libc_hidden_def. + +(cherry picked from commit 6b75ba1388bff6a81bad410d7318d385a043b3cb) +--- + ChangeLog | 4 ++++ + sysdeps/nacl/dup.c | 1 + + 2 files changed, 5 insertions(+) + +diff --git a/ChangeLog b/ChangeLog +index 2738295..1708d50 100644 +--- a/ChangeLog ++++ b/ChangeLog +@@ -1,5 +1,9 @@ + 2016-09-02 Roland McGrath + ++ * sysdeps/nacl/dup.c: Add libc_hidden_def. ++ ++2016-09-02 Roland McGrath ++ + * sysdeps/posix/wait3.c: Don't treat STAT_LOC as a union, since it's + not any more. + +diff --git a/sysdeps/nacl/dup.c b/sysdeps/nacl/dup.c +index 34a7cd4..cbce3f5 100644 +--- a/sysdeps/nacl/dup.c ++++ b/sysdeps/nacl/dup.c +@@ -27,4 +27,5 @@ __dup (int fd) + int result; + return NACL_CALL (__nacl_irt_fdio.dup (fd, &result), result); + } ++libc_hidden_def (__dup) + weak_alias (__dup, dup) +-- +2.7.4.GIT + + diff --git a/srcpkgs/glibc/patches/glibc-upstream-15.patch b/srcpkgs/glibc/patches/glibc-upstream-15.patch new file mode 100644 index 0000000000..e9ef1a9911 --- /dev/null +++ b/srcpkgs/glibc/patches/glibc-upstream-15.patch @@ -0,0 +1,36 @@ +From e591222f99d6c9d2a55d3dbec56340df876bdf9e Mon Sep 17 00:00:00 2001 +From: Roland McGrath +Date: Fri, 2 Sep 2016 17:19:31 -0700 +Subject: [PATCH 15] NaCl: Fix libc.abilist missing GLIBC_2.24 A. + + * sysdeps/arm/nacl/libc.abilist: Add GLIBC_2.24 A. +--- + ChangeLog | 2 ++ + sysdeps/arm/nacl/libc.abilist | 1 + + 2 files changed, 3 insertions(+) + +diff --git a/ChangeLog b/ChangeLog +index 1708d50..7521d86 100644 +--- a/ChangeLog ++++ b/ChangeLog +@@ -1,5 +1,7 @@ + 2016-09-02 Roland McGrath + ++ * sysdeps/arm/nacl/libc.abilist: Add GLIBC_2.24 A. ++ + * sysdeps/nacl/dup.c: Add libc_hidden_def. + + 2016-09-02 Roland McGrath +diff --git a/sysdeps/arm/nacl/libc.abilist b/sysdeps/arm/nacl/libc.abilist +index 2f7751d..dfa7198 100644 +--- a/sysdeps/arm/nacl/libc.abilist ++++ b/sysdeps/arm/nacl/libc.abilist +@@ -1840,4 +1840,5 @@ GLIBC_2.23 fts64_close F + GLIBC_2.23 fts64_open F + GLIBC_2.23 fts64_read F + GLIBC_2.23 fts64_set F ++GLIBC_2.24 GLIBC_2.24 A + GLIBC_2.24 quick_exit F +-- +2.7.4.GIT + diff --git a/srcpkgs/glibc/template b/srcpkgs/glibc/template index 2a6fa14552..1e39b93bfe 100644 --- a/srcpkgs/glibc/template +++ b/srcpkgs/glibc/template @@ -1,7 +1,7 @@ # Template file for 'glibc' pkgname=glibc version=2.24 -revision=1 +revision=2 bootstrap=yes short_desc="The GNU C library" maintainer="Juan RP " @@ -9,6 +9,7 @@ homepage="http://www.gnu.org/software/libc" license="GPL-2, LGPL-2.1, BSD" distfiles="${GNU_SITE}/glibc/glibc-${version}.tar.xz" checksum=99d4a3e8efd144d71488e478f62587578c0f4e1fa0b4eed47ee3d4975ebeb5d3 +patch_args="-Np1" # Do not strip these files, objcopy errors out. nostrip_files=" XBS5_ILP32_OFFBIG