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@

Reply via email to