[Top] [All Lists]

Re: [Patch v2]: Fix ld pr11138 FAILures on mips*.

To: binutils <>, Richard Sandiford <>, Alan Modra <>
Subject: Re: [Patch v2]: Fix ld pr11138 FAILures on mips*.
From: David Daney <>
Date: Fri, 09 Dec 2011 16:50:01 -0800
Cc: Manuel Lauss <>, Debian MIPS <>, linux-mips <>
In-reply-to: <>
References: <> <>
User-agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv: Gecko/20101027 Fedora/3.0.10-1.fc12 Thunderbird/3.0.10
Thanks Alan,

I will wait a couple of days to give Richard a chance to object. I think I got the address calculation correct, but having another pair of eyes look at it would be nice. I am especially concerned about what happens on IRIX where the symbol comes in from an external object rather than being generated by the linker itself. I had no way to test that.

David Daney

On 12/09/2011 04:39 PM, Alan Modra wrote:
On Fri, Dec 09, 2011 at 12:31:14PM -0800, David Daney wrote:
        * /elfxx-mips.c (mips_elf_link_hash_table.rld_value): Remove.
        (mips_elf_link_hash_table.rld_symbol): New field;
        (MIPS_ELF_RLD_MAP_SIZE): New macro.
        (_bfd_mips_elf_add_symbol_hook): Remember __rld_obj_head symbol
        in rld_symbol.
        (_bfd_mips_elf_create_dynamic_sections): Remember __rld_map symbol
        in rld_symbol.
        (_bfd_mips_elf_size_dynamic_sections): Set correct size for .rld_map.
        (_bfd_mips_elf_finish_dynamic_symbol): Remove .rld_map handling.
        (_bfd_mips_elf_finish_dynamic_sections): Use rld_symbol to
        calculate DT_MIPS_RLD_MAP value.
        (_bfd_mips_elf_link_hash_table_create): Initialize rld_symbol,
        quit initializing rld_value.

OK.  Remove stray / in ChangeLog entry

Yes, I noticed that only after hitting Send.

+         s->size += MIPS_ELF_RLD_MAP_SIZE(output_bfd);

Fix formatting here.

+               dyn.d_un.d_ptr = s->output_section->vma + s->output_offset
+                                + h->root.u.def.value;

And it's nice to write code that emacs auto-indent won't change, so
add parentheses

                dyn.d_un.d_ptr = (s->output_section->vma + s->output_offset
                                  + h->root.u.def.value);

I will fix those too.

<Prev in Thread] Current Thread [Next in Thread>