This is the mail archive of the binutils@sourceware.org mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH] SEGV whilst placing sections


On Tue, Jun 20, 2006 at 03:08:52PM +0100, Mark Shinwell wrote:
> In this case, the "after" parameter to lang_insert_orphan () corresponds
> to the .rodata section, the last in the linked list of "asection"s.
> The upshot is that place->section points at the "next" entry of the final
> section in the list, .rodata.  This "next" pointer is NULL, so "as" ends up
> NULL, and we fault when "as->prev" is computed.

> +      if (!as)
> +        {
> +          /* Put the section at the end of the list.  */

Isn't the section already at the end of the list in this case?

> +	  /* Unlink the section.  */
> +	  bfd_section_list_remove (output_bfd, snew);
> +
> +	  /* Now tack it back on in the right place.  */
> +	  bfd_section_list_append (output_bfd, snew);
> +        }
> +      else if (as != snew && as->prev != snew)

So really all you need to do is change the condition to

      if (as != snew && as != NULL && as->prev != snew)

-- 
Alan Modra
IBM OzLabs - Linux Technology Centre


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]