[PATCH v7] y2038: Introduce __ASSUME_TIME64_SYSCALLS define
Lukasz Majewski
lukma@denx.de
Thu Jun 13 22:34:00 GMT 2019
Hi Joseph,
> On Tue, 11 Jun 2019, Lukasz Majewski wrote:
>
> > Syscall's ABI compatibility checking:
> >
> > 1. Code to check if syscalls are defined since v3.2 kernel on the
> > intersection of archs supported by v3.2 kernel and contemporary
> > glibc (SHA1: e6e24243905957c36596f50a22af0acfd83793e2):
> >
> > (Assumption: syscall ABI change require changing the name - like
> > __NR_epoll_create and __NR_epoll_create1)
> >
> > export syscalls_table="\
> > clock_gettime clock_settime clock_adjtime \
> > clock_getres clock_nanosleep timer_gettime \
> > timer_settime timerfd_gettime timerfd_settime \
> > utimensat pselect6 ppoll io_pgetevents recvmmsg \
> > mq_timedsend mq_timedreceive rt_sigtimedwait futex \
> > sched_rr_get_interval"
> >
> > for syscall in ${syscalls_table} ; do echo -n "syscall: ${syscall}
> > -> "; \ grep -rnIw "__NR_${syscall}" | grep ^arch/ | \
> > grep -vE
> > "mn10300|avr32|cris|m32r|frv|blackfin|xtensa|h8300|vdso" | \ wc -l;
> > done
>
> This is not quite sufficient. It's possible for a syscall to be
> mentioned in an architecture's asm/unistd.h but not in the actual
> syscall table, for example (or mentioned inside #if 0).
>
> You do need to check the relevant files for each architecture. *But*
> only architectures with 64-bit syscall interfaces are relevant,
> because those with 32-bit syscall interfaces won't get
> __ASSUME_TIME64_SYSCALLS defined for kernels before 5.1 anyway. So
> it doesn't matter whether a syscall was present for arm or m68k, for
> example.
Thanks for clarification.
>
> (For example: before 3.15, microblaze didn't have pselect6 in its
> syscall table, though it had it in asm/unistd.h. But there's no
> reason to exclude pselect6 from this patch, because microblaze is a
> 32-bit architecture, and all 64-bit architectures / syscall ABIs had
> that syscall already in 3.2.)
Ok.
>
> So you care about (glibc architecture names): aarch64 alpha ia64 mips
> (n64 and n32 syscall ABIs) powerpc (64-bit syscall ABI) riscv (64-bit
> syscall ABI) s390 (64-bit syscall ABI) sparc (64-bit syscall ABI)
> x86_64 (classic and x32 syscall ABIs). The 64-bit versions of hppa
> and sh are not relevant because they aren't supported by glibc.
Thanks for listing them.
>
> > - 32 bit: nios2, csky, hppa (is the same as parisc?) - no
> > need to
>
> Yes, hppa is called parisc in the Linux kernel. There are a few such
> cases where the names are different (e.g. the Linux kernel uses
> "arm64" as the name for aarch64).
>
If I may ask - do I need to further fix/re-word in-patch comment and
patch description?
Is it precise and semantically correct?
Best regards,
Lukasz Majewski
--
DENX Software Engineering GmbH, Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-59 Fax: (+49)-8142-66989-80 Email: lukma@denx.de
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 488 bytes
Desc: OpenPGP digital signature
URL: <http://sourceware.org/pipermail/libc-alpha/attachments/20190613/d7ae703e/attachment.sig>
More information about the Libc-alpha
mailing list