diff --git a/sysa/musl-1.1.24/patches/avoid_set_thread_area.patch b/sysa/musl-1.1.24/patches/avoid_set_thread_area.patch index bc933c8..e7706e5 100644 --- a/sysa/musl-1.1.24/patches/avoid_set_thread_area.patch +++ b/sysa/musl-1.1.24/patches/avoid_set_thread_area.patch @@ -2,58 +2,42 @@ # SPDX-License-Identifier: MIT diff -r -u musl-1.1.24.orig/arch/i386/pthread_arch.h musl-1.1.24/arch/i386/pthread_arch.h --- arch/i386/pthread_arch.h 2019-10-13 21:58:27.000000000 +0000 -+++ arch/i386/pthread_arch.h 2023-02-28 14:06:10.700603762 +0000 -@@ -1,8 +1,18 @@ -+#define BOOTSTRAP -+ -+#ifdef BOOTSTRAP ++++ arch/i386/pthread_arch.h 2023-04-07 11:56:04.649119523 +0000 +@@ -1,8 +1,8 @@ +extern pthread_t g_pthread; -+#endif + static inline struct pthread *__pthread_self() { -+#ifndef BOOTSTRAP - struct pthread *self; - __asm__ ("movl %%gs:0,%0" : "=r" (self) ); - return self; -+#else +- struct pthread *self; +- __asm__ ("movl %%gs:0,%0" : "=r" (self) ); +- return self; + return g_pthread; -+#endif } #define TP_ADJ(p) (p) diff -r -u musl-1.1.24.orig/src/env/__init_tls.c musl-1.1.24/src/env/__init_tls.c --- src/env/__init_tls.c 2019-10-13 21:58:27.000000000 +0000 -+++ src/env/__init_tls.c 2023-02-28 14:07:04.956604831 +0000 -@@ -8,22 +8,31 @@ - #include "libc.h" - #include "atomic.h" ++++ src/env/__init_tls.c 2023-04-07 11:56:43.565120289 +0000 +@@ -10,20 +10,19 @@ #include "syscall.h" -+#define BOOTSTRAP volatile int __thread_list_lock; -+#ifdef BOOTSTRAP +pthread_t g_pthread; -+#endif int __init_tp(void *p) { pthread_t td = p; td->self = td; -+#ifndef BOOTSTRAP - int r = __set_thread_area(TP_ADJ(p)); - if (r < 0) return -1; - if (!r) libc.can_do_threads = 1; -+#endif +- int r = __set_thread_area(TP_ADJ(p)); +- if (r < 0) return -1; +- if (!r) libc.can_do_threads = 1; td->detach_state = DT_JOINABLE; td->tid = __syscall(SYS_set_tid_address, &__thread_list_lock); td->locale = &libc.global_locale; td->robust_list.head = &td->robust_list.head; td->sysinfo = __sysinfo; td->next = td->prev = td; -+#ifdef BOOTSTRAP + g_pthread = td; -+#endif return 0; } diff --git a/sysa/musl-1.1.24/patches/avoid_sys_clone.patch b/sysa/musl-1.1.24/patches/avoid_sys_clone.patch index 117be0a..10540d2 100644 --- a/sysa/musl-1.1.24/patches/avoid_sys_clone.patch +++ b/sysa/musl-1.1.24/patches/avoid_sys_clone.patch @@ -1,29 +1,17 @@ # SPDX-FileCopyrightText: 2023 Richard Masters # SPDX-License-Identifier: MIT -diff -r -u musl-1.1.24.orig/src/process/posix_spawn.c musl-1.1.24/src/process/posix_spawn.c --- src/process/posix_spawn.c 2019-10-13 21:58:27.000000000 +0000 -+++ src/process/posix_spawn.c 2023-02-28 14:08:18.636606282 +0000 -@@ -8,6 +8,7 @@ - #include "syscall.h" - #include "pthread_impl.h" - #include "fdop.h" -+#define BOOTSTRAP - - struct args { - int p[2]; -@@ -182,8 +183,16 @@ ++++ src/process/posix_spawn.c 2023-04-07 11:50:47.253113271 +0000 +@@ -182,8 +182,11 @@ args.envp = envp; pthread_sigmask(SIG_BLOCK, SIGALL_SET, &args.oldmask); -+#ifndef BOOTSTRAP - pid = __clone(child, stack+sizeof stack, - CLONE_VM|CLONE_VFORK|SIGCHLD, &args); -+#else +- pid = __clone(child, stack+sizeof stack, +- CLONE_VM|CLONE_VFORK|SIGCHLD, &args); + pid = fork(); + if (pid == 0) { + _exit(child(&args)); + } -+#endif + close(args.p[1]); diff --git a/sysa/musl-1.2.3/patches/avoid_set_thread_area.patch b/sysa/musl-1.2.3/patches/avoid_set_thread_area.patch index cb7f1b6..5a71766 100644 --- a/sysa/musl-1.2.3/patches/avoid_set_thread_area.patch +++ b/sysa/musl-1.2.3/patches/avoid_set_thread_area.patch @@ -1,24 +1,20 @@ # SPDX-FileCopyrightText: 2023 Richard Masters # SPDX-License-Identifier: MIT -diff -u -r musl-1.2.3.orig/arch/i386/pthread_arch.h musl-1.2.3/arch/i386/pthread_arch.h +diff -r -u musl-1.2.3.orig/arch/i386/pthread_arch.h musl-1.2.3/arch/i386/pthread_arch.h --- arch/i386/pthread_arch.h 2022-04-07 17:12:40.000000000 +0000 -+++ arch/i386/pthread_arch.h 2022-12-19 23:39:10.890414014 +0000 -@@ -1,8 +1,14 @@ -+#define BOOTSTRAP ++++ arch/i386/pthread_arch.h 2023-04-07 12:07:07.929132587 +0000 +@@ -1,8 +1,7 @@ +extern uintptr_t g_pthread; static inline uintptr_t __get_tp() { -+#ifndef BOOTSTRAP - uintptr_t tp; - __asm__ ("movl %%gs:0,%0" : "=r" (tp) ); - return tp; -+#else +- uintptr_t tp; +- __asm__ ("movl %%gs:0,%0" : "=r" (tp) ); +- return tp; + return g_pthread; -+#endif } #define MC_PC gregs[REG_EIP] -diff -u -r musl-1.2.3.orig/arch/i386/syscall_arch.h musl-1.2.3/arch/i386/syscall_arch.h +diff -r -u musl-1.2.3.orig/arch/i386/syscall_arch.h musl-1.2.3/arch/i386/syscall_arch.h --- arch/i386/syscall_arch.h 2022-04-07 17:12:40.000000000 +0000 +++ arch/i386/syscall_arch.h 2022-12-20 17:28:21.734839560 +0000 @@ -1,3 +1,4 @@ @@ -26,25 +22,22 @@ diff -u -r musl-1.2.3.orig/arch/i386/syscall_arch.h musl-1.2.3/arch/i386/syscall #define __SYSCALL_LL_E(x) \ ((union { long long ll; long l[2]; }){ .ll = x }).l[0], \ ((union { long long ll; long l[2]; }){ .ll = x }).l[1] -diff -u -r musl-1.2.3.orig/src/env/__init_tls.c musl-1.2.3/src/env/__init_tls.c +diff -r -u musl-1.2.3.orig/src/env/__init_tls.c musl-1.2.3/src/env/__init_tls.c --- src/env/__init_tls.c 2022-04-07 17:12:40.000000000 +0000 -+++ src/env/__init_tls.c 2022-12-19 23:39:42.362414223 +0000 -@@ -10,20 +10,25 @@ ++++ src/env/__init_tls.c 2023-04-07 12:07:38.677133193 +0000 +@@ -10,20 +10,19 @@ #include "syscall.h" volatile int __thread_list_lock; -+#define BOOTSTRAP +uintptr_t g_pthread; int __init_tp(void *p) { pthread_t td = p; td->self = td; -+#ifndef BOOTSTRAP - int r = __set_thread_area(TP_ADJ(p)); - if (r < 0) return -1; - if (!r) libc.can_do_threads = 1; -+#endif +- int r = __set_thread_area(TP_ADJ(p)); +- if (r < 0) return -1; +- if (!r) libc.can_do_threads = 1; td->detach_state = DT_JOINABLE; td->tid = __syscall(SYS_set_tid_address, &__thread_list_lock); td->locale = &libc.global_locale; diff --git a/sysa/musl-1.2.3/patches/avoid_sys_clone.patch b/sysa/musl-1.2.3/patches/avoid_sys_clone.patch index cdb2d6c..0cc7e5a 100644 --- a/sysa/musl-1.2.3/patches/avoid_sys_clone.patch +++ b/sysa/musl-1.2.3/patches/avoid_sys_clone.patch @@ -1,16 +1,13 @@ # SPDX-FileCopyrightText: 2023 Richard Masters # SPDX-License-Identifier: MIT -diff -u -r musl-1.2.3.orig/src/process/posix_spawn.c musl-1.2.3/src/process/posix_spawn.c --- src/process/posix_spawn.c 2022-04-07 17:12:40.000000000 +0000 -+++ src/process/posix_spawn.c 2022-12-19 23:47:31.858417338 +0000 -@@ -190,8 +190,15 @@ ++++ src/process/posix_spawn.c 2023-04-07 12:01:57.217126467 +0000 +@@ -190,8 +190,11 @@ goto fail; } -+#if 0 - pid = __clone(child, stack+sizeof stack, - CLONE_VM|CLONE_VFORK|SIGCHLD, &args); -+#endif +- pid = __clone(child, stack+sizeof stack, +- CLONE_VM|CLONE_VFORK|SIGCHLD, &args); + pid = fork(); + if (pid == 0) { + _exit(child(&args));