From: d.dorau@avm.de
To: musl@lists.openwall.com
Cc: "Rich Felker" <dalias@libc.org>
Subject: Re: [musl] Tracking shared libraries in GDB not working?
Date: Mon, 20 Dec 2021 09:54:40 +0100 [thread overview]
Message-ID: <OFE57EEAE8.27A5D6B9-ONC12587B1.0030F359-C12587B1.0030F35E@avm.de> (raw)
In-Reply-To: <20211215152048.GJ7074@brightrain.aerifal.cx>
Thanks for your thoughts. I used them to search for further information and found
the missing piece:
https://lists.yoctoproject.org/g/yocto/message/48584
I applied that first patch
https://lists.yoctoproject.org/g/yocto/attachment/48584/0/0007-Teach-dynlink.c-about-DT_MIPS_RLD_MAP_REL.patch
and apparently it seems to solve the issue. :-)
I did a search on this mailing list and couldn't find this patch mentioned here.
Maybe you can include this patch in a future release if you think the solution is correct.
Best regards,
Daniel
-----"Rich Felker" <dalias@libc.org> wrote: -----
>To: d.dorau@avm.de
>From: "Rich Felker" <dalias@libc.org>
>Date: 12/15/2021 04:21PM
>Cc: musl@lists.openwall.com
>Subject: Re: [musl] Tracking shared libraries in GDB not working?
>
>On Wed, Dec 15, 2021 at 02:10:12PM +0100, d.dorau@avm.de wrote:
>> Hello,
>> I have an issue using gdb with musl and am hoping that you might be
>able to help me:
>>
>> I am cross compiling a linux+musl based firmware for a MIPS
>platform and then
>> connecting a multiarch-gdb to a gdbserver on that device.
>>
>> This seems to work well, as well as loading all necessary symbols
>from the host.
>>
>> However, when running the application on the target device, gdb
>seems to be unable
>> to track the loading of shared libraries the application was linked
>against.
>>
>> If I break at main() and enter "info shared", only the loader is
>shown.
>>
>> gdb) target remote 192.168.190.33:2345
>> Remote debugging using 192.168.190.33:2345
>> Reading symbols from
>/home/ddorau/gu/GU_MASTER/filesystem_temp/usr/bin/pbd...
>> Reading symbols from
>/home/ddorau/gu/GU_MASTER/filesystem_temp/usr/bin/..debug/pbd...
>> Reading symbols from
>/home/ddorau/gu/GU_MASTER/filesystem_temp/lib/ld-musl-mips-sf.so.1...
>
>> Reading symbols from
>/home/ddorau/gu/GU_MASTER/filesystem_temp/lib/.debug/libc.so...
>> 0x77f40ee0 in _dlstart () from
>/home/ddorau/gu/GU_MASTER/filesystem_temp/lib/ld-musl-mips-sf.so.1
>> (gdb) break main
>> Breakpoint 1 at 0x55557e10: file pbserver.c, line 11668.
>> (gdb) continue Continuing.
>> Breakpoint 1, main (argc=1, argv=0x7fffd564) at pbserver.c:11668
>> 11668 {
>> (gdb) info shared
>> >From To Syms Read Shared Object Library
>> 0x77f40740 0x77fba844 Yes
>/home/ddorau/gu/GU_MASTER/filesystem_temp/lib/ld-musl-mips-sf.so.1
>>
>>
>> If I repeat that whole process on a glibc based ARM platform, it
>works as expected. There,
>> gdb is able to notice all shared libraries the application was
>linked against and shows them
>> correspondingly:
>>
>> (gdb) i shared
>
>
>> >From To Syms Read Shared Object Library
>
>
>> 0xb6fcea00 0xb6fe9d90 Yes (*)
>/home/ddorau/gu/GU_MASTER/filesystem_temp/lib/ld-linux.so.3
>
>> 0xb6faa168 0xb6fbbc08 Yes
>/home/ddorau/gu/GU_MASTER/filesystem_temp/usr/lib/libbsd.so.0
>
>> 0xb6f956f0 0xb6f95cc8 Yes (*)
>/home/ddorau/gu/GU_MASTER/filesystem_temp/lib/libwdt.so.1
>
>> 0xb6f7d0c8 0xb6f826e0 Yes (*)
>/home/ddorau/gu/GU_MASTER/filesystem_temp/lib/libmxml.so.1
>
>> 0xb6f68984 0xb6f6994c Yes (*)
>/home/ddorau/gu/GU_MASTER/filesystem_temp/lib/libdl.so.2
>> [...]
>>
>> The libraries are actually loaded successfully, just the gdbserver
>does not recognize this.
>> I'm not familiar with the internals, but assuming gdb would use
>some kind of breakpoint in the
>> loader to notice which libraries are loaded (and to what address).
>>
>> It seems I am missing some necessary step for the platform using
>musl which would enable the same
>> behaviour. Am I maybe missing musl related patches for the
>gdbserver which allows it to track the
>> process of loading those shared libraries?
>>
>>
>> I would very much appreciate if anyone can help me find the missing
>piece.
>
>This is almost certainly related to how DT_DEBUG works differently on
>MIPS because of historical practice (linker behavior) putting
>_DYNAMIC
>in read-only memory. As a result, MIPS has its own quirky indirect
>variant, so this could be a bug in our handling of that, or an
>omission of something else needed to go with it, or something wrong
>about how gdb was built (not looking for the right info).
>
>Rich
>
next prev parent reply other threads:[~2021-12-20 8:54 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-12-15 13:10 d.dorau
2021-12-15 15:20 ` Rich Felker
2021-12-20 8:54 ` d.dorau [this message]
2022-01-09 5:14 ` Rich Felker
2023-01-10 20:02 ` Hauke Mehrtens
2023-01-17 23:14 ` Hauke Mehrtens
2023-01-18 16:03 ` Rich Felker
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=OFE57EEAE8.27A5D6B9-ONC12587B1.0030F359-C12587B1.0030F35E@avm.de \
--to=d.dorau@avm.de \
--cc=dalias@libc.org \
--cc=musl@lists.openwall.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://git.vuxu.org/mirror/musl/
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).