Re: multithreaded programs on arm-linux

Frank Meerkoetter
2005-11-04T16:06:44Z

Quoting Daniel Jacobowitz <drow@false.org>:

> On Fri, Nov 04, 2005 at 04:39:30PM +0100, Frank Meerkoetter wrote:
>> Quoting Daniel Jacobowitz <drow@false.org>:
>>
>> >On Fri, Nov 04, 2005 at 10:23:21AM +0100, Frank Meerkoetter wrote:
>> >>Quoting Daniel Jacobowitz <drow@false.org>:
>> >>
>> >>>On Thu, Nov 03, 2005 at 06:50:47PM +0100, Frank Meerkoetter wrote:
>> >>>>objfile is NULL, why i couldn't figure out.
>> >>>
>> >>>That should be true the first time but not the second, if you've used
>> >>>"file".
>> >>
>> >>Ok. The first time objfile is null. The second time target_has_execution
>> >>is false.
>> >
>> >It doesn't get called after you say "run"? Is this a static executable
>> >you're debugging?
>>
>> It does get called. Sorry, i tested the wrong thing.
>>
>> [...]
>> /* Now attempt to open a connection to the thread library. */
>> err = td_ta_new_p (&proc_handle, &thread_agent);
>>
>> It returns TD_NOLIBTHREAD.
>>
>> I know from stepping through thread_db_load() that
>> That td_ta_new_p = verbose_dlsym (handle, "td_ta_new");
>> was successfull.
>>
>> verbose_dlsym() also produced now warning that it couldn't
>> find a certain symbol.
>>
>> td_ta_new seems to fail.
>> I've downloaded the linuxThreads source but can't find any
>> references to "td_ta_new".
>
> It's in libthread_db, which is linuxthreads_db/ in the LinuxThreads
> source.
>
> It sounds like your libpthread.so has been stripped of some required
> symbols.

I found it. glibc-linuxthreads-2.2.5.tar.gz contains
linuxthreads/ and linuxthreads_db/ both at the root level...
So i missed it at the first look.

td_err_e
td_ta_new (struct ps_prochandle *ps, td_thragent_t **ta)
{
[...]
/* Get the global event mask. This is one of the variables which
are new in the thread library to enable debugging. If it is
not available we cannot debug. */
if (td_lookup (ps, PTHREAD_THREADS_EVENTS, &addr) != PS_OK)
return TD_NOLIBTHREAD;

It seems that td_lookup fails. td_lookup is a wrapper
around ps_pglobal_lookup defined in td_symbol_list.c.

Regards,
Frank