mirror of
https://github.com/archlinuxarm/PKGBUILDs.git
synced 2025-01-27 23:44:04 +00:00
core/glibc to 2.15-10
This commit is contained in:
parent
e361828234
commit
d8c09d9892
6 changed files with 490 additions and 46 deletions
|
@ -15,7 +15,7 @@ noautobuild=1
|
|||
|
||||
pkgname=glibc
|
||||
pkgver=2.15
|
||||
pkgrel=7
|
||||
pkgrel=10
|
||||
_glibcdate=20111227
|
||||
pkgdesc="GNU C Library"
|
||||
arch=('i686' 'x86_64')
|
||||
|
@ -31,7 +31,8 @@ options=('!strip' '!distcc')
|
|||
install=glibc.install
|
||||
source=(ftp://ftp.archlinux.org/other/glibc/${pkgname}-${pkgver}_${_glibcdate}.tar.xz
|
||||
http://archlinuxarm.org/builder/src/glibc-ports-2.15.tar.bz2
|
||||
glibc-2.10-dont-build-timezone.patch
|
||||
glibc-2.15-do-not-install-timezone-files.patch
|
||||
glibc-2.15-do-not-install-timezone-files-2.patch
|
||||
glibc-__i686.patch
|
||||
glibc-2.12.2-ignore-origin-of-privileged-program.patch
|
||||
glibc-2.14-libdl-crash.patch
|
||||
|
@ -58,12 +59,14 @@ source=(ftp://ftp.archlinux.org/other/glibc/${pkgname}-${pkgver}_${_glibcdate}.t
|
|||
glibc-2.15-non-signalling-comparisons.patch
|
||||
glibc-2.15-rintf-rounding.patch
|
||||
glibc-2.15-nearbyintf-rounding.patch
|
||||
glibc-2.15-confstr-local-buffer-extent.patch
|
||||
nscd
|
||||
locale.gen.txt
|
||||
locale-gen)
|
||||
md5sums=('6ffdf5832192b92f98bdd125317c0dfc'
|
||||
'216bfdcce3689e037d38d8d724720187'
|
||||
'4dadb9203b69a3210d53514bb46f41c3'
|
||||
'349227bcedb19cea008fbcb2c7e1a582'
|
||||
'880439de2c608177ed1d749722d26820'
|
||||
'40cd342e21f71f5e49e32622b25acc52'
|
||||
'e60e33591c9ec1447e4cddadcbb9cf3a'
|
||||
'6970bcfeb3bf88913436d5112d16f588'
|
||||
|
@ -84,12 +87,13 @@ md5sums=('6ffdf5832192b92f98bdd125317c0dfc'
|
|||
'7a2998a04ebfcf8bf820540f490ce714'
|
||||
'0d77d20fa7fe2f87ad945cb9edb4d91d'
|
||||
'bfdefac3d705f41fbf84b1de1dc945af'
|
||||
'dded423e264cdd178500f3e8ad62fe66'
|
||||
'de9399a35a9c14f793c66f1230674d67'
|
||||
'340deaa582a95ddde86edb624c3bfea0'
|
||||
'6bbac50e6ff82187654e6a0a7bd849e7'
|
||||
'c483504cf404ed0b44480af627813a97'
|
||||
'1419d61fd1dbc6cdc48bb59da86fa66f'
|
||||
'7ff501435078b1a2622124fbeaafc921'
|
||||
'4ed0bb09c3851cd9cb5e39c946a8a334'
|
||||
'b587ee3a70c9b3713099295609afde49'
|
||||
'07ac979b6ab5eeb778d55f041529d623'
|
||||
'476e9113489f93b348b21e144b6a8fcf')
|
||||
|
@ -110,11 +114,13 @@ build() {
|
|||
ln -s ${srcdir}/${pkgname}-ports-${pkgver} ./ports
|
||||
|
||||
# timezone data is in separate package (tzdata)
|
||||
patch -p1 -i ${srcdir}/glibc-2.10-dont-build-timezone.patch
|
||||
# http://sourceware.org/git/?p=glibc.git;a=commit;h=482ff4da
|
||||
patch -p1 -i ${srcdir}/glibc-2.15-do-not-install-timezone-files.patch
|
||||
# http://sourceware.org/git/?p=glibc.git;a=commit;h=a458e7fe
|
||||
patch -p1 -i ${srcdir}/glibc-2.15-do-not-install-timezone-files-2.patch
|
||||
|
||||
# undefine __i686 for gcc <= 4.6
|
||||
# http://sourceware.org/ml/libc-alpha/2009-07/msg00072.html
|
||||
# fix in http://sourceware.org/git/?p=glibc.git;a=commit;h=d4a54ac6 requires additional backporting...
|
||||
# undefine __i686
|
||||
# http://sourceware.org/glibc/wiki/Release/2.15#Build_Failures
|
||||
patch -p1 -i ${srcdir}/glibc-__i686.patch
|
||||
|
||||
# http://www.exploit-db.com/exploits/15274/
|
||||
|
@ -127,9 +133,9 @@ build() {
|
|||
|
||||
# re-export RPC interface until libtirpc is ready as a replacement
|
||||
# http://sourceware.org/git/?p=glibc.git;a=commitdiff;h=acee4873 (fedora branch)
|
||||
patch -Np1 -i ${srcdir}/glibc-2.14-reexport-rpc-interface.patch
|
||||
patch -p1 -i ${srcdir}/glibc-2.14-reexport-rpc-interface.patch
|
||||
# http://sourceware.org/git/?p=glibc.git;a=commitdiff;h=bdd816a3 (fedora branch)
|
||||
patch -Np1 -i ${srcdir}/glibc-2.14-reinstall-nis-rpc-headers.patch
|
||||
patch -p1 -i ${srcdir}/glibc-2.14-reinstall-nis-rpc-headers.patch
|
||||
|
||||
# fix res_query assertion
|
||||
# http://sourceware.org/bugzilla/show_bug.cgi?id=13013
|
||||
|
@ -137,25 +143,25 @@ build() {
|
|||
|
||||
# fix up regcomp/regexec
|
||||
# http://sourceware.org/git/?p=glibc.git;a=commit;h=2ba92745
|
||||
patch -Np1 -i ${srcdir}/glibc-2.15-regex.patch
|
||||
patch -p1 -i ${srcdir}/glibc-2.15-regex.patch
|
||||
|
||||
# propriety nvidia crash - https://bugzilla.redhat.com/show_bug.cgi?id=737223
|
||||
# http://sourceware.org/git/?p=glibc.git;a=commitdiff;h=0c95ab64 (fedora branch)
|
||||
patch -Np1 -i ${srcdir}/glibc-2.15-lddebug-scopes.patch
|
||||
patch -p1 -i ${srcdir}/glibc-2.15-lddebug-scopes.patch
|
||||
|
||||
# revert commit c5a0802a - causes various hangs
|
||||
# https://bugzilla.redhat.com/show_bug.cgi?id=769421
|
||||
# Note: fedora may have actual fix (not submitted upstream yet...)
|
||||
# http://pkgs.fedoraproject.org/gitweb/?p=glibc.git;a=blob_plain;f=glibc-rh552960-2.patch
|
||||
patch -Np1 -i ${srcdir}/glibc-2.15-revert-c5a0802a.patch
|
||||
patch -p1 -i ${srcdir}/glibc-2.15-revert-c5a0802a.patch
|
||||
|
||||
# fix realloc usage in vfscanf
|
||||
# http://sourceware.org/git/?p=glibc.git;a=commit;h=20b38e03
|
||||
patch -Np1 -i ${srcdir}/glibc-2.15-scanf.patch
|
||||
patch -p1 -i ${srcdir}/glibc-2.15-scanf.patch
|
||||
|
||||
# fix ifunc relocations
|
||||
# http://sourceware.org/git/?p=glibc.git;a=commit;h=6ee65ed6
|
||||
patch -Np1 -i ${srcdir}/glibc-2.15-ifunc.patch
|
||||
patch -p1 -i ${srcdir}/glibc-2.15-ifunc.patch
|
||||
|
||||
# fix AVX detection
|
||||
# http://sourceware.org/git/?p=glibc.git;a=commit;h=afc5ed09
|
||||
|
@ -196,8 +202,7 @@ build() {
|
|||
patch -p1 -i ${srcdir}/glibc-2.15-feraiseexcept-plt.patch
|
||||
|
||||
# vfprintf nargs overflow - CVE-2012-0864
|
||||
# http://sourceware.org/bugzilla/show_bug.cgi?id=13656
|
||||
# http://sourceware.org/ml/libc-alpha/2012-02/msg00328.html
|
||||
# http://sourceware.org/git/?p=glibc.git;a=commit;h=7c1f4834
|
||||
patch -p1 -i ${srcdir}/glibc-2.15-vfprintf-nargs.patch
|
||||
|
||||
# avoid out ouf bounds read in __libc_res_nquerydomain
|
||||
|
@ -220,6 +225,11 @@ build() {
|
|||
# http://sourceware.org/git/?p=glibc.git;a=commit;h=6cbeae47
|
||||
patch -p1 -i ${srcdir}/glibc-2.15-nearbyintf-rounding.patch
|
||||
|
||||
# fix varaible scope issue in confstr
|
||||
# http://sourceware.org/git/?p=glibc.git;a=commit;h=ac4c54f0
|
||||
# http://sourceware.org/git/?p=glibc.git;a=commit;h=d6a403f9
|
||||
patch -p1 -i ${srcdir}/glibc-2.15-confstr-local-buffer-extent.patch
|
||||
|
||||
install -dm755 ${pkgdir}/etc
|
||||
touch ${pkgdir}/etc/ld.so.conf
|
||||
|
||||
|
|
|
@ -1,13 +0,0 @@
|
|||
timezone data has been split into the package sys-libs/timezone-data
|
||||
|
||||
--- glibc-2.4/Makeconfig
|
||||
+++ glibc-2.4/Makeconfig
|
||||
@@ -931,7 +931,7 @@
|
||||
stdlib stdio-common libio malloc string wcsmbs time dirent \
|
||||
grp pwd posix io termios resource misc socket sysvipc gmon \
|
||||
gnulib iconv iconvdata wctype manual shadow gshadow po argp \
|
||||
- crypt nss localedata timezone rt conform debug \
|
||||
+ crypt nss localedata rt conform debug \
|
||||
$(add-on-subdirs) $(dlfcn) $(binfmt-subdir)
|
||||
|
||||
ifndef avoid-generated
|
297
core/glibc/glibc-2.15-confstr-local-buffer-extent.patch
Normal file
297
core/glibc/glibc-2.15-confstr-local-buffer-extent.patch
Normal file
|
@ -0,0 +1,297 @@
|
|||
diff --git a/posix/confstr.c b/posix/confstr.c
|
||||
index 3c9566d..cad6561 100644
|
||||
--- a/posix/confstr.c
|
||||
+++ b/posix/confstr.c
|
||||
@@ -35,6 +34,10 @@ confstr (name, buf, len)
|
||||
const char *string = "";
|
||||
size_t string_len = 1;
|
||||
|
||||
+ /* Note that this buffer must be large enough for the longest strings
|
||||
+ used below. */
|
||||
+ char restenvs[4 * sizeof "POSIX_V7_LPBIG_OFFBIG"];
|
||||
+
|
||||
switch (name)
|
||||
{
|
||||
case _CS_PATH:
|
||||
@@ -53,59 +56,55 @@ confstr (name, buf, len)
|
||||
wint_t types are no greater than the width of type long.
|
||||
|
||||
Currently this means all environment which the system allows. */
|
||||
- {
|
||||
- char restenvs[4 * sizeof "POSIX_V7_LPBIG_OFFBIG"];
|
||||
-
|
||||
- string_len = 0;
|
||||
+ string_len = 0;
|
||||
#ifndef _POSIX_V7_ILP32_OFF32
|
||||
- if (__sysconf (_SC_V7_ILP32_OFF32) > 0)
|
||||
+ if (__sysconf (_SC_V7_ILP32_OFF32) > 0)
|
||||
#endif
|
||||
#if !defined _POSIX_V7_ILP32_OFF32 || _POSIX_V7_ILP32_OFF32 > 0
|
||||
- {
|
||||
- memcpy (restenvs + string_len, "POSIX_V7_ILP32_OFF32",
|
||||
- sizeof "POSIX_V7_ILP32_OFF32" - 1);
|
||||
- string_len += sizeof "POSIX_V7_ILP32_OFF32" - 1;
|
||||
- }
|
||||
+ {
|
||||
+ memcpy (restenvs + string_len, "POSIX_V7_ILP32_OFF32",
|
||||
+ sizeof "POSIX_V7_ILP32_OFF32" - 1);
|
||||
+ string_len += sizeof "POSIX_V7_ILP32_OFF32" - 1;
|
||||
+ }
|
||||
#endif
|
||||
#ifndef _POSIX_V7_ILP32_OFFBIG
|
||||
- if (__sysconf (_SC_V7_ILP32_OFFBIG) > 0)
|
||||
+ if (__sysconf (_SC_V7_ILP32_OFFBIG) > 0)
|
||||
#endif
|
||||
#if !defined _POSIX_V7_ILP32_OFFBIG || _POSIX_V7_ILP32_OFFBIG > 0
|
||||
- {
|
||||
- if (string_len)
|
||||
- restenvs[string_len++] = '\n';
|
||||
- memcpy (restenvs + string_len, "POSIX_V7_ILP32_OFFBIG",
|
||||
- sizeof "POSIX_V7_ILP32_OFFBIG" - 1);
|
||||
- string_len += sizeof "POSIX_V7_ILP32_OFFBIG" - 1;
|
||||
- }
|
||||
+ {
|
||||
+ if (string_len)
|
||||
+ restenvs[string_len++] = '\n';
|
||||
+ memcpy (restenvs + string_len, "POSIX_V7_ILP32_OFFBIG",
|
||||
+ sizeof "POSIX_V7_ILP32_OFFBIG" - 1);
|
||||
+ string_len += sizeof "POSIX_V7_ILP32_OFFBIG" - 1;
|
||||
+ }
|
||||
#endif
|
||||
#ifndef _POSIX_V7_LP64_OFF64
|
||||
- if (__sysconf (_SC_V7_LP64_OFF64) > 0)
|
||||
+ if (__sysconf (_SC_V7_LP64_OFF64) > 0)
|
||||
#endif
|
||||
#if !defined _POSIX_V7_LP64_OFF64 || _POSIX_V7_LP64_OFF64 > 0
|
||||
- {
|
||||
- if (string_len)
|
||||
- restenvs[string_len++] = '\n';
|
||||
- memcpy (restenvs + string_len, "POSIX_V7_LP64_OFF64",
|
||||
- sizeof "POSIX_V7_LP64_OFF64" - 1);
|
||||
- string_len += sizeof "POSIX_V7_LP64_OFF64" - 1;
|
||||
- }
|
||||
+ {
|
||||
+ if (string_len)
|
||||
+ restenvs[string_len++] = '\n';
|
||||
+ memcpy (restenvs + string_len, "POSIX_V7_LP64_OFF64",
|
||||
+ sizeof "POSIX_V7_LP64_OFF64" - 1);
|
||||
+ string_len += sizeof "POSIX_V7_LP64_OFF64" - 1;
|
||||
+ }
|
||||
#endif
|
||||
#ifndef _POSIX_V7_LPBIG_OFFBIG
|
||||
- if (__sysconf (_SC_V7_LPBIG_OFFBIG) > 0)
|
||||
+ if (__sysconf (_SC_V7_LPBIG_OFFBIG) > 0)
|
||||
#endif
|
||||
#if !defined _POSIX_V7_LPBIG_OFFBIG || _POSIX_V7_LPBIG_OFFBIG > 0
|
||||
- {
|
||||
- if (string_len)
|
||||
- restenvs[string_len++] = '\n';
|
||||
- memcpy (restenvs + string_len, "POSIX_V7_LPBIG_OFFBIG",
|
||||
- sizeof "POSIX_V7_LPBIG_OFFBIG" - 1);
|
||||
- string_len += sizeof "POSIX_V7_LPBIG_OFFBIG" - 1;
|
||||
- }
|
||||
-#endif
|
||||
- restenvs[string_len++] = '\0';
|
||||
- string = restenvs;
|
||||
- }
|
||||
+ {
|
||||
+ if (string_len)
|
||||
+ restenvs[string_len++] = '\n';
|
||||
+ memcpy (restenvs + string_len, "POSIX_V7_LPBIG_OFFBIG",
|
||||
+ sizeof "POSIX_V7_LPBIG_OFFBIG" - 1);
|
||||
+ string_len += sizeof "POSIX_V7_LPBIG_OFFBIG" - 1;
|
||||
+ }
|
||||
+#endif
|
||||
+ restenvs[string_len++] = '\0';
|
||||
+ string = restenvs;
|
||||
break;
|
||||
|
||||
case _CS_V6_WIDTH_RESTRICTED_ENVS:
|
||||
@@ -116,59 +115,55 @@ confstr (name, buf, len)
|
||||
wint_t types are no greater than the width of type long.
|
||||
|
||||
Currently this means all environment which the system allows. */
|
||||
- {
|
||||
- char restenvs[4 * sizeof "POSIX_V6_LPBIG_OFFBIG"];
|
||||
-
|
||||
- string_len = 0;
|
||||
+ string_len = 0;
|
||||
#ifndef _POSIX_V6_ILP32_OFF32
|
||||
- if (__sysconf (_SC_V6_ILP32_OFF32) > 0)
|
||||
+ if (__sysconf (_SC_V6_ILP32_OFF32) > 0)
|
||||
#endif
|
||||
#if !defined _POSIX_V6_ILP32_OFF32 || _POSIX_V6_ILP32_OFF32 > 0
|
||||
- {
|
||||
- memcpy (restenvs + string_len, "POSIX_V6_ILP32_OFF32",
|
||||
- sizeof "POSIX_V6_ILP32_OFF32" - 1);
|
||||
- string_len += sizeof "POSIX_V6_ILP32_OFF32" - 1;
|
||||
- }
|
||||
+ {
|
||||
+ memcpy (restenvs + string_len, "POSIX_V6_ILP32_OFF32",
|
||||
+ sizeof "POSIX_V6_ILP32_OFF32" - 1);
|
||||
+ string_len += sizeof "POSIX_V6_ILP32_OFF32" - 1;
|
||||
+ }
|
||||
#endif
|
||||
#ifndef _POSIX_V6_ILP32_OFFBIG
|
||||
- if (__sysconf (_SC_V6_ILP32_OFFBIG) > 0)
|
||||
+ if (__sysconf (_SC_V6_ILP32_OFFBIG) > 0)
|
||||
#endif
|
||||
#if !defined _POSIX_V6_ILP32_OFFBIG || _POSIX_V6_ILP32_OFFBIG > 0
|
||||
- {
|
||||
- if (string_len)
|
||||
- restenvs[string_len++] = '\n';
|
||||
- memcpy (restenvs + string_len, "POSIX_V6_ILP32_OFFBIG",
|
||||
- sizeof "POSIX_V6_ILP32_OFFBIG" - 1);
|
||||
- string_len += sizeof "POSIX_V6_ILP32_OFFBIG" - 1;
|
||||
- }
|
||||
+ {
|
||||
+ if (string_len)
|
||||
+ restenvs[string_len++] = '\n';
|
||||
+ memcpy (restenvs + string_len, "POSIX_V6_ILP32_OFFBIG",
|
||||
+ sizeof "POSIX_V6_ILP32_OFFBIG" - 1);
|
||||
+ string_len += sizeof "POSIX_V6_ILP32_OFFBIG" - 1;
|
||||
+ }
|
||||
#endif
|
||||
#ifndef _POSIX_V6_LP64_OFF64
|
||||
- if (__sysconf (_SC_V6_LP64_OFF64) > 0)
|
||||
+ if (__sysconf (_SC_V6_LP64_OFF64) > 0)
|
||||
#endif
|
||||
#if !defined _POSIX_V6_LP64_OFF64 || _POSIX_V6_LP64_OFF64 > 0
|
||||
- {
|
||||
- if (string_len)
|
||||
- restenvs[string_len++] = '\n';
|
||||
- memcpy (restenvs + string_len, "POSIX_V6_LP64_OFF64",
|
||||
- sizeof "POSIX_V6_LP64_OFF64" - 1);
|
||||
- string_len += sizeof "POSIX_V6_LP64_OFF64" - 1;
|
||||
- }
|
||||
+ {
|
||||
+ if (string_len)
|
||||
+ restenvs[string_len++] = '\n';
|
||||
+ memcpy (restenvs + string_len, "POSIX_V6_LP64_OFF64",
|
||||
+ sizeof "POSIX_V6_LP64_OFF64" - 1);
|
||||
+ string_len += sizeof "POSIX_V6_LP64_OFF64" - 1;
|
||||
+ }
|
||||
#endif
|
||||
#ifndef _POSIX_V6_LPBIG_OFFBIG
|
||||
- if (__sysconf (_SC_V6_LPBIG_OFFBIG) > 0)
|
||||
+ if (__sysconf (_SC_V6_LPBIG_OFFBIG) > 0)
|
||||
#endif
|
||||
#if !defined _POSIX_V6_LPBIG_OFFBIG || _POSIX_V6_LPBIG_OFFBIG > 0
|
||||
- {
|
||||
- if (string_len)
|
||||
- restenvs[string_len++] = '\n';
|
||||
- memcpy (restenvs + string_len, "POSIX_V6_LPBIG_OFFBIG",
|
||||
- sizeof "POSIX_V6_LPBIG_OFFBIG" - 1);
|
||||
- string_len += sizeof "POSIX_V6_LPBIG_OFFBIG" - 1;
|
||||
- }
|
||||
-#endif
|
||||
- restenvs[string_len++] = '\0';
|
||||
- string = restenvs;
|
||||
- }
|
||||
+ {
|
||||
+ if (string_len)
|
||||
+ restenvs[string_len++] = '\n';
|
||||
+ memcpy (restenvs + string_len, "POSIX_V6_LPBIG_OFFBIG",
|
||||
+ sizeof "POSIX_V6_LPBIG_OFFBIG" - 1);
|
||||
+ string_len += sizeof "POSIX_V6_LPBIG_OFFBIG" - 1;
|
||||
+ }
|
||||
+#endif
|
||||
+ restenvs[string_len++] = '\0';
|
||||
+ string = restenvs;
|
||||
break;
|
||||
|
||||
case _CS_V5_WIDTH_RESTRICTED_ENVS:
|
||||
@@ -179,59 +174,55 @@ confstr (name, buf, len)
|
||||
wint_t types are no greater than the width of type long.
|
||||
|
||||
Currently this means all environment which the system allows. */
|
||||
- {
|
||||
- char restenvs[4 * sizeof "XBS5_LPBIG_OFFBIG"];
|
||||
-
|
||||
- string_len = 0;
|
||||
+ string_len = 0;
|
||||
#ifndef _XBS5_ILP32_OFF32
|
||||
- if (__sysconf (_SC_XBS5_ILP32_OFF32) > 0)
|
||||
+ if (__sysconf (_SC_XBS5_ILP32_OFF32) > 0)
|
||||
#endif
|
||||
#if !defined _XBS5_ILP32_OFF32 || _XBS5_ILP32_OFF32 > 0
|
||||
- {
|
||||
- memcpy (restenvs + string_len, "XBS5_ILP32_OFF32",
|
||||
- sizeof "XBS5_ILP32_OFF32" - 1);
|
||||
- string_len += sizeof "XBS5_ILP32_OFF32" - 1;
|
||||
- }
|
||||
+ {
|
||||
+ memcpy (restenvs + string_len, "XBS5_ILP32_OFF32",
|
||||
+ sizeof "XBS5_ILP32_OFF32" - 1);
|
||||
+ string_len += sizeof "XBS5_ILP32_OFF32" - 1;
|
||||
+ }
|
||||
#endif
|
||||
#ifndef _XBS5_ILP32_OFFBIG
|
||||
- if (__sysconf (_SC_XBS5_ILP32_OFFBIG) > 0)
|
||||
+ if (__sysconf (_SC_XBS5_ILP32_OFFBIG) > 0)
|
||||
#endif
|
||||
#if !defined _XBS5_ILP32_OFFBIG || _XBS5_ILP32_OFFBIG > 0
|
||||
- {
|
||||
- if (string_len)
|
||||
- restenvs[string_len++] = '\n';
|
||||
- memcpy (restenvs + string_len, "XBS5_ILP32_OFFBIG",
|
||||
- sizeof "XBS5_ILP32_OFFBIG" - 1);
|
||||
- string_len += sizeof "XBS5_ILP32_OFFBIG" - 1;
|
||||
- }
|
||||
+ {
|
||||
+ if (string_len)
|
||||
+ restenvs[string_len++] = '\n';
|
||||
+ memcpy (restenvs + string_len, "XBS5_ILP32_OFFBIG",
|
||||
+ sizeof "XBS5_ILP32_OFFBIG" - 1);
|
||||
+ string_len += sizeof "XBS5_ILP32_OFFBIG" - 1;
|
||||
+ }
|
||||
#endif
|
||||
#ifndef _XBS5_LP64_OFF64
|
||||
- if (__sysconf (_SC_XBS5_LP64_OFF64) > 0)
|
||||
+ if (__sysconf (_SC_XBS5_LP64_OFF64) > 0)
|
||||
#endif
|
||||
#if !defined _XBS5_LP64_OFF64 || _XBS5_LP64_OFF64 > 0
|
||||
- {
|
||||
- if (string_len)
|
||||
- restenvs[string_len++] = '\n';
|
||||
- memcpy (restenvs + string_len, "XBS5_LP64_OFF64",
|
||||
- sizeof "XBS5_LP64_OFF64" - 1);
|
||||
- string_len += sizeof "XBS5_LP64_OFF64" - 1;
|
||||
- }
|
||||
+ {
|
||||
+ if (string_len)
|
||||
+ restenvs[string_len++] = '\n';
|
||||
+ memcpy (restenvs + string_len, "XBS5_LP64_OFF64",
|
||||
+ sizeof "XBS5_LP64_OFF64" - 1);
|
||||
+ string_len += sizeof "XBS5_LP64_OFF64" - 1;
|
||||
+ }
|
||||
#endif
|
||||
#ifndef _XBS5_LPBIG_OFFBIG
|
||||
- if (__sysconf (_SC_XBS5_LPBIG_OFFBIG) > 0)
|
||||
+ if (__sysconf (_SC_XBS5_LPBIG_OFFBIG) > 0)
|
||||
#endif
|
||||
#if !defined _XBS5_LPBIG_OFFBIG || _XBS5_LPBIG_OFFBIG > 0
|
||||
- {
|
||||
- if (string_len)
|
||||
- restenvs[string_len++] = '\n';
|
||||
- memcpy (restenvs + string_len, "XBS5_LPBIG_OFFBIG",
|
||||
- sizeof "XBS5_LPBIG_OFFBIG" - 1);
|
||||
- string_len += sizeof "XBS5_LPBIG_OFFBIG" - 1;
|
||||
- }
|
||||
-#endif
|
||||
- restenvs[string_len++] = '\0';
|
||||
- string = restenvs;
|
||||
- }
|
||||
+ {
|
||||
+ if (string_len)
|
||||
+ restenvs[string_len++] = '\n';
|
||||
+ memcpy (restenvs + string_len, "XBS5_LPBIG_OFFBIG",
|
||||
+ sizeof "XBS5_LPBIG_OFFBIG" - 1);
|
||||
+ string_len += sizeof "XBS5_LPBIG_OFFBIG" - 1;
|
||||
+ }
|
||||
+#endif
|
||||
+ restenvs[string_len++] = '\0';
|
||||
+ string = restenvs;
|
||||
break;
|
||||
|
||||
case _CS_XBS5_ILP32_OFF32_CFLAGS:
|
20
core/glibc/glibc-2.15-do-not-install-timezone-files-2.patch
Normal file
20
core/glibc/glibc-2.15-do-not-install-timezone-files-2.patch
Normal file
|
@ -0,0 +1,20 @@
|
|||
diff --git a/timezone/Makefile b/timezone/Makefile
|
||||
index 00bfba6..9e55a6a 100644
|
||||
--- a/timezone/Makefile
|
||||
+++ b/timezone/Makefile
|
||||
@@ -45,7 +45,6 @@ include ../Makeconfig # Get objpfx defined so we can use it below.
|
||||
CPPFLAGS-zic = -DNOT_IN_libc
|
||||
|
||||
ifeq ($(have-ksh),yes)
|
||||
-install-others += $(inst_zonedir)/iso3166.tab $(inst_zonedir)/zone.tab
|
||||
install-bin-script = tzselect
|
||||
generated += tzselect
|
||||
endif
|
||||
@@ -111,7 +110,3 @@ $(objpfx)tzselect: tzselect.ksh $(common-objpfx)config.make
|
||||
-e 's%@TZDIR@%$(zonedir)%g' < $< > $@.new
|
||||
chmod 555 $@.new
|
||||
mv -f $@.new $@
|
||||
-
|
||||
-$(addprefix $(inst_zonedir)/,iso3166.tab zone.tab): \
|
||||
- $(inst_zonedir)/%: % $(+force)
|
||||
- $(do-install)
|
124
core/glibc/glibc-2.15-do-not-install-timezone-files.patch
Normal file
124
core/glibc/glibc-2.15-do-not-install-timezone-files.patch
Normal file
|
@ -0,0 +1,124 @@
|
|||
diff --git a/timezone/Makefile b/timezone/Makefile
|
||||
index e8fb716..d5ea538 100644
|
||||
--- a/timezone/Makefile
|
||||
+++ b/timezone/Makefile
|
||||
@@ -1,4 +1,4 @@
|
||||
-# Copyright (C) 1998,1999,2000,2002,2005,2007 Free Software Foundation, Inc.
|
||||
+# Copyright (C) 1998-2000,2002,2005,2007,2012 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
|
||||
@@ -49,33 +49,6 @@ include ../Makeconfig # Get objpfx defined so we can use it below.
|
||||
|
||||
CPPFLAGS-zic = -DNOT_IN_libc
|
||||
|
||||
-# z.* use this variable.
|
||||
-define nl
|
||||
-
|
||||
-
|
||||
-endef
|
||||
-ifndef avoid-generated
|
||||
-ifndef inhibit_timezone_rules
|
||||
--include $(addprefix $(objpfx)z.,$(tzfiles))
|
||||
-endif
|
||||
-endif
|
||||
-
|
||||
-# Make these absolute file names.
|
||||
-installed-localtime-file := $(firstword $(filter /%,$(inst_localtime-file)) \
|
||||
- $(addprefix $(inst_zonedir)/, \
|
||||
- $(localtime-file)))
|
||||
-installed-posixrules-file := $(firstword $(filter /%,$(posixrules-file)) \
|
||||
- $(addprefix $(inst_zonedir)/, \
|
||||
- $(posixrules-file)))
|
||||
-
|
||||
-ifeq ($(cross-compiling),no)
|
||||
-# Don't try to install the zoneinfo files since we can't run zic.
|
||||
-install-others = $(addprefix $(inst_zonedir)/,$(zonenames) \
|
||||
- $(zonenames:%=posix/%) \
|
||||
- $(zonenames:%=right/%)) \
|
||||
- $(installed-localtime-file) $(installed-posixrules-file)
|
||||
-endif
|
||||
-
|
||||
ifeq ($(have-ksh),yes)
|
||||
install-others += $(inst_zonedir)/iso3166.tab $(inst_zonedir)/zone.tab
|
||||
install-bin-script = tzselect
|
||||
@@ -85,79 +58,6 @@ endif
|
||||
include ../Rules
|
||||
|
||||
|
||||
-$(tzfiles:%=$(objpfx)z.%): $(objpfx)z.%: % Makefile
|
||||
-# Kludge alert: we use an implicit rule (in what we are generating here)
|
||||
-# because that is the only way to tell Make that the one command builds all
|
||||
-# the files.
|
||||
-# The extra kludge for the $(tzlinks) files is necessary since running zic
|
||||
-# this file requires all other files to exist. Blech!
|
||||
- $(make-target-directory)
|
||||
- (echo 'define $*-zones' ;\
|
||||
- $(AWK) '$$1 == "Zone" { print $$2 } $$1 == "Link" { print $$3 }' $^ ;\
|
||||
- echo 'endef' ;\
|
||||
- echo '$*-zones := $$(subst $$(nl), ,$$($*-zones))' ;\
|
||||
- echo 'ifdef $*-zones' ;\
|
||||
- if test x$(findstring $*, $(tzlinks)) != x; then \
|
||||
- echo '$$(addprefix $$(inst_zonedir)/right/,$$($*-zones)): \';\
|
||||
- echo '$$(foreach t,$$(tzbases),$$(addprefix $$(inst_zonedir)/right/,$$($$t-zones)))' ;\
|
||||
- echo '$$(addprefix $$(inst_zonedir)/posix/,$$($*-zones)): \';\
|
||||
- echo '$$(foreach t,$$(tzbases),$$(addprefix $$(inst_zonedir)/posix/,$$($$t-zones)))' ;\
|
||||
- echo '$$(addprefix $$(inst_zonedir)/,$$($*-zones)): \' ;\
|
||||
- echo '$$(foreach t,$$(tzbases),$$(addprefix $$(inst_zonedir)/,$$($$t-zones)))' ;\
|
||||
- fi ;\
|
||||
- echo '$$(addprefix $$(dir $$(inst_zonedir))zone%/right/,$$($*-zones)): \' ;\
|
||||
- echo '$< $$(objpfx)zic leapseconds yearistype' ;\
|
||||
- echo ' $$(tzcompile)' ;\
|
||||
- echo '$$(addprefix $$(dir $$(inst_zonedir))zone%/posix/,$$($*-zones)): \' ;\
|
||||
- echo '$< $$(objpfx)zic /dev/null yearistype' ;\
|
||||
- echo ' $$(tzcompile)' ;\
|
||||
- echo '$$(addprefix $$(dir $$(inst_zonedir))zone%/,$$($*-zones)): \' ;\
|
||||
- echo '$< $$(objpfx)zic $$(leapseconds) yearistype' ;\
|
||||
- echo ' $$(tzcompile)' ;\
|
||||
- echo 'endif' ;\
|
||||
- echo 'zonenames := $$(zonenames) $$($*-zones)' ;\
|
||||
- ) > $@.new
|
||||
- mv $@.new $@
|
||||
-
|
||||
-.PHONY: echo-zonenames
|
||||
-echo-zonenames:
|
||||
- @echo 'Known zones: $(zonenames)'
|
||||
-
|
||||
-
|
||||
-# We have to use `-d $(inst_zonedir)' to explictly tell zic where to
|
||||
-# place the output files although $(zonedir) is compiled in. But the
|
||||
-# user might have set $(install_root) on the command line of `make install'.
|
||||
-zic-cmd = $(built-program-cmd) -d $(inst_zonedir)
|
||||
-tzcompile = $(zic-cmd)$(target-zone-flavor) -L $(word 3,$^) \
|
||||
- -y $(dir $(word 4,$^))$(notdir $(word 4,$^)) $<
|
||||
-
|
||||
-# The source files specify the zone names relative to the -d directory,
|
||||
-# so for the posix/ and right/ flavors we need to pass -d $(inst_zonedir)/posix
|
||||
-# and the like. This magic extracts /posix or /right if it's the first
|
||||
-# component after $(inst_zonedir) in the target name $@.
|
||||
-target-zone-flavor = $(filter /posix /right, \
|
||||
- /$(firstword $(subst /, , \
|
||||
- $(patsubst $(inst_zonedir)/%,%,$@))))
|
||||
-
|
||||
-ifdef localtime
|
||||
-$(installed-localtime-file): $(inst_zonedir)/$(localtime) $(objpfx)zic \
|
||||
- $(+force)
|
||||
- $(make-target-directory)
|
||||
- if test -r $@; then \
|
||||
- echo Site timezone NOT reset to Factory.; \
|
||||
- else \
|
||||
- rm -f $@T; \
|
||||
- $(SHELL) $(..)scripts/rellns-sh $< $@T; \
|
||||
- mv -f $@T $@; \
|
||||
- fi
|
||||
-endif
|
||||
-ifdef posixrules
|
||||
-$(installed-posixrules-file): $(inst_zonedir)/$(posixrules) $(objpfx)zic \
|
||||
- $(+force)
|
||||
- $(zic-cmd) -p $(posixrules)
|
||||
-endif
|
||||
-
|
||||
-
|
||||
$(objpfx)zic: $(objpfx)scheck.o $(objpfx)ialloc.o
|
||||
|
||||
tz-cflags = -DTZDIR='"$(zonedir)"' \
|
|
@ -3,15 +3,15 @@ index a847b28..080badc 100644
|
|||
--- a/stdio-common/Makefile
|
||||
+++ b/stdio-common/Makefile
|
||||
@@ -59,7 +59,8 @@ tests := tstscanf test_rdwr test-popen tstgetln test-fseek \
|
||||
tst-popen tst-unlockedio tst-fmemopen2 tst-put-error tst-fgets \
|
||||
tst-fwrite bug16 bug17 tst-swscanf tst-sprintf2 bug18 bug18a \
|
||||
bug19 bug19a tst-popen2 scanf13 scanf14 scanf15 bug20 bug21 bug22 \
|
||||
tst-popen tst-unlockedio tst-fmemopen2 tst-put-error tst-fgets \
|
||||
tst-fwrite bug16 bug17 tst-swscanf tst-sprintf2 bug18 bug18a \
|
||||
bug19 bug19a tst-popen2 scanf13 scanf14 scanf15 bug20 bug21 bug22 \
|
||||
- scanf16 scanf17 tst-setvbuf1 tst-grouping bug23 bug24
|
||||
+ scanf16 scanf17 tst-setvbuf1 tst-grouping bug23 bug24 \
|
||||
+ bug-vfprintf-nargs
|
||||
|
||||
|
||||
test-srcs = tst-unbputc tst-printf
|
||||
|
||||
|
||||
diff --git a/stdio-common/bug-vfprintf-nargs.c b/stdio-common/bug-vfprintf-nargs.c
|
||||
new file mode 100644
|
||||
index 0000000..13c66c0
|
||||
|
@ -97,13 +97,13 @@ index 0000000..13c66c0
|
|||
+#define TEST_FUNCTION do_test ()
|
||||
+#include "../test-skeleton.c"
|
||||
diff --git a/stdio-common/vfprintf.c b/stdio-common/vfprintf.c
|
||||
index 863cd5d..022e72b 100644
|
||||
index 863cd5d..c802e46 100644
|
||||
--- a/stdio-common/vfprintf.c
|
||||
+++ b/stdio-common/vfprintf.c
|
||||
@@ -235,6 +235,9 @@ vfprintf (FILE *s, const CHAR_T *format, va_list ap)
|
||||
0 if unknown. */
|
||||
int readonly_format = 0;
|
||||
|
||||
|
||||
+ /* For the argument descriptions, which may be allocated on the heap. */
|
||||
+ void *args_malloced = NULL;
|
||||
+
|
||||
|
@ -120,25 +120,29 @@ index 863cd5d..022e72b 100644
|
|||
+ union printf_arg *args_value;
|
||||
int *args_size;
|
||||
+ int *args_type;
|
||||
|
||||
|
||||
/* Positional parameters refer to arguments directly. This could
|
||||
also determine the maximum number of arguments. Track the
|
||||
@@ -1698,13 +1702,33 @@ do_positional:
|
||||
|
||||
@@ -1698,13 +1702,38 @@ do_positional:
|
||||
|
||||
/* Determine the number of arguments the format string consumes. */
|
||||
nargs = MAX (nargs, max_ref_arg);
|
||||
+ /* Calculate total size needed to represent a single argument across
|
||||
+ all three argument-related arrays. */
|
||||
+ bytes_per_arg = sizeof (*args_value) + sizeof (*args_size)
|
||||
+ + sizeof (*args_type);
|
||||
+
|
||||
+ /* Check for potential integer overflow. */
|
||||
+ if (nargs > SIZE_MAX / bytes_per_arg)
|
||||
+ if (__builtin_expect (nargs > SIZE_MAX / bytes_per_arg, 0))
|
||||
+ {
|
||||
+ __set_errno (ERANGE);
|
||||
+ done = -1;
|
||||
+ goto all_done;
|
||||
+ }
|
||||
|
||||
/* Allocate memory for the argument descriptions. */
|
||||
|
||||
- /* Allocate memory for the argument descriptions. */
|
||||
- args_type = alloca (nargs * sizeof (int));
|
||||
+ /* Allocate memory for all three argument arrays. */
|
||||
+ if (__libc_use_alloca (nargs * bytes_per_arg))
|
||||
+ args_value = alloca (nargs * bytes_per_arg);
|
||||
+ else
|
||||
|
@ -151,6 +155,8 @@ index 863cd5d..022e72b 100644
|
|||
+ }
|
||||
+ }
|
||||
+
|
||||
+ /* Set up the remaining two arrays to each point past the end of the
|
||||
+ prior array, since space for all three has been allocated now. */
|
||||
+ args_size = &args_value[nargs].pa_int;
|
||||
+ args_type = &args_size[nargs];
|
||||
memset (args_type, s->_flags2 & _IO_FLAGS2_FORTIFY ? '\xff' : '\0',
|
||||
|
@ -158,12 +164,12 @@ index 863cd5d..022e72b 100644
|
|||
- args_value = alloca (nargs * sizeof (union printf_arg));
|
||||
- args_size = alloca (nargs * sizeof (int));
|
||||
+ nargs * sizeof (*args_type));
|
||||
|
||||
|
||||
/* XXX Could do sanity check here: If any element in ARGS_TYPE is
|
||||
still zero after this loop, format is invalid. For now we
|
||||
@@ -1973,8 +1997,8 @@ do_positional:
|
||||
@@ -1973,8 +2002,8 @@ do_positional:
|
||||
}
|
||||
|
||||
|
||||
all_done:
|
||||
- if (__builtin_expect (workstart != NULL, 0))
|
||||
- free (workstart);
|
||||
|
|
Loading…
Reference in a new issue