Switch to using AT_RANDOM for the stack guards.
Bug: 7959813
Change-Id: I8db4b8912ba649bfe668c6f22aa44690ddd401a2
diff --git a/libc/bionic/pthread.c b/libc/bionic/pthread.c
index f2a7ebe..88a972d 100644
--- a/libc/bionic/pthread.c
+++ b/libc/bionic/pthread.c
@@ -170,13 +170,12 @@
}
// Slot 0 must point to itself. The x86 Linux kernel reads the TLS from %fs:0.
- tls[TLS_SLOT_SELF] = (void*) tls;
+ tls[TLS_SLOT_SELF] = tls;
tls[TLS_SLOT_THREAD_ID] = thread;
+ // GCC looks in the TLS for the stack guard on x86, so copy it there from our global.
+ tls[TLS_SLOT_STACK_GUARD] = (void*) __stack_chk_guard;
- // Stack guard generation may make system calls, and those system calls may fail.
- // If they do, they'll try to set errno, so we can only do this after calling __set_tls.
__set_tls((void*) tls);
- tls[TLS_SLOT_STACK_GUARD] = __generate_stack_chk_guard();
}