Message ID | 1435666616-25444-1-git-send-email-vgupta@synopsys.com |
---|---|
State | Accepted |
Commit | ca1c74d67dd115d059a875150e10b8560a9c35a8 |
Headers | show |
On Tue, Jun 30, 2015 at 05:46:56PM +0530, Vineet Gupta wrote: > Native gdb makes a ptrace (GET_THREAD_AREA) which needs to return the > TP. however when libc sets up TP reg (for main thread), it doesn't call > arc_settls syscall so kernel doesn't know of TP register details > (moreso because clone doesnt have SETTLS flag) > > Note that kernel doesn't know about r25 being TP etc. > > This commit got lost in merge of NPTL tools into arc-mainline-dev and > showed up again as STAR 9000919529 (native gdb can't debug threaded > apps) > > ------->8--------------- > [ARCLinux]# gdb ./pth > Reading symbols from ./pth...(no debugging symbols found)...done. > (gdb) b main > Breakpoint 1 at 0x106f2 > (gdb) r > Starting program: /pth > [Thread debugging using libthread_db enabled] > Using host libthread_db library "/lib/libthread_db.so.1". > thread_get_info_callback: cannot get thread info: generic error > (gdb) q > ------->8--------------- Applied, thanks!
diff --git a/libpthread/nptl/sysdeps/arc/tls.h b/libpthread/nptl/sysdeps/arc/tls.h index 63dd11398522..4af415a1c30b 100644 --- a/libpthread/nptl/sysdeps/arc/tls.h +++ b/libpthread/nptl/sysdeps/arc/tls.h @@ -104,8 +104,11 @@ typedef struct operation can cause a failure 'errno' must not be touched. */ # define TLS_INIT_TP(tcbp, secondcall) \ ({ \ - __builtin_set_thread_pointer(tcbp); \ - NULL; \ + long result_var; \ + __builtin_set_thread_pointer(tcbp); \ + result_var = INTERNAL_SYSCALL (arc_settls, err, 1, (tcbp)); \ + INTERNAL_SYSCALL_ERROR_P (result_var, err) \ + ? "unknown error" : NULL; \ }) /* Return the address of the dtv for the current thread.