Message ID | 553802B8.20502@linaro.org |
---|---|
State | New |
Headers | show |
On 22-04-2015 17:31, H.J. Lu wrote: > On Wed, Apr 22, 2015 at 1:21 PM, Adhemerval Zanella > <adhemerval.zanella@linaro.org> wrote: >> Working on the vDSO refactor I noted that x86_64/x32 build is broken >> due some vdso declaration in syscall.list that is shadowing the >> default x86 implementation. This patch fixes it by removing the >> auto syscall generation and make x32 uses the default Linux x86 >> code. >> >> Tested on x32, ok to commit? >> >> -- >> >> * sysdeps/unix/sysv/linux/x86_64/x32/syscalls.list (gettimeofday): >> Remove definition. >> (time): Likewise. >> >> --- >> >> diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/syscalls.list b/sysdeps/unix/sysv/linux/x86_64/x32/syscalls.list >> index 2cc58af..7edb6fd 100644 >> --- a/sysdeps/unix/sysv/linux/x86_64/x32/syscalls.list >> +++ b/sysdeps/unix/sysv/linux/x86_64/x32/syscalls.list >> @@ -1,8 +1,6 @@ >> # File name Caller Syscall name # args Strong name Weak names >> >> fallocate - fallocate Ci:iiii fallocate fallocate64 >> -gettimeofday - gettimeofday:__vdso_gettimeofday@LINUX_2.6 i:pP __gettimeofday gettimeofday >> posix_fadvise - fadvise64 Vi:iiii posix_fadvise posix_fadvise64 >> preadv - preadv Ci:ipii preadv preadv64 >> pwritev - pwritev Ci:ipii pwritev pwritev64 >> -time - time:__vdso_time@LINUX_2.6 Ei:P time > > X32 builds fine for me without the above change. Why did it fail for you? > I using default toolchain on Ubuntu 14.04 and I am seeing: (echo '#include <dl-vdso.h>'; \ echo 'extern void *time_ifunc (void) __asm ("time");'; \ echo 'void *'; \ echo 'time_ifunc (void)'; \ echo '{'; \ echo ' PREPARE_VERSION_KNOWN (symver, LINUX_2_6);'; \ echo ' return _dl_vdso_vsym ("__vdso_time", &symver);'; \ echo '}'; \ echo 'asm (".type time, %gnu_indirect_function");'; \ echo 'asm (".globl __GI_time /bin/sh: 10: Syntax error: Unterminated quoted string
On 22-04-2015 18:05, H.J. Lu wrote: > On Wed, Apr 22, 2015 at 1:56 PM, Adhemerval Zanella > <adhemerval.zanella@linaro.org> wrote: >> >> >> On 22-04-2015 17:31, H.J. Lu wrote: >>> On Wed, Apr 22, 2015 at 1:21 PM, Adhemerval Zanella >>> <adhemerval.zanella@linaro.org> wrote: >>>> Working on the vDSO refactor I noted that x86_64/x32 build is broken >>>> due some vdso declaration in syscall.list that is shadowing the >>>> default x86 implementation. This patch fixes it by removing the >>>> auto syscall generation and make x32 uses the default Linux x86 >>>> code. >>>> >>>> Tested on x32, ok to commit? >>>> >>>> -- >>>> >>>> * sysdeps/unix/sysv/linux/x86_64/x32/syscalls.list (gettimeofday): >>>> Remove definition. >>>> (time): Likewise. >>>> >>>> --- >>>> >>>> diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/syscalls.list b/sysdeps/unix/sysv/linux/x86_64/x32/syscalls.list >>>> index 2cc58af..7edb6fd 100644 >>>> --- a/sysdeps/unix/sysv/linux/x86_64/x32/syscalls.list >>>> +++ b/sysdeps/unix/sysv/linux/x86_64/x32/syscalls.list >>>> @@ -1,8 +1,6 @@ >>>> # File name Caller Syscall name # args Strong name Weak names >>>> >>>> fallocate - fallocate Ci:iiii fallocate fallocate64 >>>> -gettimeofday - gettimeofday:__vdso_gettimeofday@LINUX_2.6 i:pP __gettimeofday gettimeofday >>>> posix_fadvise - fadvise64 Vi:iiii posix_fadvise posix_fadvise64 >>>> preadv - preadv Ci:ipii preadv preadv64 >>>> pwritev - pwritev Ci:ipii pwritev pwritev64 >>>> -time - time:__vdso_time@LINUX_2.6 Ei:P time >>> >>> X32 builds fine for me without the above change. Why did it fail for you? >>> >> >> I using default toolchain on Ubuntu 14.04 and I am seeing: >> >> (echo '#include <dl-vdso.h>'; \ >> echo 'extern void *time_ifunc (void) __asm ("time");'; \ >> echo 'void *'; \ >> echo 'time_ifunc (void)'; \ >> echo '{'; \ >> echo ' PREPARE_VERSION_KNOWN (symver, LINUX_2_6);'; \ >> echo ' return _dl_vdso_vsym ("__vdso_time", &symver);'; \ >> echo '}'; \ >> echo 'asm (".type time, %gnu_indirect_function");'; \ >> echo 'asm (".globl __GI_time >> /bin/sh: 10: Syntax error: Unterminated quoted string > > Which shell is /bin/sh? Can you try bash? Indeed it seems a limitation of default /bin/sh for Ubuntu (dash).
diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/syscalls.list b/sysdeps/unix/sysv/linux/x86_64/x32/syscalls.list index 2cc58af..7edb6fd 100644 --- a/sysdeps/unix/sysv/linux/x86_64/x32/syscalls.list +++ b/sysdeps/unix/sysv/linux/x86_64/x32/syscalls.list @@ -1,8 +1,6 @@ # File name Caller Syscall name # args Strong name Weak names fallocate - fallocate Ci:iiii fallocate fallocate64 -gettimeofday - gettimeofday:__vdso_gettimeofday@LINUX_2.6 i:pP __gettimeofday gettimeofday posix_fadvise - fadvise64 Vi:iiii posix_fadvise posix_fadvise64 preadv - preadv Ci:ipii preadv preadv64 pwritev - pwritev Ci:ipii pwritev pwritev64 -time - time:__vdso_time@LINUX_2.6 Ei:P time