forked from pool/glibc
This commit is contained in:
parent
3219db2391
commit
b7aa45883f
@ -1,3 +0,0 @@
|
|||||||
version https://git-lfs.github.com/spec/v1
|
|
||||||
oid sha256:e03c84ffe3b41a81a070a896307fa59b4618f2cc053360a65c867a79a32a718c
|
|
||||||
size 15670997
|
|
3
glibc-2.11.1-6d270188ef3f.tar.bz2
Normal file
3
glibc-2.11.1-6d270188ef3f.tar.bz2
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
version https://git-lfs.github.com/spec/v1
|
||||||
|
oid sha256:b45efdd3bc1fddfad38ad83c586ae9608df85a65bacd9bb8c2c055e1b68139b7
|
||||||
|
size 15668947
|
@ -1,11 +0,0 @@
|
|||||||
--- sysdeps/x86_64/dl-machine.h~ 2010-03-01 18:51:13.914317000 +0100
|
|
||||||
+++ sysdeps/x86_64/dl-machine.h 2010-03-01 18:52:01.258038000 +0100
|
|
||||||
@@ -453,7 +453,7 @@
|
|
||||||
case R_X86_64_PC32:
|
|
||||||
value += reloc->r_addend - (Elf64_Addr) reloc_addr;
|
|
||||||
*(unsigned int *) reloc_addr = value;
|
|
||||||
- if (__builtin_expect (value != (unsigned int) value, 0))
|
|
||||||
+ if (__builtin_expect (value != (int) value, 0))
|
|
||||||
{
|
|
||||||
fmt = "\
|
|
||||||
%s: Symbol `%s' causes overflow in R_X86_64_PC32 relocation\n";
|
|
@ -1,14 +1,13 @@
|
|||||||
Pending acceptance upstream when this gets RFC'd:
|
--- posix/gai.conf~ 2010-05-12 04:10:58.087661000 +0200
|
||||||
http://sourceware.org/bugzilla/show_bug.cgi?id=11438
|
+++ posix/gai.conf 2010-05-12 04:14:40.638820000 +0200
|
||||||
|
@@ -67,11 +67,66 @@
|
||||||
--- posix/gai.conf~ 2010-04-20 13:05:50.197813000 +0200
|
|
||||||
+++ posix/gai.conf 2010-04-20 13:08:46.472675000 +0200
|
|
||||||
@@ -66,3 +66,68 @@
|
|
||||||
#scopev4 ::ffff:172.16.0.0/108 5
|
|
||||||
#scopev4 ::ffff:192.168.0.0/112 5
|
#scopev4 ::ffff:192.168.0.0/112 5
|
||||||
#scopev4 ::ffff:0.0.0.0/96 14
|
#scopev4 ::ffff:0.0.0.0/96 14
|
||||||
+
|
#
|
||||||
+
|
-# For sites which use site-local IPv4 addresses behind NAT there is
|
||||||
|
-# the problem that even if IPv4 addresses are preferred they do not
|
||||||
|
-# have the same scope and are therefore not sorted first. To change
|
||||||
|
-# this use only these rules:
|
||||||
+# Back in 2003, the sorting algorithm used by getaddrinfo() was defined in RFC
|
+# Back in 2003, the sorting algorithm used by getaddrinfo() was defined in RFC
|
||||||
+# 3484. However, this document did not take into account (or foresee) the
|
+# 3484. However, this document did not take into account (or foresee) the
|
||||||
+# ubiquity of IPv4 NAT on today's internet. This in turn causes some real
|
+# ubiquity of IPv4 NAT on today's internet. This in turn causes some real
|
||||||
@ -68,7 +67,10 @@ http://sourceware.org/bugzilla/show_bug.cgi?id=11438
|
|||||||
+# >
|
+# >
|
||||||
+# > By changing the address scope of private IPv4 address to global, this
|
+# > By changing the address scope of private IPv4 address to global, this
|
||||||
+# > problem can be solved.
|
+# > problem can be solved.
|
||||||
+
|
#
|
||||||
|
-#scopev4 ::ffff:169.254.0.0/112 2
|
||||||
|
-#scopev4 ::ffff:127.0.0.0/104 2
|
||||||
|
-#scopev4 ::ffff:0.0.0.0/96 14
|
||||||
+scopev4 ::ffff:10.0.0.0/104 14
|
+scopev4 ::ffff:10.0.0.0/104 14
|
||||||
+scopev4 ::ffff:172.16.0.0/108 14
|
+scopev4 ::ffff:172.16.0.0/108 14
|
||||||
+scopev4 ::ffff:192.168.0.0/112 14
|
+scopev4 ::ffff:192.168.0.0/112 14
|
||||||
|
@ -1,148 +0,0 @@
|
|||||||
This bug is in reference to a bug introduced in glibc 2.11 but present in glibc
|
|
||||||
HEAD by the following patch set:
|
|
||||||
|
|
||||||
http://sourceware.org/git/?p=glibc.git;a=commitdiff;h=6a3d03ff58742430a252beac4a1917506512e319
|
|
||||||
|
|
||||||
The patch came from this bugzilla bug:
|
|
||||||
|
|
||||||
https://bugzilla.redhat.com/show_bug.cgi?id=494631
|
|
||||||
|
|
||||||
Which simply proposed the first part:
|
|
||||||
|
|
||||||
+ nl = memchr (*cp, '\n', *re - *cp);
|
|
||||||
+ while (nl == NULL && *re == buffer_end)
|
|
||||||
+ {
|
|
||||||
+ /* Truncate too long lines. */
|
|
||||||
+ *re = buffer + 3 * (buffer_end - buffer) / 4;
|
|
||||||
+ n = read_not_cancel (fd, *re, buffer_end - *re);
|
|
||||||
+ if (n < 0)
|
|
||||||
+ return NULL;
|
|
||||||
+
|
|
||||||
+ nl = memchr (*re, '\n', n);
|
|
||||||
+ **re = '\n';
|
|
||||||
+ *re += n;
|
|
||||||
+ }
|
|
||||||
}
|
|
||||||
+ else
|
|
||||||
+ nl = memchr (*cp, '\n', *re - *cp);
|
|
||||||
|
|
||||||
This was checked in with a second part:
|
|
||||||
|
|
||||||
else if (nl + 5 >= *re)
|
|
||||||
{
|
|
||||||
memmove (buffer, nl, *re - nl);
|
|
||||||
*re = buffer + (*re - nl);
|
|
||||||
nl = *cp = buffer;
|
|
||||||
|
|
||||||
ssize_t n = read_not_cancel (fd, *re, buffer_end - *re);
|
|
||||||
if (n < 0)
|
|
||||||
return NULL;
|
|
||||||
|
|
||||||
*re += n;
|
|
||||||
}
|
|
||||||
|
|
||||||
Which is meant to determine whether there's enough room at the end of the
|
|
||||||
buffer to hold "cpu*\n".
|
|
||||||
|
|
||||||
else if (nl + 5 >= *re)
|
|
||||||
{
|
|
||||||
memmove (buffer, nl, *re - nl);
|
|
||||||
*re = buffer + (*re - nl);
|
|
||||||
nl = *cp = buffer;
|
|
||||||
|
|
||||||
ssize_t n = read_not_cancel (fd, *re, buffer_end - *re);
|
|
||||||
if (n < 0)
|
|
||||||
return NULL;
|
|
||||||
|
|
||||||
*re += n;
|
|
||||||
}
|
|
||||||
|
|
||||||
*cp = nl + 1;
|
|
||||||
|
|
||||||
This second block is erroneous (and redundant). If there's not enough room to
|
|
||||||
complete a cpu[:digit:] line it'll try to move what's partially in the end of
|
|
||||||
the buffer to the front (preserving that portion) and then read in a bunch
|
|
||||||
more, assuming that a \n is in the next read.
|
|
||||||
|
|
||||||
But it actually ends up overwriting the current line with the contents of the
|
|
||||||
second line.
|
|
||||||
|
|
||||||
Consider the following line
|
|
||||||
|
|
||||||
| C | P | U | 1 | \n | C | P | U | 2 | \n | C | P | U | 3 | F | O | O | B | A |
|
|
||||||
R | F | O | O | B |
|
|
||||||
A | R | \n | ...
|
|
||||||
|
|
||||||
where sizeof(buffer) == 12.
|
|
||||||
|
|
||||||
The first time through 'buffer' is filled as follows:
|
|
||||||
|
|
||||||
| C | P | U | 1 | \n | C | P | U | 2 | \n | C | P |
|
|
||||||
|
|
||||||
and 'cpu1' is the line that is returned. The second time through 'cpu2' is the
|
|
||||||
line that is supposed to be returned but this problematic branch is hit and the
|
|
||||||
last C P is copied to the front of the buffer over top of C P U 2. Following
|
|
||||||
this U 3 F O O B A R F O is read into the rest of 'buffer':
|
|
||||||
|
|
||||||
| C | P ||| U | 3 | F | O | O | B | A | R | F | O |
|
|
||||||
|
|
||||||
This throws off the whole incrementing calculation.
|
|
||||||
|
|
||||||
This second else block isn't necessary. Jakub's first part covers the scenario
|
|
||||||
shown in the example above quite well:
|
|
||||||
|
|
||||||
The following test case:
|
|
||||||
|
|
||||||
#include<stdio.h>
|
|
||||||
#include<sys/sysinfo.h>
|
|
||||||
int main()
|
|
||||||
{
|
|
||||||
int lcpus=get_nprocs();
|
|
||||||
printf("logical cpus = %d\n",lcpus);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
Can be run against the attached /proc/stat file which is known to reproduce the
|
|
||||||
problem:
|
|
||||||
|
|
||||||
This stat file can be used with the testcase by bind mounting it over
|
|
||||||
/proc/stat:
|
|
||||||
cp stat /dev/shm/stat
|
|
||||||
mount --bind /dev/shm/stat /proc/stat
|
|
||||||
|
|
||||||
When run this should show:
|
|
||||||
|
|
||||||
logical cpus = 1024
|
|
||||||
|
|
||||||
since cpu1024 is high cpu number. But it shows something like:
|
|
||||||
|
|
||||||
logical cpus = 137
|
|
||||||
|
|
||||||
Also attached is a patch which removes the erroneous else block.
|
|
||||||
|
|
||||||
When re-run against with this patch it reports the correct number of cpus.
|
|
||||||
|
|
||||||
Thanks to Milton Miller for describing this problem.
|
|
||||||
|
|
||||||
|
|
||||||
--- glibc-2.11.1/sysdeps/unix/sysv/linux/getsysstats.c 2010-01-18 11:01:41.000000000 -0600
|
|
||||||
+++ glibc-2.11.1-new/sysdeps/unix/sysv/linux/getsysstats.c 2010-03-23 08:00:26.000000000 -0500
|
|
||||||
@@ -117,18 +117,6 @@
|
|
||||||
if (nl == NULL)
|
|
||||||
nl = *re - 1;
|
|
||||||
}
|
|
||||||
- else if (nl + 5 >= *re)
|
|
||||||
- {
|
|
||||||
- memmove (buffer, nl, *re - nl);
|
|
||||||
- *re = buffer + (*re - nl);
|
|
||||||
- nl = *cp = buffer;
|
|
||||||
-
|
|
||||||
- ssize_t n = read_not_cancel (fd, *re, buffer_end - *re);
|
|
||||||
- if (n < 0)
|
|
||||||
- return NULL;
|
|
||||||
-
|
|
||||||
- *re += n;
|
|
||||||
- }
|
|
||||||
|
|
||||||
*cp = nl + 1;
|
|
||||||
assert (*cp <= *re);
|
|
@ -1,39 +0,0 @@
|
|||||||
2010-02-05 H.J. Lu <hongjiu.lu@intel.com>
|
|
||||||
|
|
||||||
PR libc/11230
|
|
||||||
* sysdeps/ia64/memchr.S: Don't read beyond the last byte
|
|
||||||
during recovery.
|
|
||||||
|
|
||||||
diff --git a/sysdeps/ia64/memchr.S b/sysdeps/ia64/memchr.S
|
|
||||||
index cdd71ca..56d8056 100644
|
|
||||||
--- a/sysdeps/ia64/memchr.S
|
|
||||||
+++ b/sysdeps/ia64/memchr.S
|
|
||||||
@@ -47,7 +47,7 @@
|
|
||||||
#define saved_lc r16
|
|
||||||
#define chr r17
|
|
||||||
#define len r18
|
|
||||||
-#define pos0 r20
|
|
||||||
+#define last r20
|
|
||||||
#define val r21
|
|
||||||
#define tmp r24
|
|
||||||
#define chrx8 r25
|
|
||||||
@@ -67,6 +67,7 @@ ENTRY(__memchr)
|
|
||||||
mov saved_pr = pr // save the predicates
|
|
||||||
.body
|
|
||||||
mov ret0 = str
|
|
||||||
+ add last = str, in2 // last byte
|
|
||||||
and tmp = 7, str // tmp = str % 8
|
|
||||||
cmp.ne p7, p0 = r0, r0 // clear p7
|
|
||||||
extr.u chr = in1, 0, 8 // chr = (unsigned char) in1
|
|
||||||
@@ -143,7 +144,10 @@ ENTRY(__memchr)
|
|
||||||
ld8 tmp = [ret0];; // load the first unchecked 8byte
|
|
||||||
xor aux[1] = tmp, chrx8;;
|
|
||||||
czx1.r poschr[1] = aux[1];;
|
|
||||||
- cmp.ne p7, p0 = 8, poschr[1]
|
|
||||||
+ cmp.ne p7, p0 = 8, poschr[1];;
|
|
||||||
+(p7) add ret0 = addr[MEMLAT+2], poschr[1];;
|
|
||||||
+(p7) cmp.geu p6, p7 = ret0, last // don't go over the last byte
|
|
||||||
+(p6) br.cond.spnt .notfound;;
|
|
||||||
(p7) br.cond.spnt .foundit;;
|
|
||||||
adds ret0 = 8, ret0 // load the next unchecked 8byte
|
|
||||||
br.sptk .l4;;
|
|
@ -1,11 +0,0 @@
|
|||||||
--- localedata/locales/i18n~ 2010-01-19 03:51:14.208960000 +0100
|
|
||||||
+++ localedata/locales/i18n 2010-01-19 03:51:24.444040000 +0100
|
|
||||||
@@ -928,7 +928,7 @@
|
|
||||||
(<U006D>,<U004D>);(<U006E>,<U004E>);(<U006F>,<U004F>);(<U0070>,<U0050>);/
|
|
||||||
(<U0071>,<U0051>);(<U0072>,<U0052>);(<U0073>,<U0053>);(<U0074>,<U0054>);/
|
|
||||||
(<U0075>,<U0055>);(<U0076>,<U0056>);(<U0077>,<U0057>);(<U0078>,<U0058>);/
|
|
||||||
- (<U0079>,<U0059>);(<U007A>,<U005A>);(<U00B5>,<U039C>);(<U00DF>,<U1E9E>);/
|
|
||||||
+ (<U0079>,<U0059>);(<U007A>,<U005A>);(<U00B5>,<U039C>);/
|
|
||||||
(<U00E0>,<U00C0>);/
|
|
||||||
(<U00E1>,<U00C1>);(<U00E2>,<U00C2>);(<U00E3>,<U00C3>);(<U00E4>,<U00C4>);/
|
|
||||||
(<U00E5>,<U00C5>);(<U00E6>,<U00C6>);(<U00E7>,<U00C7>);(<U00E8>,<U00C8>);/
|
|
@ -1,84 +0,0 @@
|
|||||||
Hi,
|
|
||||||
|
|
||||||
unfortunately it turned out that the UTF-16 to UTF-32 and UTF-16 to
|
|
||||||
UTF-8 conversion instructions fail to recognize certain conditions if
|
|
||||||
the input stream is corrupted.
|
|
||||||
|
|
||||||
The attached patch disables these instructions and adjusts the
|
|
||||||
software implementation in order to take care of the error condition.
|
|
||||||
Hopefully we can re-enable them if a millicode fix becomes available.
|
|
||||||
|
|
||||||
Tested without regressions on s390x.
|
|
||||||
|
|
||||||
Please apply if you think it is ok.
|
|
||||||
|
|
||||||
Bye,
|
|
||||||
|
|
||||||
-Andreas-
|
|
||||||
|
|
||||||
|
|
||||||
2010-02-11 Andreas Krebbel <Andreas.Krebbel@de.ibm.com>
|
|
||||||
|
|
||||||
* sysdeps/s390/s390-64/utf8-utf16-z9.c: Disable hardware
|
|
||||||
instructions cu21 and cu24. Add well-formedness checking
|
|
||||||
parameter and adjust the software implementation.
|
|
||||||
* sysdeps/s390/s390-64/utf16-utf32-z9.c: Likewise.
|
|
||||||
|
|
||||||
|
|
||||||
Index: libc/sysdeps/s390/s390-64/utf8-utf16-z9.c
|
|
||||||
===================================================================
|
|
||||||
--- libc.orig/sysdeps/s390/s390-64/utf8-utf16-z9.c
|
|
||||||
+++ libc/sysdeps/s390/s390-64/utf8-utf16-z9.c
|
|
||||||
@@ -345,9 +345,12 @@ gconv_end (struct __gconv_step *data)
|
|
||||||
Operation. */
|
|
||||||
#define BODY \
|
|
||||||
{ \
|
|
||||||
- if (GLRO (dl_hwcap) & HWCAP_S390_ETF3EH) \
|
|
||||||
+ /* The hardware instruction currently fails to report an error for \
|
|
||||||
+ isolated low surrogates so we have to disable the instruction \
|
|
||||||
+ until this gets resolved. */ \
|
|
||||||
+ if (0) /* (GLRO (dl_hwcap) & HWCAP_S390_ETF3EH) */ \
|
|
||||||
{ \
|
|
||||||
- HARDWARE_CONVERT ("cu21 %0, %1"); \
|
|
||||||
+ HARDWARE_CONVERT ("cu21 %0, %1, 1"); \
|
|
||||||
if (inptr != inend) \
|
|
||||||
{ \
|
|
||||||
/* Check if the third byte is \
|
|
||||||
@@ -388,7 +391,7 @@ gconv_end (struct __gconv_step *data)
|
|
||||||
\
|
|
||||||
outptr += 2; \
|
|
||||||
} \
|
|
||||||
- else if (c >= 0x0800 && c <= 0xd7ff) \
|
|
||||||
+ else if ((c >= 0x0800 && c <= 0xd7ff) || c > 0xdfff) \
|
|
||||||
{ \
|
|
||||||
/* Three byte UTF-8 char. */ \
|
|
||||||
\
|
|
||||||
Index: libc/sysdeps/s390/s390-64/utf16-utf32-z9.c
|
|
||||||
===================================================================
|
|
||||||
--- libc.orig/sysdeps/s390/s390-64/utf16-utf32-z9.c
|
|
||||||
+++ libc/sysdeps/s390/s390-64/utf16-utf32-z9.c
|
|
||||||
@@ -203,7 +203,10 @@ gconv_end (struct __gconv_step *data)
|
|
||||||
swapping). */
|
|
||||||
#define BODY \
|
|
||||||
{ \
|
|
||||||
- if (GLRO (dl_hwcap) & HWCAP_S390_ETF3EH) \
|
|
||||||
+ /* The hardware instruction currently fails to report an error for \
|
|
||||||
+ isolated low surrogates so we have to disable the instruction \
|
|
||||||
+ until this gets resolved. */ \
|
|
||||||
+ if (0) /* (GLRO (dl_hwcap) & HWCAP_S390_ETF3EH) */ \
|
|
||||||
{ \
|
|
||||||
HARDWARE_CONVERT ("cu24 %0, %1, 1"); \
|
|
||||||
if (inptr != inend) \
|
|
||||||
@@ -229,6 +232,12 @@ gconv_end (struct __gconv_step *data)
|
|
||||||
} \
|
|
||||||
else \
|
|
||||||
{ \
|
|
||||||
+ /* An isolated low-surrogate was found. This has to be \
|
|
||||||
+ considered ill-formed. */ \
|
|
||||||
+ if (__builtin_expect (u1 >= 0xdc00, 0)) \
|
|
||||||
+ { \
|
|
||||||
+ STANDARD_FROM_LOOP_ERR_HANDLER (2); \
|
|
||||||
+ } \
|
|
||||||
/* It's a surrogate character. At least the first word says \
|
|
||||||
it is. */ \
|
|
||||||
if (__builtin_expect (inptr + 4 > inend, 0)) \
|
|
@ -1,32 +0,0 @@
|
|||||||
Index: glibc-2.11.1/malloc/malloc.c
|
|
||||||
===================================================================
|
|
||||||
--- glibc-2.11.1.orig/malloc/malloc.c 2010-01-18 18:01:41.000000000 +0100
|
|
||||||
+++ glibc-2.11.1/malloc/malloc.c 2010-02-23 13:47:59.000000000 +0100
|
|
||||||
@@ -3933,9 +3933,10 @@ public_vALLOc(size_t bytes)
|
|
||||||
if(!p) {
|
|
||||||
/* Maybe the failure is due to running out of mmapped areas. */
|
|
||||||
if(ar_ptr != &main_arena) {
|
|
||||||
- (void)mutex_lock(&main_arena.mutex);
|
|
||||||
- p = _int_memalign(&main_arena, pagesz, bytes);
|
|
||||||
- (void)mutex_unlock(&main_arena.mutex);
|
|
||||||
+ ar_ptr = &main_arena;
|
|
||||||
+ (void)mutex_lock(&ar_ptr->mutex);
|
|
||||||
+ p = _int_memalign(ar_ptr, pagesz, bytes);
|
|
||||||
+ (void)mutex_unlock(&ar_ptr->mutex);
|
|
||||||
} else {
|
|
||||||
#if USE_ARENAS
|
|
||||||
/* ... or sbrk() has failed and there is still a chance to mmap() */
|
|
||||||
@@ -3978,9 +3979,10 @@ public_pVALLOc(size_t bytes)
|
|
||||||
if(!p) {
|
|
||||||
/* Maybe the failure is due to running out of mmapped areas. */
|
|
||||||
if(ar_ptr != &main_arena) {
|
|
||||||
- (void)mutex_lock(&main_arena.mutex);
|
|
||||||
- p = _int_memalign(&main_arena, pagesz, rounded_bytes);
|
|
||||||
- (void)mutex_unlock(&main_arena.mutex);
|
|
||||||
+ ar_ptr = &main_arena;
|
|
||||||
+ (void)mutex_lock(&ar_ptr->mutex);
|
|
||||||
+ p = _int_memalign(ar_ptr, pagesz, rounded_bytes);
|
|
||||||
+ (void)mutex_unlock(&ar_ptr->mutex);
|
|
||||||
} else {
|
|
||||||
#if USE_ARENAS
|
|
||||||
/* ... or sbrk() has failed and there is still a chance to mmap() */
|
|
@ -1,3 +1,11 @@
|
|||||||
|
-------------------------------------------------------------------
|
||||||
|
Wed May 12 04:24:13 CEST 2010 - pbaudis@suse.cz
|
||||||
|
|
||||||
|
- Upgrade to latest release/2.11/master - glibc-2.11.1-6d270188ef3f
|
||||||
|
- This contains considerable amount of bugfixes cherrypicked from
|
||||||
|
the master branch, slated to become glibc-2.11.2 soon with little
|
||||||
|
further changes
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Mon May 10 23:33:35 CEST 2010 - pbaudis@suse.cz
|
Mon May 10 23:33:35 CEST 2010 - pbaudis@suse.cz
|
||||||
|
|
||||||
|
16
glibc.spec
16
glibc.spec
@ -68,7 +68,7 @@ Release: 1
|
|||||||
Url: http://www.gnu.org/software/libc/libc.html
|
Url: http://www.gnu.org/software/libc/libc.html
|
||||||
PreReq: filesystem
|
PreReq: filesystem
|
||||||
BuildRoot: %{_tmppath}/%{name}-%{version}-build
|
BuildRoot: %{_tmppath}/%{name}-%{version}-build
|
||||||
Source: glibc-%{version}-11c19d374bd4.tar.bz2
|
Source: glibc-%{version}-6d270188ef3f.tar.bz2
|
||||||
Source2: glibc-ports-2.10.1-2b2b217196.tar.bz2
|
Source2: glibc-ports-2.10.1-2b2b217196.tar.bz2
|
||||||
Source3: noversion.tar.bz2
|
Source3: noversion.tar.bz2
|
||||||
Source4: manpages.tar.bz2
|
Source4: manpages.tar.bz2
|
||||||
@ -132,15 +132,8 @@ Patch47: libm-x86-64-exceptions.diff
|
|||||||
Patch48: glibc-uio-cell.diff
|
Patch48: glibc-uio-cell.diff
|
||||||
Patch50: glibc-nameserver-localhost.diff
|
Patch50: glibc-nameserver-localhost.diff
|
||||||
Patch54: glibc-statfs64-ia64.diff
|
Patch54: glibc-statfs64-ia64.diff
|
||||||
Patch55: glibc-memchr-ia64.diff
|
|
||||||
Patch56: glibc-utf-s390.diff
|
|
||||||
Patch57: glibc-valloc-assert.diff
|
|
||||||
Patch58: glibc-dl-x86-64-pc32.diff
|
|
||||||
Patch59: glibc-sap-captialsharps.diff
|
|
||||||
Patch60: ld-prelink-unique.diff
|
Patch60: ld-prelink-unique.diff
|
||||||
Patch61: glibc-ppc64-vdso-time.diff
|
Patch61: glibc-ppc64-vdso-time.diff
|
||||||
Patch62: nptl-ppc64-vdso-timedwait.diff
|
|
||||||
Patch63: glibc-getnprocs.diff
|
|
||||||
Patch64: glibc-gai-private4.diff
|
Patch64: glibc-gai-private4.diff
|
||||||
Patch65: glibc-resolv-mdnshint.diff
|
Patch65: glibc-resolv-mdnshint.diff
|
||||||
Patch500: ARM_glibc-2.10.1-local-eabi-wchar.diff
|
Patch500: ARM_glibc-2.10.1-local-eabi-wchar.diff
|
||||||
@ -358,15 +351,8 @@ rm nscd/s-stamp
|
|||||||
%patch48 -p1
|
%patch48 -p1
|
||||||
%patch50 -p1
|
%patch50 -p1
|
||||||
%patch54
|
%patch54
|
||||||
%patch55 -p1
|
|
||||||
%patch56 -p1
|
|
||||||
%patch57 -p1
|
|
||||||
%patch58
|
|
||||||
%patch59
|
|
||||||
%patch60 -p1
|
%patch60 -p1
|
||||||
%patch61 -p1
|
%patch61 -p1
|
||||||
%patch62 -p1
|
|
||||||
%patch63 -p1
|
|
||||||
%patch64
|
%patch64
|
||||||
%patch65 -p1
|
%patch65 -p1
|
||||||
%ifarch %arm armv5tel armv7l
|
%ifarch %arm armv5tel armv7l
|
||||||
|
@ -1,29 +0,0 @@
|
|||||||
Index: glibc-2.11.1/nptl/pthread_cond_timedwait.c
|
|
||||||
===================================================================
|
|
||||||
--- glibc-2.11.1.old/nptl/pthread_cond_timedwait.c
|
|
||||||
+++ glibc-2.11.1/nptl/pthread_cond_timedwait.c
|
|
||||||
@@ -27,6 +27,15 @@
|
|
||||||
|
|
||||||
#include <shlib-compat.h>
|
|
||||||
|
|
||||||
+#ifndef HAVE_CLOCK_GETTIME_VSYSCALL
|
|
||||||
+# undef INTERNAL_VSYSCALL
|
|
||||||
+# define INTERNAL_VSYSCALL INTERNAL_SYSCALL
|
|
||||||
+# undef INLINE_VSYSCALL
|
|
||||||
+# define INLINE_VSYSCALL INLINE_SYSCALL
|
|
||||||
+#else
|
|
||||||
+# include <bits/libc-vdso.h>
|
|
||||||
+#endif
|
|
||||||
+
|
|
||||||
|
|
||||||
/* Cleanup handler, defined in pthread_cond_wait.c. */
|
|
||||||
extern void __condvar_cleanup (void *arg)
|
|
||||||
@@ -102,7 +111,7 @@ __pthread_cond_timedwait (cond, mutex, a
|
|
||||||
#ifdef __NR_clock_gettime
|
|
||||||
INTERNAL_SYSCALL_DECL (err);
|
|
||||||
int ret;
|
|
||||||
- ret = INTERNAL_SYSCALL (clock_gettime, err, 2,
|
|
||||||
+ ret = INTERNAL_VSYSCALL (clock_gettime, err, 2,
|
|
||||||
(cond->__data.__nwaiters
|
|
||||||
& ((1 << COND_NWAITERS_SHIFT) - 1)),
|
|
||||||
&rt);
|
|
Loading…
Reference in New Issue
Block a user