1 Jul 2010 17:43
Re: debug problem with prelinked libraries
Thomas Schwinge <thomas <at> codesourcery.com>
2010-07-01 15:43:28 GMT
2010-07-01 15:43:28 GMT
Hello!
On 2010-05-07 13:23, Jan Kratochvil wrote:
> On Wed, 05 May 2010 16:59:36 +0200, Andrew Stubbs wrote:
>> > prelink includes code to manipulate the contents of the debug info.
> [...]
>> Maybe prelink has failed to relocate the debug info in this case?
>
> The attached patch should fix it.
>
> Although SHT_MIPS_DWARF value should be recognized only for e_machine as
> EM_MIPS or EM_MIPS_RS3_LE or EM_MIPS_X? Or are there some other rules?
> --- prelink/src/dso.c-orig 2010-04-13 16:41:15.000000000 +0200
> +++ prelink/src/dso.c 2010-05-07 15:16:25.000000000 +0200
> <at> <at> -1381,6 +1381,7 <at> <at> adjust_dso (DSO *dso, GElf_Addr start, G
> switch (dso->shdr[i].sh_type)
> {
> case SHT_PROGBITS:
> + case SHT_MIPS_DWARF:
> name = strptr (dso, dso->ehdr.e_shstrndx, dso->shdr[i].sh_name);
> if (strcmp (name, ".stab") == 0
> && adjust_stabs (dso, i, start, adjust))
Unfortunately, this patch causes the following regression for about every
test of the prelink testsuite, in -mabi=64 configurations (only):
mips-wrs-linux-gnu-prelink -c ./prelink.conf -C ./prelink.cache --ld-library-path=.
--dynamic-linker=./ld.so.1 -vm ./reloc1
Laying out 4 libraries in virtual address space 0000005800000000-0000009800000000
Assigned virtual address space slots for libraries:
./ld.so.1 0000005800000000-0000005800032328
./libc.so.6 0000005800040000-00000058001cbdb0
./reloc1lib1.so 00000058001d0000-00000058001e0b10
./reloc1lib2.so 00000058001f0000-00000058002009d0
Prelinking /scratch/thomas/issue8927/obj/test-4.3a-294-mips-wrs-linux-gnu/host-i686-pc-linux-gnu/mabi_64/prelink.d/ld-2.8.so
mips-wrs-linux-gnu-prelink:
/scratch/thomas/issue8927/obj/test-4.3a-294-mips-wrs-linux-gnu/host-i686-pc-linux-gnu/mabi_64/prelink.d/ld-2.8.so:
64-bit DWARF not supported
mips-wrs-linux-gnu-prelink: Could not prelink ./libc.so.6 because its dependency ./ld.so.1 could not
be prelinked
mips-wrs-linux-gnu-prelink: Could not prelink ./reloc1lib1.so because its dependency ./libc.so.6
could not be prelinked
mips-wrs-linux-gnu-prelink: Could not prelink ./reloc1lib2.so because its dependency
./reloc1lib1.so could not be prelinked
mips-wrs-linux-gnu-prelink: Could not prelink ./reloc1 because its dependency ./reloc1lib2.so could
not be prelinked
I'll try to hunt down where this ``64-bit DWARF not supported'' is coming
from, and why handling SHT_MIPS_DWARF in prelink can be responsible for
it, but if anyone has any ideas already, please tell me.
Regards,
Thomas
RSS Feed