FYI: copy/paste error in sol-thread.c ?

Joel Brobecker
2013-04-30T11:09:37Z

... while working on fixing the few compilation errors in that file,
I noticed:

/* If thread is asleep, print function that went to sleep. */
if (ti.ti_state == TD_THR_SLEEP)
{
const struct bound_minimal_symbol msym
= lookup_minimal_symbol_by_pc (ti.ti_pc);

if (msym.minsym)
printf_filtered (" - Sleep func: %s\n",
SYMBOL_PRINT_NAME (msym.minsym));
else
printf_filtered (" - Sleep func: %s\n",
paddress (target_gdbarch (), ti.ti_startfunc));
^^^^^^^^^^^^^^^
|||||||||||||||
}

I find the use of ti.ti_startfunc looks suspiciously like a copy/paste
of the code right above:

if (ti.ti_startfunc != 0)
{
const struct bound_minimal_symbol msym
= lookup_minimal_symbol_by_pc (ti.ti_startfunc);

if (msym.minsym)
printf_filtered (" startfunc: %s\n",
SYMBOL_PRINT_NAME (msym.minsym));
else
printf_filtered (" startfunc: %s\n",
paddress (target_gdbarch (), ti.ti_startfunc));
}

In particular, the first block ("if (ti.ti_state == TD_THR_SLEEP)")
does a function name lookup using ti.ti_pc, not ti.ti_startfunc.

I am running against the clock today, but will try to look at it
again sometime this week, if I have a bit of time. A second pair
of eyes to confirm my understanding would be greatly appreciated.

--
Joel