summaryrefslogtreecommitdiffstats
path: root/meta/recipes-core/glibc/glibc
diff options
context:
space:
mode:
authorRichard Purdie <richard.purdie@linuxfoundation.org>2015-05-13 09:08:09 +0100
committerRichard Purdie <richard.purdie@linuxfoundation.org>2015-05-14 11:44:00 +0100
commitcf8c2e3c2e774f1d736bd572def99d6e6eb0dd32 (patch)
treea42cbca830b0245f0050a7186045e042c32ef4f9 /meta/recipes-core/glibc/glibc
parent3e7dde7d16ce46c8c4e078c21f8daccb18e4ac0c (diff)
downloadpoky-cf8c2e3c2e774f1d736bd572def99d6e6eb0dd32.tar.gz
glibc: Fix x32 make race
On x32 builds, sysd-syscalls appears malformed since the make-target-directory appears on the wrong line. This causes races during the build process where you can see failures like: Assembler messages: Fatal error: can't create [...]glibc/2.21-r0/build-x86_64-poky-linux-gnux32/time/gettimeofday.os: No such file or directory Assembler messages: Fatal error: can't create [...]glibc/2.21-r0/build-x86_64-poky-linux-gnux32/time/time.os: No such file or directory The issue is that the carriage return is being escaped when it should not be. The change to sysd-syscalls with this change: before: """ $(foreach p,$(sysd-rules-targets),$(objpfx)$(patsubst %,$p,time).os): \ $(..)sysdeps/unix/make-syscalls.sh $(make-target-directory) (echo '#include <dl-vdso.h>'; """ after: """ $(foreach p,$(sysd-rules-targets),$(objpfx)$(patsubst %,$p,time).os): \ $(..)sysdeps/unix/make-syscalls.sh $(make-target-directory) (echo '#include <dl-vdso.h>'; """ which ensures the target directory is correctly created. Only x32 uses the vdso code which contains the bug which is why the error only really appears on x32. (From OE-Core rev: ae4729ed6c5e5443c42f8825dd85873f06a3570e) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'meta/recipes-core/glibc/glibc')
-rw-r--r--meta/recipes-core/glibc/glibc/makesyscall.patch51
1 files changed, 51 insertions, 0 deletions
diff --git a/meta/recipes-core/glibc/glibc/makesyscall.patch b/meta/recipes-core/glibc/glibc/makesyscall.patch
new file mode 100644
index 0000000000..9ab597f604
--- /dev/null
+++ b/meta/recipes-core/glibc/glibc/makesyscall.patch
@@ -0,0 +1,51 @@
1On x32 builds, sysd-syscalls appears malformed since the make-target-directory
2appears on the wrong line. This causes races during the build process where you can
3see failures like:
4
5Assembler messages:
6Fatal error: can't create [...]glibc/2.21-r0/build-x86_64-poky-linux-gnux32/time/gettimeofday.os: No such file or directory
7Assembler messages:
8Fatal error: can't create [...]glibc/2.21-r0/build-x86_64-poky-linux-gnux32/time/time.os: No such file or directory
9
10The isue is that the carridge return is being escaped when it should
11not be. The change to sysd-syscalls with this change:
12
13before:
14
15"""
16$(foreach p,$(sysd-rules-targets),$(objpfx)$(patsubst %,$p,time).os): \
17 $(..)sysdeps/unix/make-syscalls.sh $(make-target-directory)
18 (echo '#include <dl-vdso.h>';
19"""
20
21after:
22
23"""
24$(foreach p,$(sysd-rules-targets),$(objpfx)$(patsubst %,$p,time).os): \
25 $(..)sysdeps/unix/make-syscalls.sh
26 $(make-target-directory)
27 (echo '#include <dl-vdso.h>';
28"""
29
30which ensures the target directory is correctly created. Only x32 uses the vdso
31code which contains the bug which is why the error only really appears on x32.
32
33Upstream Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=18409
34Upstream Fix: https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=d9efd775ba51916b58b899d8b1c8501105a830de
35
36Upstream-Status: Backport
37RP 2015/5/13
38
39Index: git/sysdeps/unix/make-syscalls.sh
40===================================================================
41--- git.orig/sysdeps/unix/make-syscalls.sh
42+++ git/sysdeps/unix/make-syscalls.sh
43@@ -278,7 +278,7 @@ while read file srcfile caller syscall a
44 vdso_symver=`echo "$vdso_symver" | sed 's/\./_/g'`
45 echo "\
46 \$(foreach p,\$(sysd-rules-targets),\$(objpfx)\$(patsubst %,\$p,$file).os): \\
47- \$(..)sysdeps/unix/make-syscalls.sh\
48+ \$(..)sysdeps/unix/make-syscalls.sh
49 \$(make-target-directory)
50 (echo '#include <dl-vdso.h>'; \\
51 echo 'extern void *${strong}_ifunc (void) __asm (\"${strong}\");'; \\