+CC a few folks working on 64-bit time changes On 3/26/20 4:52 PM, Joseph Myers wrote: > On Thu, 12 Mar 2020, Vineet Gupta via Libc-alpha wrote: > >> diff --git a/sysdeps/unix/sysv/linux/arc/bits/socket-constants.h b/sysdeps/unix/sysv/linux/arc/bits/socket-constants.h >> new file mode 100644 >> index 000000000000..74b0c06edb36 >> --- /dev/null >> +++ b/sysdeps/unix/sysv/linux/arc/bits/socket-constants.h > > As far as I can see, the only reason for having this header is to use > appropriate values of SO_RCVTIMEO and SO_SNDTIMEO for 64-bit time. > > It's best not to need a separate version of this header for all future > 32-bit architectures. So I'd suggest putting the conditionals on the size > of time_t in the default sysdeps/unix/sysv/linux/bits/socket-constants.h > instead. OK this was loosely based on RV32 port. I can fix as you say, as a standalone/separate patch I suppose. But in grep'ing I see a weird thing: SO_RCVTIMEO in user exposed socket.h has a totally different value from socket-constants.h - how is that supposed to work. $git grep SO_RCVTIME bits/socket.h:348: SO_RCVTIMEO = 0x1006, /* Receive timeout. */ bits/socket.h:349:#define SO_RCVTIMEO SO_RCVTIMEO sysdeps/unix/sysv/linux/arc/bits/socket-constants.h:33:#define SO_RCVTIMEO 66 sysdeps/unix/sysv/linux/bits/socket-constants.h:33:#define SO_RCVTIMEO 20 sysdeps/unix/sysv/linux/riscv/bits/socket-constants.h:34:# define SO_RCVTIMEO 66 sysdeps/unix/sysv/linux/riscv/bits/socket-constants.h:36:# define SO_RCVTIMEO 20 > Should the choice of values of these macros, for normal user programs, be > based on the time_t for the current compilation (as affected by _TIME_BITS > in future) or on the time_t for the default ABI in glibc? If that's a question for me, I'm afraid Its above my paygrade :-) > If the latter, > it would be a __TIMESIZE conditional in the header (that is, a conditional > based on __TIMESIZE == __SYSCALL_WORDSIZE, or using __WORDSIZE when > __SYSCALL_WORDSIZE is not defined, since the actual kernel conditional is > about whether using the same time_t size as kernel "long"). > If the > former, it might use __TIMESIZE right now, but that would need to change > when _TIME_BITS is supported to a different macro meaning the time_t size > for the current compilation. This approach seems similar to what Alistair has done for generic/bits/typesizes.h shall we pursue it ? > >> diff --git a/sysdeps/unix/sysv/linux/arc/jmp_buf-macros.h b/sysdeps/unix/sysv/linux/arc/jmp_buf-macros.h >> new file mode 100644 >> index 000000000000..6c129398483a >> --- /dev/null >> +++ b/sysdeps/unix/sysv/linux/arc/jmp_buf-macros.h >> @@ -0,0 +1,6 @@ >> +#define JMP_BUF_SIZE (32 + 1 + 64/(8 * sizeof (unsigned long int))) * sizeof (unsigned long int) >> +#define SIGJMP_BUF_SIZE (32 + 1 + 64/(8 * sizeof (unsigned long int))) * sizeof (unsigned long int) > > Missing spaces around '/'. Fixed. >> +/* The minimum supported kernel version for ARC is 3.9, >> + guaranteeing many kernel features. */ > > But actually it's 5.1 at present. Right, fixed that. >> +/* All syscall handler come here to avoid generated code bloat due to >> + GOT reference to errno_location or it's equivalent. */ >> +int >> +__syscall_error(int err_no) > > Missing space before '(' Oops, fixed now. > >> +{ >> + __set_errno(-err_no); > > Likewise. Fixed. _______________________________________________ linux-snps-arc mailing list linux-snps-arc@xxxxxxxxxxxxxxxxxxx http://lists.infradead.org/mailman/listinfo/linux-snps-arc