a3310c0397
The current api from safe_syscall_base() is to return -errno, which is the interface provided by *some* linux kernel abis. The wrapper macro, safe_syscall(), detects error, stores into errno, and returns -1, to match the api of the system syscall(). For those kernel abis that do not return -errno natively, this leads to double syscall error detection. E.g. Linux ppc64, which sets the SO flag for error. Simplify the usage from C by moving the error detection into assembly, and usage from assembly by providing a C helper with which to set errno. Reviewed-by: Warner Losh <imp@bsdimp.com> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
43 lines
780 B
Meson
43 lines
780 B
Meson
if not have_linux_user
|
|
subdir_done()
|
|
endif
|
|
|
|
linux_user_ss.add(files(
|
|
'elfload.c',
|
|
'exit.c',
|
|
'fd-trans.c',
|
|
'linuxload.c',
|
|
'main.c',
|
|
'mmap.c',
|
|
'safe-syscall.S',
|
|
'safe-syscall-error.c',
|
|
'signal.c',
|
|
'strace.c',
|
|
'syscall.c',
|
|
'uaccess.c',
|
|
'uname.c',
|
|
))
|
|
linux_user_ss.add(rt)
|
|
|
|
linux_user_ss.add(when: 'TARGET_HAS_BFLT', if_true: files('flatload.c'))
|
|
linux_user_ss.add(when: 'TARGET_I386', if_true: files('vm86.c'))
|
|
linux_user_ss.add(when: 'CONFIG_ARM_COMPATIBLE_SEMIHOSTING', if_true: files('semihost.c'))
|
|
|
|
|
|
syscall_nr_generators = {}
|
|
|
|
subdir('alpha')
|
|
subdir('arm')
|
|
subdir('hppa')
|
|
subdir('i386')
|
|
subdir('m68k')
|
|
subdir('microblaze')
|
|
subdir('mips64')
|
|
subdir('mips')
|
|
subdir('ppc')
|
|
subdir('s390x')
|
|
subdir('sh4')
|
|
subdir('sparc')
|
|
subdir('x86_64')
|
|
subdir('xtensa')
|