From: Dmitry V. Levin Date: Sun, 12 May 2019 22:45:45 +0000 (+0000) Subject: Implement and use new parsers of nanosleep syscall X-Git-Tag: v5.1~35 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=e09c9c54de8a9014f6f4f6dc22a4289bcadc2cd0;p=strace Implement and use new parsers of nanosleep syscall * time.c (SYS_FUNC(nanosleep)): Remove. [HAVE_ARCH_TIME32_SYSCALLS || HAVE_ARCH_OLD_TIME64_SYSCALLS] (do_nanosleep): New function. [HAVE_ARCH_TIME32_SYSCALLS] (SYS_FUNC(nanosleep_time32)): Likewise. [HAVE_ARCH_OLD_TIME64_SYSCALLS] (SYS_FUNC(nanosleep_time64)): Likewise. * linux/64/syscallent.h: Replace SEN(nanosleep) with SEN(nanosleep_time64). * linux/alpha/syscallent.h: Likewise. * linux/ia64/syscallent.h: Likewise. * linux/mips/syscallent-n64.h: Likewise. * linux/powerpc64/syscallent.h: Likewise. * linux/s390x/syscallent.h: Likewise. * linux/sh64/syscallent.h: Likewise. * linux/sparc64/syscallent.h: Likewise. * linux/x32/syscallent.h: Likewise. * linux/x86_64/syscallent.h: Likewise. * linux/32/syscallent.h: Replace SEN(nanosleep) with SEN(nanosleep_time32). * linux/arm/syscallent.h: Likewise. * linux/avr32/syscallent.h: Likewise. * linux/bfin/syscallent.h: Likewise. * linux/hppa/syscallent.h: Likewise. * linux/i386/syscallent.h: Likewise. * linux/m68k/syscallent.h: Likewise. * linux/microblaze/syscallent.h: Likewise. * linux/mips/syscallent-n32.h: Likewise. * linux/mips/syscallent-o32.h: Likewise. * linux/powerpc/syscallent.h: Likewise. * linux/s390/syscallent.h: Likewise. * linux/sh/syscallent.h: Likewise. * linux/sparc/syscallent.h: Likewise. * linux/xtensa/syscallent.h: Likewise. --- diff --git a/linux/32/syscallent.h b/linux/32/syscallent.h index 7f0e9c9b..4d2a17fc 100644 --- a/linux/32/syscallent.h +++ b/linux/32/syscallent.h @@ -113,7 +113,7 @@ [ 98] = { 6, 0, SEN(futex_time32), "futex" }, [ 99] = { 2, 0, SEN(set_robust_list), "set_robust_list" }, [100] = { 3, 0, SEN(get_robust_list), "get_robust_list" }, -[101] = { 2, 0, SEN(nanosleep), "nanosleep" }, +[101] = { 2, 0, SEN(nanosleep_time32), "nanosleep" }, [102] = { 2, 0, SEN(getitimer), "getitimer" }, [103] = { 3, 0, SEN(setitimer), "setitimer" }, [104] = { 4, 0, SEN(kexec_load), "kexec_load" }, diff --git a/linux/64/syscallent.h b/linux/64/syscallent.h index bc8b29fc..057d9b3a 100644 --- a/linux/64/syscallent.h +++ b/linux/64/syscallent.h @@ -106,7 +106,7 @@ [ 98] = { 6, 0, SEN(futex_time64), "futex" }, [ 99] = { 2, 0, SEN(set_robust_list), "set_robust_list" }, [100] = { 3, 0, SEN(get_robust_list), "get_robust_list" }, -[101] = { 2, 0, SEN(nanosleep), "nanosleep" }, +[101] = { 2, 0, SEN(nanosleep_time64), "nanosleep" }, [102] = { 2, 0, SEN(getitimer), "getitimer" }, [103] = { 3, 0, SEN(setitimer), "setitimer" }, [104] = { 4, 0, SEN(kexec_load), "kexec_load" }, diff --git a/linux/alpha/syscallent.h b/linux/alpha/syscallent.h index 6af9240c..42e6e3a4 100644 --- a/linux/alpha/syscallent.h +++ b/linux/alpha/syscallent.h @@ -284,7 +284,7 @@ [337] = { 2, 0, SEN(sched_rr_get_interval_time64),"sched_rr_get_interval"}, [338] = { 5, 0, SEN(afs_syscall), "afs_syscall" }, /* not implemented */ [339] = { 1, 0, SEN(uname), "uname" }, -[340] = { 2, 0, SEN(nanosleep), "nanosleep" }, +[340] = { 2, 0, SEN(nanosleep_time64), "nanosleep" }, [341] = { 5, TM|SI, SEN(mremap), "mremap" }, [342] = { 3, 0, SEN(nfsservctl), "nfsservctl" }, /* not implemented */ [343] = { 3, 0, SEN(setresuid), "setresuid" }, diff --git a/linux/arm/syscallent.h b/linux/arm/syscallent.h index 50b19c61..7949c4e9 100644 --- a/linux/arm/syscallent.h +++ b/linux/arm/syscallent.h @@ -169,7 +169,7 @@ [159] = { 1, 0, SEN(sched_get_priority_max), "sched_get_priority_max"}, [160] = { 1, 0, SEN(sched_get_priority_min), "sched_get_priority_min"}, [161] = { 2, 0, SEN(sched_rr_get_interval_time32),"sched_rr_get_interval"}, -[162] = { 2, 0, SEN(nanosleep), "nanosleep" }, +[162] = { 2, 0, SEN(nanosleep_time32), "nanosleep" }, [163] = { 5, TM|SI, SEN(mremap), "mremap" }, [164] = { 3, 0, SEN(setresuid16), "setresuid" }, [165] = { 3, 0, SEN(getresuid16), "getresuid" }, diff --git a/linux/avr32/syscallent.h b/linux/avr32/syscallent.h index 1c38aa89..e7aa0cac 100644 --- a/linux/avr32/syscallent.h +++ b/linux/avr32/syscallent.h @@ -149,7 +149,7 @@ [140] = { 1, 0, SEN(sched_get_priority_max), "sched_get_priority_max"}, [141] = { 1, 0, SEN(sched_get_priority_min), "sched_get_priority_min"}, [142] = { 2, 0, SEN(sched_rr_get_interval_time32),"sched_rr_get_interval"}, -[143] = { 2, 0, SEN(nanosleep), "nanosleep" }, +[143] = { 2, 0, SEN(nanosleep_time32), "nanosleep" }, [144] = { 3, TD, SEN(poll_time32), "poll" }, [145] = { 3, 0, SEN(nfsservctl), "nfsservctl" }, [146] = { 3, 0, SEN(setresgid), "setresgid" }, diff --git a/linux/bfin/syscallent.h b/linux/bfin/syscallent.h index feea293d..4d6cf64c 100644 --- a/linux/bfin/syscallent.h +++ b/linux/bfin/syscallent.h @@ -169,7 +169,7 @@ [159] = { 1, 0, SEN(sched_get_priority_max), "sched_get_priority_max"}, [160] = { 1, 0, SEN(sched_get_priority_min), "sched_get_priority_min"}, [161] = { 2, 0, SEN(sched_rr_get_interval_time32),"sched_rr_get_interval"}, -[162] = { 2, 0, SEN(nanosleep), "nanosleep" }, +[162] = { 2, 0, SEN(nanosleep_time32), "nanosleep" }, [163] = { 5, TM|SI, SEN(mremap), "mremap" }, [164] = { 3, 0, SEN(setresuid16), "setresuid" }, [165] = { 3, 0, SEN(getresuid16), "getresuid" }, diff --git a/linux/hppa/syscallent.h b/linux/hppa/syscallent.h index 78efa407..d073284a 100644 --- a/linux/hppa/syscallent.h +++ b/linux/hppa/syscallent.h @@ -165,7 +165,7 @@ [159] = { 1, 0, SEN(sched_get_priority_max), "sched_get_priority_max"}, [160] = { 1, 0, SEN(sched_get_priority_min), "sched_get_priority_min"}, [161] = { 2, 0, SEN(sched_rr_get_interval_time32),"sched_rr_get_interval"}, -[162] = { 2, 0, SEN(nanosleep), "nanosleep" }, +[162] = { 2, 0, SEN(nanosleep_time32), "nanosleep" }, [163] = { 5, TM|SI, SEN(mremap), "mremap" }, [164] = { 3, 0, SEN(setresuid), "setresuid" }, [165] = { 3, 0, SEN(getresuid), "getresuid" }, diff --git a/linux/i386/syscallent.h b/linux/i386/syscallent.h index ccea1c1a..3f2d2d9c 100644 --- a/linux/i386/syscallent.h +++ b/linux/i386/syscallent.h @@ -169,7 +169,7 @@ [159] = { 1, 0, SEN(sched_get_priority_max), "sched_get_priority_max"}, [160] = { 1, 0, SEN(sched_get_priority_min), "sched_get_priority_min"}, [161] = { 2, 0, SEN(sched_rr_get_interval_time32),"sched_rr_get_interval"}, -[162] = { 2, 0, SEN(nanosleep), "nanosleep" }, +[162] = { 2, 0, SEN(nanosleep_time32), "nanosleep" }, [163] = { 5, TM|SI, SEN(mremap), "mremap" }, [164] = { 3, 0, SEN(setresuid16), "setresuid" }, [165] = { 3, 0, SEN(getresuid16), "getresuid" }, diff --git a/linux/ia64/syscallent.h b/linux/ia64/syscallent.h index 5bae4981..893e0b5c 100644 --- a/linux/ia64/syscallent.h +++ b/linux/ia64/syscallent.h @@ -151,7 +151,7 @@ [1024 + 141] = { 1, 0, SEN(sched_get_priority_max), "sched_get_priority_max"}, [1024 + 142] = { 1, 0, SEN(sched_get_priority_min), "sched_get_priority_min"}, [1024 + 143] = { 2, 0, SEN(sched_rr_get_interval_time64),"sched_rr_get_interval"}, -[1024 + 144] = { 2, 0, SEN(nanosleep), "nanosleep" }, +[1024 + 144] = { 2, 0, SEN(nanosleep_time64), "nanosleep" }, [1024 + 145] = { 3, 0, SEN(nfsservctl), "nfsservctl" }, [1024 + 146] = { 5, 0, SEN(prctl), "prctl" }, [1024 + 147] = { 0, PU|NF, SEN(getpagesize), "getpagesize" }, diff --git a/linux/m68k/syscallent.h b/linux/m68k/syscallent.h index 41339f24..e866f104 100644 --- a/linux/m68k/syscallent.h +++ b/linux/m68k/syscallent.h @@ -169,7 +169,7 @@ [159] = { 1, 0, SEN(sched_get_priority_max), "sched_get_priority_max"}, [160] = { 1, 0, SEN(sched_get_priority_min), "sched_get_priority_min"}, [161] = { 2, 0, SEN(sched_rr_get_interval_time32),"sched_rr_get_interval"}, -[162] = { 2, 0, SEN(nanosleep), "nanosleep" }, +[162] = { 2, 0, SEN(nanosleep_time32), "nanosleep" }, [163] = { 5, TM|SI, SEN(mremap), "mremap" }, [164] = { 3, 0, SEN(setresuid16), "setresuid" }, [165] = { 3, 0, SEN(getresuid16), "getresuid" }, diff --git a/linux/microblaze/syscallent.h b/linux/microblaze/syscallent.h index b2f6d533..f43e4d18 100644 --- a/linux/microblaze/syscallent.h +++ b/linux/microblaze/syscallent.h @@ -169,7 +169,7 @@ [159] = { 1, 0, SEN(sched_get_priority_max), "sched_get_priority_max"}, [160] = { 1, 0, SEN(sched_get_priority_min), "sched_get_priority_min"}, [161] = { 2, 0, SEN(sched_rr_get_interval_time32),"sched_rr_get_interval"}, -[162] = { 2, 0, SEN(nanosleep), "nanosleep" }, +[162] = { 2, 0, SEN(nanosleep_time32), "nanosleep" }, [163] = { 5, TM|SI, SEN(mremap), "mremap" }, [164] = { 3, 0, SEN(setresuid16), "setresuid" }, [165] = { 3, 0, SEN(getresuid16), "getresuid" }, diff --git a/linux/mips/syscallent-n32.h b/linux/mips/syscallent-n32.h index 2516b655..627eeed0 100644 --- a/linux/mips/syscallent-n32.h +++ b/linux/mips/syscallent-n32.h @@ -41,7 +41,7 @@ [6031] = { 1, TD, SEN(dup), "dup" }, [6032] = { 2, TD, SEN(dup2), "dup2" }, [6033] = { 0, TS, SEN(pause), "pause" }, -[6034] = { 2, 0, SEN(nanosleep), "nanosleep" }, +[6034] = { 2, 0, SEN(nanosleep_time32), "nanosleep" }, [6035] = { 2, 0, SEN(getitimer), "getitimer" }, [6036] = { 3, 0, SEN(setitimer), "setitimer" }, [6037] = { 1, 0, SEN(alarm), "alarm" }, diff --git a/linux/mips/syscallent-n64.h b/linux/mips/syscallent-n64.h index 6bdfbf89..93ae373c 100644 --- a/linux/mips/syscallent-n64.h +++ b/linux/mips/syscallent-n64.h @@ -41,7 +41,7 @@ [5031] = { 1, TD, SEN(dup), "dup" }, [5032] = { 2, TD, SEN(dup2), "dup2" }, [5033] = { 0, TS, SEN(pause), "pause" }, -[5034] = { 2, 0, SEN(nanosleep), "nanosleep" }, +[5034] = { 2, 0, SEN(nanosleep_time64), "nanosleep" }, [5035] = { 2, 0, SEN(getitimer), "getitimer" }, [5036] = { 3, 0, SEN(setitimer), "setitimer" }, [5037] = { 1, 0, SEN(alarm), "alarm" }, diff --git a/linux/mips/syscallent-o32.h b/linux/mips/syscallent-o32.h index a29649ae..55c0d954 100644 --- a/linux/mips/syscallent-o32.h +++ b/linux/mips/syscallent-o32.h @@ -174,7 +174,7 @@ [4163] = { 1, 0, SEN(sched_get_priority_max), "sched_get_priority_max"}, [4164] = { 1, 0, SEN(sched_get_priority_min), "sched_get_priority_min"}, [4165] = { 2, 0, SEN(sched_rr_get_interval_time32),"sched_rr_get_interval"}, -[4166] = { 2, 0, SEN(nanosleep), "nanosleep" }, +[4166] = { 2, 0, SEN(nanosleep_time32), "nanosleep" }, [4167] = { 5, TM|SI, SEN(mremap), "mremap" }, [4168] = { 3, TN, SEN(accept), "accept" }, [4169] = { 3, TN, SEN(bind), "bind" }, diff --git a/linux/powerpc/syscallent.h b/linux/powerpc/syscallent.h index 627117c6..10a07c5c 100644 --- a/linux/powerpc/syscallent.h +++ b/linux/powerpc/syscallent.h @@ -169,7 +169,7 @@ [159] = { 1, 0, SEN(sched_get_priority_max), "sched_get_priority_max"}, [160] = { 1, 0, SEN(sched_get_priority_min), "sched_get_priority_min"}, [161] = { 2, 0, SEN(sched_rr_get_interval_time32),"sched_rr_get_interval"}, -[162] = { 2, 0, SEN(nanosleep), "nanosleep" }, +[162] = { 2, 0, SEN(nanosleep_time32), "nanosleep" }, [163] = { 5, TM|SI, SEN(mremap), "mremap" }, [164] = { 3, 0, SEN(setresuid), "setresuid" }, [165] = { 3, 0, SEN(getresuid), "getresuid" }, diff --git a/linux/powerpc64/syscallent.h b/linux/powerpc64/syscallent.h index 12e2368a..0ddb5b9f 100644 --- a/linux/powerpc64/syscallent.h +++ b/linux/powerpc64/syscallent.h @@ -169,7 +169,7 @@ [159] = { 1, 0, SEN(sched_get_priority_max), "sched_get_priority_max"}, [160] = { 1, 0, SEN(sched_get_priority_min), "sched_get_priority_min"}, [161] = { 2, 0, SEN(sched_rr_get_interval_time64),"sched_rr_get_interval"}, -[162] = { 2, 0, SEN(nanosleep), "nanosleep" }, +[162] = { 2, 0, SEN(nanosleep_time64), "nanosleep" }, [163] = { 5, TM|SI, SEN(mremap), "mremap" }, [164] = { 3, 0, SEN(setresuid), "setresuid" }, [165] = { 3, 0, SEN(getresuid), "getresuid" }, diff --git a/linux/s390/syscallent.h b/linux/s390/syscallent.h index 2168bcdc..bff4a6d3 100644 --- a/linux/s390/syscallent.h +++ b/linux/s390/syscallent.h @@ -171,7 +171,7 @@ [159] = { 1, 0, SEN(sched_get_priority_max), "sched_get_priority_max"}, [160] = { 1, 0, SEN(sched_get_priority_min), "sched_get_priority_min"}, [161] = { 2, 0, SEN(sched_rr_get_interval_time32),"sched_rr_get_interval"}, -[162] = { 2, 0, SEN(nanosleep), "nanosleep" }, +[162] = { 2, 0, SEN(nanosleep_time32), "nanosleep" }, [163] = { 5, TM|SI, SEN(mremap), "mremap" }, [164] = { 3, 0, SEN(setresuid16), "setresuid" }, [165] = { 3, 0, SEN(getresuid16), "getresuid" }, diff --git a/linux/s390x/syscallent.h b/linux/s390x/syscallent.h index 37f4e23d..0d3ab2bc 100644 --- a/linux/s390x/syscallent.h +++ b/linux/s390x/syscallent.h @@ -163,7 +163,7 @@ [159] = { 1, 0, SEN(sched_get_priority_max), "sched_get_priority_max"}, [160] = { 1, 0, SEN(sched_get_priority_min), "sched_get_priority_min"}, [161] = { 2, 0, SEN(sched_rr_get_interval_time64),"sched_rr_get_interval"}, -[162] = { 2, 0, SEN(nanosleep), "nanosleep" }, +[162] = { 2, 0, SEN(nanosleep_time64), "nanosleep" }, [163] = { 5, TM|SI, SEN(mremap), "mremap" }, [164 ... 166] = { }, [167] = { 5, 0, SEN(query_module), "query_module" }, diff --git a/linux/sh/syscallent.h b/linux/sh/syscallent.h index b039fb7a..ac718a0b 100644 --- a/linux/sh/syscallent.h +++ b/linux/sh/syscallent.h @@ -171,7 +171,7 @@ [159] = { 1, 0, SEN(sched_get_priority_max), "sched_get_priority_max"}, [160] = { 1, 0, SEN(sched_get_priority_min), "sched_get_priority_min"}, [161] = { 2, 0, SEN(sched_rr_get_interval_time32),"sched_rr_get_interval"}, -[162] = { 2, 0, SEN(nanosleep), "nanosleep" }, +[162] = { 2, 0, SEN(nanosleep_time32), "nanosleep" }, [163] = { 5, TM|SI, SEN(mremap), "mremap" }, [164] = { 3, 0, SEN(setresuid16), "setresuid" }, [165] = { 3, 0, SEN(getresuid16), "getresuid" }, diff --git a/linux/sh64/syscallent.h b/linux/sh64/syscallent.h index ab9e61e9..517f1ce0 100644 --- a/linux/sh64/syscallent.h +++ b/linux/sh64/syscallent.h @@ -169,7 +169,7 @@ [159] = { 1, 0, SEN(sched_get_priority_max), "sched_get_priority_max"}, [160] = { 1, 0, SEN(sched_get_priority_min), "sched_get_priority_min"}, [161] = { 2, 0, SEN(sched_rr_get_interval_time64),"sched_rr_get_interval"}, -[162] = { 2, 0, SEN(nanosleep), "nanosleep" }, +[162] = { 2, 0, SEN(nanosleep_time64), "nanosleep" }, [163] = { 5, TM|SI, SEN(mremap), "mremap" }, [164] = { 3, 0, SEN(setresuid16), "setresuid" }, [165] = { 3, 0, SEN(getresuid16), "getresuid" }, diff --git a/linux/sparc/syscallent.h b/linux/sparc/syscallent.h index 7baf6ff8..3d9ac03d 100644 --- a/linux/sparc/syscallent.h +++ b/linux/sparc/syscallent.h @@ -254,7 +254,7 @@ [246] = { 1, 0, SEN(sched_get_priority_max), "sched_get_priority_max"}, [247] = { 1, 0, SEN(sched_get_priority_min), "sched_get_priority_min"}, [248] = { 2, 0, SEN(sched_rr_get_interval_time32),"sched_rr_get_interval"}, -[249] = { 2, 0, SEN(nanosleep), "nanosleep" }, +[249] = { 2, 0, SEN(nanosleep_time32), "nanosleep" }, [250] = { 5, TM|SI, SEN(mremap), "mremap" }, [251] = { 1, 0, SEN(sysctl), "_sysctl" }, [252] = { 1, 0, SEN(getsid), "getsid" }, diff --git a/linux/sparc64/syscallent.h b/linux/sparc64/syscallent.h index 917b0ceb..e7c6686a 100644 --- a/linux/sparc64/syscallent.h +++ b/linux/sparc64/syscallent.h @@ -252,7 +252,7 @@ [246] = { 1, 0, SEN(sched_get_priority_max), "sched_get_priority_max"}, [247] = { 1, 0, SEN(sched_get_priority_min), "sched_get_priority_min"}, [248] = { 2, 0, SEN(sched_rr_get_interval_time64),"sched_rr_get_interval"}, -[249] = { 2, 0, SEN(nanosleep), "nanosleep" }, +[249] = { 2, 0, SEN(nanosleep_time64), "nanosleep" }, [250] = { 5, TM|SI, SEN(mremap), "mremap" }, [251] = { 1, 0, SEN(sysctl), "_sysctl" }, [252] = { 1, 0, SEN(getsid), "getsid" }, diff --git a/linux/x32/syscallent.h b/linux/x32/syscallent.h index 63f10671..07b3274a 100644 --- a/linux/x32/syscallent.h +++ b/linux/x32/syscallent.h @@ -40,7 +40,7 @@ [ 32] = { 1, TD, SEN(dup), "dup" }, [ 33] = { 2, TD, SEN(dup2), "dup2" }, [ 34] = { 0, TS, SEN(pause), "pause" }, -[ 35] = { 2, 0, SEN(nanosleep), "nanosleep" }, +[ 35] = { 2, 0, SEN(nanosleep_time64), "nanosleep" }, [ 36] = { 2, 0, SEN(getitimer), "getitimer" }, [ 37] = { 1, 0, SEN(alarm), "alarm" }, [ 38] = { 3, 0, SEN(setitimer), "setitimer" }, diff --git a/linux/x86_64/syscallent.h b/linux/x86_64/syscallent.h index 3d33bb57..1be7d3ac 100644 --- a/linux/x86_64/syscallent.h +++ b/linux/x86_64/syscallent.h @@ -40,7 +40,7 @@ [ 32] = { 1, TD, SEN(dup), "dup" }, [ 33] = { 2, TD, SEN(dup2), "dup2" }, [ 34] = { 0, TS, SEN(pause), "pause" }, -[ 35] = { 2, 0, SEN(nanosleep), "nanosleep" }, +[ 35] = { 2, 0, SEN(nanosleep_time64), "nanosleep" }, [ 36] = { 2, 0, SEN(getitimer), "getitimer" }, [ 37] = { 1, 0, SEN(alarm), "alarm" }, [ 38] = { 3, 0, SEN(setitimer), "setitimer" }, diff --git a/linux/xtensa/syscallent.h b/linux/xtensa/syscallent.h index 8af81934..b82ff048 100644 --- a/linux/xtensa/syscallent.h +++ b/linux/xtensa/syscallent.h @@ -194,7 +194,7 @@ [192] = { 2, 0, SEN(gettimeofday), "gettimeofday" }, [193] = { 2, 0, SEN(settimeofday), "settimeofday" }, [194] = { 1, 0, SEN(adjtimex32), "adjtimex" }, -[195] = { 2, 0, SEN(nanosleep), "nanosleep" }, +[195] = { 2, 0, SEN(nanosleep_time32), "nanosleep" }, [196] = { 2, 0, SEN(getgroups), "getgroups" }, [197] = { 2, 0, SEN(setgroups), "setgroups" }, [198] = { 2, 0, SEN(sethostname), "sethostname" }, diff --git a/time.c b/time.c index fba56e36..634bcaf0 100644 --- a/time.c +++ b/time.c @@ -67,10 +67,12 @@ SYS_FUNC(osf_settimeofday) } #endif -SYS_FUNC(nanosleep) +#if HAVE_ARCH_TIME32_SYSCALLS || HAVE_ARCH_OLD_TIME64_SYSCALLS +static int +do_nanosleep(struct tcb *const tcp, const print_obj_by_addr_fn print_ts) { if (entering(tcp)) { - print_timespec(tcp, tcp->u_arg[0]); + print_ts(tcp, tcp->u_arg[0]); tprints(", "); } else { @@ -82,7 +84,7 @@ SYS_FUNC(nanosleep) */ if (is_erestart(tcp)) { temporarily_clear_syserror(tcp); - print_timespec(tcp, tcp->u_arg[1]); + print_ts(tcp, tcp->u_arg[1]); restore_cleared_syserror(tcp); } else { printaddr(tcp->u_arg[1]); @@ -90,6 +92,21 @@ SYS_FUNC(nanosleep) } return 0; } +#endif /* HAVE_ARCH_TIME32_SYSCALLS || HAVE_ARCH_OLD_TIME64_SYSCALLS */ + +#if HAVE_ARCH_TIME32_SYSCALLS +SYS_FUNC(nanosleep_time32) +{ + return do_nanosleep(tcp, print_timespec32); +} +#endif + +#if HAVE_ARCH_OLD_TIME64_SYSCALLS +SYS_FUNC(nanosleep_time64) +{ + return do_nanosleep(tcp, print_timespec64); +} +#endif #include "xlat/itimer_which.h"