OBS-URL: https://build.opensuse.org/package/show/server:monitoring/dietlibc?expand=0&rev=4
50 lines
1.5 KiB
Diff
50 lines
1.5 KiB
Diff
--- include/sys/tls.h
|
|
+++ include/sys/tls.h
|
|
@@ -24,8 +24,13 @@ typedef struct
|
|
void *self; /* Pointer to the thread descriptor. */
|
|
int multiple_threads;
|
|
uintptr_t sysinfo;
|
|
+#ifdef __ia64__
|
|
+ uintptr_t pointer_guard;
|
|
+ uintptr_t stack_guard;
|
|
+#else
|
|
uintptr_t stack_guard;
|
|
uintptr_t pointer_guard;
|
|
+#endif
|
|
} tcbhead_t;
|
|
|
|
#if defined(__i386__)
|
|
--- lib/stackgap.c
|
|
+++ lib/stackgap.c
|
|
@@ -14,6 +14,14 @@ extern unsigned long __guard;
|
|
#if defined(WANT_SSP) || defined(WANT_THREAD_SAFE)
|
|
static tcbhead_t mainthread;
|
|
|
|
+#if defined __ia64__ || defined __powerpc64__
|
|
+register tcbhead_t* __thread_self __asm__("r13");
|
|
+#elif defined __powerpc__
|
|
+register tcbhead_t* __thread_self __asm__("r2");
|
|
+#elif defined __sparc__
|
|
+register tcbhead_t* __thread_self __asm("%g7");
|
|
+#endif
|
|
+
|
|
static void setup_tls(void) {
|
|
mainthread.tcb=&mainthread;
|
|
mainthread.self=&mainthread;
|
|
@@ -38,11 +46,11 @@ static void setup_tls(void) {
|
|
|
|
#elif defined(__alpha__) || defined(__s390__)
|
|
__builtin_set_thread_pointer(&mainthread);
|
|
-#elif defined(__ia64__) || defined(__powerpc__)
|
|
- register tcbhead_t* __thread_self __asm__("r13");
|
|
- __thread_self=&mainthread;
|
|
+#elif defined(__ia64__)
|
|
+ __thread_self = &mainthread + 1;
|
|
+#elif defined(__powerpc__)
|
|
+ __thread_self = (tcbhead_t *)((char *)(&mainthread + 1) + 0x7000);
|
|
#elif defined(__sparc__)
|
|
- register tcbhead_t* __thread_self __asm("%g7");
|
|
__thread_self=&mainthread;
|
|
#else
|
|
#warning "no idea how to enable TLS on this platform, edit lib/stackgap.c"
|