live-bootstrap/steps/musl-1.2.4/patches/avoid_set_thread_area.patch
fosslinux a67db8fcbd Make patches relative to where tarballs are extracted
Ever since an old patch version, it has (for reasonable security
reasons) not supported patched with ../ in the filename.
Many of our patches have been relying on this behaviour being OK,
because we start off with an ancient patch version that didn't perform
such checks. As soon as we need this behaviour after we build a newer
patch though, we will have problems.

So, let's change the policy.
Patches are relative to where tarballs are extracted, rather than the
"working directory" - e.g. have patches for `coreutils-9.4/src/cp.c`
instead of `src/cp.c`.
Keeping this consistent has a few implications;
- patches are applied from the build/ directory in bash era now, with
  `-p0`
- when patches are manually applied in the bash era, use `-p` as
  required, usually `-p1`
- in kaem era where patches are always manually applied, `-p1` is used
2024-12-23 15:20:42 +11:00

50 lines
1.7 KiB
Diff

# SPDX-FileCopyrightText: 2023 Richard Masters <grick23@gmail.com>
# SPDX-License-Identifier: MIT
diff -r -u musl-1.2.3.orig/arch/i386/pthread_arch.h musl-1.2.3/arch/i386/pthread_arch.h
--- musl-1.2.4/arch/i386/pthread_arch.h 2022-04-07 17:12:40.000000000 +0000
+++ musl-1.2.4/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()
{
- uintptr_t tp;
- __asm__ ("movl %%gs:0,%0" : "=r" (tp) );
- return tp;
+ return g_pthread;
}
#define MC_PC gregs[REG_EIP]
diff -r -u musl-1.2.3.orig/arch/i386/syscall_arch.h musl-1.2.3/arch/i386/syscall_arch.h
--- musl-1.2.4/arch/i386/syscall_arch.h 2022-04-07 17:12:40.000000000 +0000
+++ musl-1.2.4/arch/i386/syscall_arch.h 2022-12-20 17:28:21.734839560 +0000
@@ -1,3 +1,4 @@
+#define SYSCALL_NO_TLS 1
#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 -r -u musl-1.2.3.orig/src/env/__init_tls.c musl-1.2.3/src/env/__init_tls.c
--- musl-1.2.4/src/env/__init_tls.c 2022-04-07 17:12:40.000000000 +0000
+++ musl-1.2.4/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;
+uintptr_t g_pthread;
int __init_tp(void *p)
{
pthread_t td = p;
td->self = td;
- 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;
+ g_pthread = (uintptr_t) td;
return 0;
}