Follow @Openwall on Twitter for new release announcements and other news
[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Date: Sun, 18 Jun 2017 14:00:07 +0200
From: Szabolcs Nagy <nsz@...t70.net>
To: musl@...ts.openwall.com
Subject: Re: syscall table discrepancies

* Szabolcs Nagy <nsz@...t70.net> [2017-02-18 03:41:29 +0100]:
> * Rich Felker <dalias@...c.org> [2017-02-16 21:00:44 -0500]:
> > On Thu, Feb 16, 2017 at 08:51:47PM -0500, Rich Felker wrote:
> > > arm
> > > +o__NR_arm_fadvise64_64 270
> > > +o__NR_arm_sync_file_range 341
> > > -o__NR_fadvise64_64 270
> > 
> > Also a naming matter and one I'd probably rather not change, though
> > I'm not sure. It looks like powerpc has the same nonstandard arg order
> > for fadvise but doesn't use a different name, so it's not really
> > helpful for arm to use a different name here.
> > 
> > Not sure about sync_file_range; it might suggest we have a bug.
> 
> it's just an alias, i added the arm names, kept the normal name
> 
> > > i386
> > > -o__NR_madvise1 219
> > 
> > I think this is cruft that was removed...?
> 
> linux removed it, i removed it too
> 
> > > or1k
> > > -o__NR__llseek 62
> > > +o__NR_llseek 62
> > 
> > This looks like a bug that probably has lseek broken on or1k with
> > files larger than 2GB... I think the #else case in lseek.c should
> 
> it's a naming issue, i added the new name, but kept the old one
> for now.
> 
> __NR_lseek would be a bug
> __NR__llseek is the old name of the syscall.
> __NR_llseek is how new 32bit arches call it.
> 
> > probably be tweaked to produce a compile-time error if syscall_arg_t
> > is 32-bit. That would also catch musl's equivalent of this n32 bug
> > which remains unfixed:
> > 
> > https://sourceware.org/ml/libc-alpha/2017-01/msg00074.html
> > 
> > > powerpc
> > > -o__NR_getresgid32 170
> > > -o__NR_getresuid32 165
> > > -o__NR_setresgid32 169
> > > -o__NR_setresuid32 164
> > 
> > These can probably be safely removed; I suspect they were cruft from
> > before the general renaming in src/internal/syscall.h was in place.
> > 
> > > -o__NR_timerfd 306
> > 
> > Also a leftover/legacy name, I presume?
> 
> i dropped these.

> >From 8057a8d5f5e6e53a81b9e485ed36b746f43efd69 Mon Sep 17 00:00:00 2001
> From: Szabolcs Nagy <nsz@...t70.net>
> Date: Sat, 18 Feb 2017 00:50:09 +0000
> Subject: [PATCH] make syscall.h consistent with linux
> 
> most of the found naming differences don't matter to musl, because
> internally it unifies the syscall names that vary across targets,
> but for external code the names should match the kernel uapi.
> 
> aarch64:
> 	__NR_fstatat is called __NR_newfstatat in linux.
> 	__NR_or1k_atomic got mistakenly copied from or1k.
> arm:
> 	__NR_arm_sync_file_range is an alias for __NR_sync_file_range2
> 	__NR_fadvise64_64 is called __NR_arm_fadvise64_64 in linux,
> 	the old non-arm name is kept too, it should not cause issues.
> 	(powerpc has similar nonstandard fadvise and it uses the
> 	normal name.)
> i386:
> 	__NR_madvise1 was removed from linux in commit
> 	303395ac3bf3e2cb488435537d416bc840438fcb 2011-11-11
> microblaze:
> 	__NR_fadvise, __NR_fstatat, __NR_pread, __NR_pwrite
> 	had different name in linux.
> mips:
> 	__NR_fadvise, __NR_fstatat, __NR_pread, __NR_pwrite, __NR_select
> 	had different name in linux.
> mipsn32:
> 	__NR_fstatat is called __NR_newfstatat in linux.
> or1k:
> 	__NR__llseek is called __NR_llseek in linux.
> 	the old name is kept too because that's the name musl uses
> 	internally.
> powerpc:
> 	__NR_{get,set}res{gid,uid}32 was never present in powerpc linux.
> 	__NR_timerfd was briefly defined in linux but then got renamed.
> ---

ping.

>  arch/aarch64/bits/syscall.h.in    |  3 +--
>  arch/arm/bits/syscall.h.in        |  2 ++
>  arch/i386/bits/syscall.h.in       |  1 -
>  arch/microblaze/bits/syscall.h.in |  8 ++++----
>  arch/mips/bits/syscall.h.in       | 10 +++++-----
>  arch/mipsn32/bits/syscall.h.in    |  2 +-
>  arch/or1k/bits/syscall.h.in       |  1 +
>  arch/powerpc/bits/syscall.h.in    |  5 -----
>  8 files changed, 14 insertions(+), 18 deletions(-)
> 
> diff --git a/arch/aarch64/bits/syscall.h.in b/arch/aarch64/bits/syscall.h.in
> index fd388eec..8b56afff 100644
> --- a/arch/aarch64/bits/syscall.h.in
> +++ b/arch/aarch64/bits/syscall.h.in
> @@ -77,7 +77,7 @@
>  #define __NR_splice 76
>  #define __NR_tee 77
>  #define __NR_readlinkat 78
> -#define __NR_fstatat 79
> +#define __NR_newfstatat 79
>  #define __NR_fstat 80
>  #define __NR_sync 81
>  #define __NR_fsync 82
> @@ -242,7 +242,6 @@
>  #define __NR_perf_event_open 241
>  #define __NR_accept4 242
>  #define __NR_recvmmsg 243
> -#define __NR_or1k_atomic 244
>  #define __NR_wait4 260
>  #define __NR_prlimit64 261
>  #define __NR_fanotify_init 262
> diff --git a/arch/arm/bits/syscall.h.in b/arch/arm/bits/syscall.h.in
> index 9b129b23..0096fe7c 100644
> --- a/arch/arm/bits/syscall.h.in
> +++ b/arch/arm/bits/syscall.h.in
> @@ -224,6 +224,7 @@
>  #define __NR_tgkill	268
>  #define __NR_utimes	269
>  #define __NR_fadvise64_64	270
> +#define __NR_arm_fadvise64_64	270
>  #define __NR_pciconfig_iobase	271
>  #define __NR_pciconfig_read	272
>  #define __NR_pciconfig_write	273
> @@ -295,6 +296,7 @@
>  #define __NR_get_robust_list	339
>  #define __NR_splice	340
>  #define __NR_sync_file_range2	341
> +#define __NR_arm_sync_file_range	341
>  #define __NR_tee	342
>  #define __NR_vmsplice	343
>  #define __NR_move_pages	344
> diff --git a/arch/i386/bits/syscall.h.in b/arch/i386/bits/syscall.h.in
> index 3a1d9270..1217f89a 100644
> --- a/arch/i386/bits/syscall.h.in
> +++ b/arch/i386/bits/syscall.h.in
> @@ -218,7 +218,6 @@
>  #define __NR_pivot_root		217
>  #define __NR_mincore		218
>  #define __NR_madvise		219
> -#define __NR_madvise1		219
>  #define __NR_getdents64		220
>  #define __NR_fcntl64		221
>  /* 223 is unused */
> diff --git a/arch/microblaze/bits/syscall.h.in b/arch/microblaze/bits/syscall.h.in
> index 109fcdeb..e5f928e3 100644
> --- a/arch/microblaze/bits/syscall.h.in
> +++ b/arch/microblaze/bits/syscall.h.in
> @@ -178,8 +178,8 @@
>  #define __NR_rt_sigtimedwait 177
>  #define __NR_rt_sigqueueinfo 178
>  #define __NR_rt_sigsuspend 179
> -#define __NR_pread 180
> -#define __NR_pwrite 181
> +#define __NR_pread64 180
> +#define __NR_pwrite64 181
>  #define __NR_chown 182
>  #define __NR_getcwd 183
>  #define __NR_capget 184
> @@ -246,7 +246,7 @@
>  #define __NR_io_getevents 247
>  #define __NR_io_submit 248
>  #define __NR_io_cancel 249
> -#define __NR_fadvise 250
> +#define __NR_fadvise64 250
>  #define __NR_exit_group 252
>  #define __NR_lookup_dcookie 253
>  #define __NR_epoll_create 254
> @@ -294,7 +294,7 @@
>  #define __NR_mknodat 297
>  #define __NR_fchownat 298
>  #define __NR_futimesat 299
> -#define __NR_fstatat 300
> +#define __NR_fstatat64 300
>  #define __NR_unlinkat 301
>  #define __NR_renameat 302
>  #define __NR_linkat 303
> diff --git a/arch/mips/bits/syscall.h.in b/arch/mips/bits/syscall.h.in
> index 6c9b3d8c..1a2147a7 100644
> --- a/arch/mips/bits/syscall.h.in
> +++ b/arch/mips/bits/syscall.h.in
> @@ -140,7 +140,7 @@
>  #define __NR_setfsgid                4139
>  #define __NR__llseek                 4140
>  #define __NR_getdents                4141
> -#define __NR_select                  4142
> +#define __NR__newselect              4142
>  #define __NR_flock                   4143
>  #define __NR_msync                   4144
>  #define __NR_readv                   4145
> @@ -198,8 +198,8 @@
>  #define __NR_rt_sigtimedwait         4197
>  #define __NR_rt_sigqueueinfo         4198
>  #define __NR_rt_sigsuspend           4199
> -#define __NR_pread                   4200
> -#define __NR_pwrite                  4201
> +#define __NR_pread64                 4200
> +#define __NR_pwrite64                4201
>  #define __NR_chown                   4202
>  #define __NR_getcwd                  4203
>  #define __NR_capget                  4204
> @@ -252,7 +252,7 @@
>  #define __NR_remap_file_pages        4251
>  #define __NR_set_tid_address         4252
>  #define __NR_restart_syscall         4253
> -#define __NR_fadvise                 4254
> +#define __NR_fadvise64               4254
>  #define __NR_statfs64                4255
>  #define __NR_fstatfs64               4256
>  #define __NR_timer_create            4257
> @@ -290,7 +290,7 @@
>  #define __NR_mknodat                 4290
>  #define __NR_fchownat                4291
>  #define __NR_futimesat               4292
> -#define __NR_fstatat                 4293
> +#define __NR_fstatat64               4293
>  #define __NR_unlinkat                4294
>  #define __NR_renameat                4295
>  #define __NR_linkat                  4296
> diff --git a/arch/mipsn32/bits/syscall.h.in b/arch/mipsn32/bits/syscall.h.in
> index d6b24e8f..cd843a76 100644
> --- a/arch/mipsn32/bits/syscall.h.in
> +++ b/arch/mipsn32/bits/syscall.h.in
> @@ -253,7 +253,7 @@
>  #define __NR_mknodat			6253
>  #define __NR_fchownat			6254
>  #define __NR_futimesat			6255
> -#define __NR_fstatat			6256
> +#define __NR_newfstatat			6256
>  #define __NR_unlinkat			6257
>  #define __NR_renameat			6258
>  #define __NR_linkat			6259
> diff --git a/arch/or1k/bits/syscall.h.in b/arch/or1k/bits/syscall.h.in
> index 89788a9d..54581fb4 100644
> --- a/arch/or1k/bits/syscall.h.in
> +++ b/arch/or1k/bits/syscall.h.in
> @@ -61,6 +61,7 @@
>  #define __NR_quotactl 60
>  #define __NR_getdents64 61
>  #define __NR__llseek 62
> +#define __NR_llseek 62
>  #define __NR_read 63
>  #define __NR_write 64
>  #define __NR_readv 65
> diff --git a/arch/powerpc/bits/syscall.h.in b/arch/powerpc/bits/syscall.h.in
> index 9d022321..35f7033e 100644
> --- a/arch/powerpc/bits/syscall.h.in
> +++ b/arch/powerpc/bits/syscall.h.in
> @@ -162,16 +162,12 @@
>  #define __NR_sched_rr_get_interval  161
>  #define __NR_nanosleep              162
>  #define __NR_mremap                 163
> -#define __NR_setresuid32            164
>  #define __NR_setresuid              164
> -#define __NR_getresuid32            165
>  #define __NR_getresuid              165
>  #define __NR_query_module           166
>  #define __NR_poll                   167
>  #define __NR_nfsservctl             168
> -#define __NR_setresgid32            169
>  #define __NR_setresgid              169
> -#define __NR_getresgid32            170
>  #define __NR_getresgid              170
>  #define __NR_prctl                  171
>  #define __NR_rt_sigreturn           172
> @@ -306,7 +302,6 @@
>  #define __NR_epoll_pwait	303
>  #define __NR_utimensat		304
>  #define __NR_signalfd		305
> -#define __NR_timerfd		306
>  #define __NR_timerfd_create     306
>  #define __NR_eventfd		307
>  #define __NR_sync_file_range2	308
> -- 
> 2.11.0
> 

Powered by blists - more mailing lists

Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.