On Fri, Oct 27, 2023 at 09:45:52PM -0400, Thomas Frohwein wrote:
> This diff patches out mono's use of syscall(SYS_fork), which is the
> only instance of syscall(2) in use. Upstream has this behind:
>
> #elif !defined(HOST_DARWIN) && defined(SYS_fork)
>
> This diff changes that to #elif defined(__linux__)... and as a
> consequence, fork(2) is simply used.
>
> With this patched, none of the mono binaries I looked at (mono,
> mono-sgen, monodis) or shared objects have any reference to syscall(2)
> anymore.
>
> ok?
>
> Index: Makefile
> ===================================================================
> RCS file: /cvs/ports/lang/mono/Makefile,v
> retrieving revision 1.156
> diff -u -p -r1.156 Makefile
> --- Makefile 26 Sep 2023 12:02:02 -0000 1.156
> +++ Makefile 28 Oct 2023 01:45:11 -0000
> @@ -6,7 +6,7 @@ COMMENT= cross platform, open source .NE
> V= 6.12.0.199
>
> DISTNAME= mono-${V}
> -REVISION= 1
> +REVISION= 2
>
> CATEGORIES= lang devel
>
> Index: patches/patch-mono_mini_mini-posix_c
> ===================================================================
> RCS file: patches/patch-mono_mini_mini-posix_c
> diff -N patches/patch-mono_mini_mini-posix_c
> --- /dev/null 1 Jan 1970 00:00:00 -0000
> +++ patches/patch-mono_mini_mini-posix_c 28 Oct 2023 01:45:12 -0000
> @@ -0,0 +1,14 @@
> +It is *ONLY* Linux that does special shit in fork(2)
> +
> +Index: mono/mini/mini-posix.c
> +--- mono/mini/mini-posix.c.orig
> ++++ mono/mini/mini-posix.c
> +@@ -940,7 +940,7 @@ fork_crash_safe (void)
> + #if defined(HOST_ANDROID)
> + /* SYS_fork is defined to be __NR_fork which is not defined in some ndk
> versions */
> + g_assert_not_reached ();
> +-#elif !defined(HOST_DARWIN) && defined(SYS_fork)
> ++#elif defined(__linux__) && defined(SYS_fork)
> + pid = (pid_t) syscall (SYS_fork);
> + #elif HAVE_FORK
> + pid = (pid_t) fork ();
I think this is obviously correct, if there are any missed, they can
be added later.
ok brynet@