Message ID | 553802B8.20502@linaro.org |
---|---|
State | New |
Headers | show |
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?
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 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?
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).
On Wed, 22 Apr 2015, Adhemerval Zanella wrote: > > Which shell is /bin/sh? Can you try bash? > > Indeed it seems a limitation of default /bin/sh for Ubuntu (dash). See bug 16704, and the patch <https://sourceware.org/ml/libc-alpha/2015-02/msg00396.html> which needs review.
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