Fixes hang at the syscall ppoll_time64 by handling it same as ppoll. The former is the year-2038-safe variant of the latter, that allows a wider field for timestamp, as the year 2038 will see a unix timestamp greater than 2^31.
Adds new syscalls up to Linux kernel 5.10.46.
Adds a warning for new syscalls other than ppoll_time64 that are not handled yet and have a similarly named variant that needs special handling. E.g. SYS_clone has special handling, so added a warning for SYS_clone3.
Also upgrades Ubuntu version for the x86-32 bit GA CI to 20.04.
Issue: #5131 (closed) Fixes: #4953 (closed)
Activity
requested review from @derekbruening
356 358 # define __NR_statx 332 357 359 # define __NR_io_pgetevents 333 358 360 # define __NR_rseq 334 361 # define __NR_pidfd_send_signal 424 __NR_pidfd_send_signal
onwards syscall number assignments seem to align on 32- and 64-bit, and the space is perhaps for arch-specific syscalls. https://github.com/torvalds/linux/commit/0d6040d4681735dfc47565de288525de405a5c99
5019 5034 # endif 5020 5035 case SYS_readlinkat: return !DYNAMO_OPTION(early_inject); 5021 5036 #endif 5037 #ifdef SYS_openat2 5038 case SYS_openat2: return IS_STRING_OPTION_EMPTY(xarch_root); The xarch_root path manipulation seems to be very targeted to what the loader uses: it is only looking at openat and not at open. So if the loader switched to using open it would also find the wrong lib w/o a warning: but these are easy errors to find since you'd get the wrong arch and see the error right away; plus these are common syscalls so we don't want to intercept (and avoid inlining) if we can avoid it.
requested review from @derekbruening
5035 5035 case SYS_readlinkat: return !DYNAMO_OPTION(early_inject); 5036 5036 #endif 5037 5037 #ifdef SYS_openat2 5038 case SYS_openat2: return IS_STRING_OPTION_EMPTY(xarch_root); 5038 case SYS_openat2: 5039 if (!IS_STRING_OPTION_EMPTY(xarch_root)) 5040 return false; 5041 SYSLOG_INTERNAL_WARNING_ONCE( 5042 "WARNING i#5131: possibly unhandled system call openat2");