Fix regression revealed by corethreads.exp

Message ID 1449774866-18369-1-git-send-email-antoine.tremblay@ericsson.com
State New, archived
Headers

Commit Message

Antoine Tremblay Dec. 10, 2015, 7:14 p.m. UTC
  This patch fixes a regression introduced by:
https://sourceware.org/ml/gdb-patches/2015-12/msg00192.html

We can't use thread_from_lwp with core files.  As mentioned in a comment,
td_ta_map_lwp2thr uses ps_get_thread_area, but we can't use that
currently on core targets, as it uses ptrace directly.

Use directly record_thread instead.

This fixes :
PASS -> FAIL: gdb.threads/corethreads.exp: thread0 found
PASS -> FAIL: gdb.threads/corethreads.exp: thread1 found

gdb/ChangeLog:

	* linux-thread-db.c (find_new_threads_callback): Use record_thread.
---
 gdb/linux-thread-db.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
  

Comments

Pedro Alves Dec. 10, 2015, 7:34 p.m. UTC | #1
On 12/10/2015 07:14 PM, Antoine Tremblay wrote:
> This patch fixes a regression introduced by:
> https://sourceware.org/ml/gdb-patches/2015-12/msg00192.html
> 
> We can't use thread_from_lwp with core files.  As mentioned in a comment,
> td_ta_map_lwp2thr uses ps_get_thread_area, but we can't use that
> currently on core targets, as it uses ptrace directly.
> 
> Use directly record_thread instead.
> 
> This fixes :
> PASS -> FAIL: gdb.threads/corethreads.exp: thread0 found
> PASS -> FAIL: gdb.threads/corethreads.exp: thread1 found
> 
> gdb/ChangeLog:
> 
> 	* linux-thread-db.c (find_new_threads_callback): Use record_thread.

OK.

Thanks,
Pedro Alves
  
Antoine Tremblay Dec. 10, 2015, 7:45 p.m. UTC | #2
On 12/10/2015 02:34 PM, Pedro Alves wrote:
> On 12/10/2015 07:14 PM, Antoine Tremblay wrote:
>> This patch fixes a regression introduced by:
>> https://sourceware.org/ml/gdb-patches/2015-12/msg00192.html
>>
>> We can't use thread_from_lwp with core files.  As mentioned in a comment,
>> td_ta_map_lwp2thr uses ps_get_thread_area, but we can't use that
>> currently on core targets, as it uses ptrace directly.
>>
>> Use directly record_thread instead.
>>
>> This fixes :
>> PASS -> FAIL: gdb.threads/corethreads.exp: thread0 found
>> PASS -> FAIL: gdb.threads/corethreads.exp: thread1 found
>>
>> gdb/ChangeLog:
>>
>> 	* linux-thread-db.c (find_new_threads_callback): Use record_thread.
>
> OK.
>

Pushed in.

Thanks,
Antoine
  

Patch

diff --git a/gdb/linux-thread-db.c b/gdb/linux-thread-db.c
index 8a80ca3..4e51c74 100644
--- a/gdb/linux-thread-db.c
+++ b/gdb/linux-thread-db.c
@@ -1226,7 +1226,7 @@  find_new_threads_callback (const td_thrhandle_t *th_p, void *data)
   ptid = ptid_build (info->pid, ti.ti_lid, 0);
   tp = find_thread_ptid (ptid);
   if (tp == NULL || tp->priv == NULL)
-    thread_from_lwp (ptid);
+    record_thread (info, tp, ptid, th_p, &ti);
 
   return 0;
 }