|
Message-ID: <OFE57EEAE8.27A5D6B9-ONC12587B1.0030F359-C12587B1.0030F35E@avm.de> Date: Mon, 20 Dec 2021 09:54:40 +0100 From: d.dorau@....de To: musl@...ts.openwall.com Cc: "Rich Felker" <dalias@...c.org> Subject: Re: Tracking shared libraries in GDB not working? 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@...c.org> wrote: ----- >To: d.dorau@....de >From: "Rich Felker" <dalias@...c.org> >Date: 12/15/2021 04:21PM >Cc: musl@...ts.openwall.com >Subject: Re: [musl] Tracking shared libraries in GDB not working? > >On Wed, Dec 15, 2021 at 02:10:12PM +0100, d.dorau@....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 >
Powered by blists - more mailing lists
Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.