mirror of
https://github.com/darlinghq/darling-gdb.git
synced 2024-12-15 08:08:55 +00:00
gdb/
* linux-thread-db.c (find_new_threads_callback): Exit on zero TI_TID even if !TARGET_HAS_EXECUTION. gdb/testsuite/ * gdb.threads/gcore-thread.exp ($core0file): New variable. (clear __stack_user.next, clear stack_used.next) (save a zeroed-threads corefile): New test. Call core_load for $core0file. (zeroed-threads cannot be listed): New test.
This commit is contained in:
parent
4fe85f5c27
commit
254f582e7e
@ -1,3 +1,8 @@
|
||||
2011-04-17 Jan Kratochvil <jan.kratochvil@redhat.com>
|
||||
|
||||
* linux-thread-db.c (find_new_threads_callback): Exit on zero TI_TID
|
||||
even if !TARGET_HAS_EXECUTION.
|
||||
|
||||
2011-04-17 Jan Kratochvil <jan.kratochvil@redhat.com>
|
||||
|
||||
Fix convert_code_addr_to_desc_addr for ppc64 files after eu-strip.
|
||||
|
@ -1335,7 +1335,7 @@ find_new_threads_callback (const td_thrhandle_t *th_p, void *data)
|
||||
if (ti.ti_state == TD_THR_UNKNOWN || ti.ti_state == TD_THR_ZOMBIE)
|
||||
return 0; /* A zombie -- ignore. */
|
||||
|
||||
if (ti.ti_tid == 0 && target_has_execution)
|
||||
if (ti.ti_tid == 0)
|
||||
{
|
||||
/* A thread ID of zero means that this is the main thread, but
|
||||
glibc has not yet initialized thread-local storage and the
|
||||
@ -1347,10 +1347,13 @@ find_new_threads_callback (const td_thrhandle_t *th_p, void *data)
|
||||
need this glibc bug workaround. */
|
||||
info->need_stale_parent_threads_check = 0;
|
||||
|
||||
err = info->td_thr_event_enable_p (th_p, 1);
|
||||
if (err != TD_OK)
|
||||
error (_("Cannot enable thread event reporting for LWP %d: %s"),
|
||||
(int) ti.ti_lid, thread_db_err_str (err));
|
||||
if (target_has_execution)
|
||||
{
|
||||
err = info->td_thr_event_enable_p (th_p, 1);
|
||||
if (err != TD_OK)
|
||||
error (_("Cannot enable thread event reporting for LWP %d: %s"),
|
||||
(int) ti.ti_lid, thread_db_err_str (err));
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -1,3 +1,11 @@
|
||||
2011-04-17 Jan Kratochvil <jan.kratochvil@redhat.com>
|
||||
|
||||
* gdb.threads/gcore-thread.exp ($core0file): New variable.
|
||||
(clear __stack_user.next, clear stack_used.next)
|
||||
(save a zeroed-threads corefile): New test.
|
||||
Call core_load for $core0file.
|
||||
(zeroed-threads cannot be listed): New test.
|
||||
|
||||
2011-04-17 Jan Kratochvil <jan.kratochvil@redhat.com>
|
||||
|
||||
* gdb.threads/gcore-thread.exp ($testfile): Match it the .exp
|
||||
|
@ -26,6 +26,7 @@ set testfile "gcore-thread"
|
||||
set srcfile pthreads.c
|
||||
set binfile ${objdir}/${subdir}/${testfile}
|
||||
set corefile ${objdir}/${subdir}/${testfile}.test
|
||||
set core0file ${objdir}/${subdir}/${testfile}0.test
|
||||
|
||||
if [istarget "*-*-linux"] then {
|
||||
set target_cflags "-D_MIT_POSIX_THREADS"
|
||||
@ -110,6 +111,29 @@ if {!$core_supported} {
|
||||
}
|
||||
|
||||
|
||||
# Test the uninitialized thread list.
|
||||
# Provide the case of glibc td_thr_get_info handling of:
|
||||
# /* Special case for the main thread before initialization. */
|
||||
|
||||
foreach symbol {__stack_user stack_used} {
|
||||
set test "clear ${symbol}.next"
|
||||
gdb_test_multiple "p *(void **) &${symbol} = 0" $test {
|
||||
-re " = \\(void \\*\\) 0x0\r\n$gdb_prompt $" {
|
||||
pass $test
|
||||
}
|
||||
-re "No symbol \"${symbol}\" in current context\\.\r\n$gdb_prompt $" {
|
||||
xfail $test
|
||||
# Do not do the verification.
|
||||
set core0file ""
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if {"$core0file" != ""} {
|
||||
gdb_test "gcore $core0file" "Saved corefile .*" "save a zeroed-threads corefile"
|
||||
}
|
||||
|
||||
|
||||
# Now restart gdb and load the corefile.
|
||||
clean_restart ${testfile}
|
||||
|
||||
@ -160,3 +184,11 @@ gdb_test "info threads" ".* thread2 .*" \
|
||||
|
||||
gdb_test "info threads" ".*${nl}\\* ${horiz} thread2 .*" \
|
||||
"thread2 is current thread in corefile"
|
||||
|
||||
|
||||
# Test the uninitialized thread list.
|
||||
|
||||
if {"$core0file" != "" && [load_core $core0file]} {
|
||||
|
||||
gdb_test "info threads" "Cannot find new threads: .*" "zeroed-threads cannot be listed"
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user