This is the mail archive of the
binutils@sourceware.org
mailing list for the binutils project.
Re: [Patch]: Fix ld pr11138 FAILures on mips*.
- From: Richard Sandiford <rdsandiford at googlemail dot com>
- To: David Daney <david dot daney at cavium dot com>
- Cc: binutils <binutils at sourceware dot org>, linux-mips <linux-mips at linux-mips dot org>, Manuel Lauss <manuel dot lauss at googlemail dot com>, Debian MIPS <debian-mips at lists dot debian dot org>
- Date: Tue, 06 Dec 2011 21:16:22 +0000
- Subject: Re: [Patch]: Fix ld pr11138 FAILures on mips*.
- References: <4EDD669F.30207@cavium.com> <20111206054018.GB21034@bubble.grove.modra.org>
Alan Modra <amodra@gmail.com> writes:
> On Mon, Dec 05, 2011 at 04:49:35PM -0800, David Daney wrote:
>> The root cause of this is that the mips linker synthesizes a special
>> symbol "__RLD_MAP", and then sets MIPS_RLD_MAP to point to it. When
>> a version script is present, this symbol gets versioned along with
>> all the rest, and when it is time to take its address, the symbol
>> can no longer be found as it has had version information appended to
>> its name.
>
> Why not just change
>
> && (strcmp (name, "__rld_map") == 0
> || strcmp (name, "__RLD_MAP") == 0))
>
> to
>
> && (strncmp (name, "__rld_map", 9) == 0
> || strncmp (name, "__RLD_MAP", 9) == 0))
>
> in _bfd_mips_elf_finish_dynamic_symbol? Perhaps the same for other
> syms there too?
Showing my ignorance here, but is that the usual behaviour for this kind
of thing? I wouldn't have expected versions to apply to internally-created
symbols.
There again, is this symbol (as opposed to the DT_MIPS_RLD_MAP tag)
actually part of the ABI? I can't find any reference to it in the
original psABI, the SGI ELF64 spec, gdb or glibc. If it's just an
internal thing, maybe we could get rid of it altogether, or at least
make it bind locally rather than globally.
Richard