qemu-arm
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH 12/19] block: Update block to compile with Emscripten


From: Kohei Tokunaga
Subject: Re: [PATCH 12/19] block: Update block to compile with Emscripten
Date: Thu, 17 Apr 2025 18:32:17 +0900


Hi Philippe and Richard, thank you for the feedback.

> Actually what about checking the symbol presence in meson?
> Something like (untested):
>
> -- >8 --
> diff --git a/meson.build b/meson.build
> index b18c46d16a2..33185fdf315 100644
> --- a/meson.build
> +++ b/meson.build
> @@ -2654,3 +2654,2 @@ config_host_data.set('CONFIG_TIMERFD',
> cc.has_function('timerfd_create'))
>   config_host_data.set('CONFIG_GETLOADAVG', cc.has_function('getloadavg'))
> -config_host_data.set('HAVE_COPY_FILE_RANGE',
> cc.has_function('copy_file_range'))
>   config_host_data.set('HAVE_GETIFADDRS', cc.has_function('getifaddrs'))
> @@ -2756,2 +2755,6 @@ config_host_data.set('HAVE_UTMPX',
>
> +config_host_data.set('HAVE_COPY_FILE_RANGE', cc.links(gnu_source_prefix
> + '''
> +  #include <unistd.h>
> +  int main(void) { return copy_file_range(-1, NULL, -1, NULL, 0, 0); }'''))
>   config_host_data.set('CONFIG_EVENTFD', cc.links('''
> ---

Emscripten doesn't provide copy_file_range implementation but it declares
this function in its headers. Meson correctly detects the missing
implementation and unsets HAVE_COPY_FILE_RANGE. However, the stub defined in
file-posix.c causes a type conflict with the declaration from Emscripten
during compilation:

> ../qemu/block/file-posix.c:2019:14: error: static declaration of 'copy_file_range' follows non-static declaration
>  2019 | static off_t copy_file_range(int in_fd, off_t *in_off, int out_fd,
>       |              ^
> /emsdk/upstream/emscripten/cache/sysroot/include/unistd.h:207:9: note: previous declaration is here
>   207 | ssize_t copy_file_range(int, off_t *, int, off_t *, size_t, unsigned);
>       |         ^
> 1 error generated.

If introducing a new stub isn't preferable, we could update the existing
stub in file-posix.c to match the declaration used by Emscripten. The
manpage[1] also aligns with this signature.

[1] https://man7.org/linux/man-pages/man2/copy_file_range.2.html


reply via email to

[Prev in Thread] Current Thread [Next in Thread]