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: bfd/elf32-arm.c build breakage


On Tue, May 17, 2016 at 11:24:35AM +0100, Thomas Preudhomme wrote:
> On Tuesday 17 May 2016 11:11:07 Alan Modra wrote:
> > On Mon, May 16, 2016 at 11:16:10AM +0100, Thomas Preudhomme wrote:
> > > Ok, I finally managed to reproduce. I needed to build with -O3. The patch
> > > fixes the warning. Let me do a bit more tests and then I'll submit it.
> > 
> > Something like this, I expect.
> > 
> > diff --git a/bfd/elf32-arm.c b/bfd/elf32-arm.c
> > index 65b593a..f67c59a 100644
> > --- a/bfd/elf32-arm.c
> > +++ b/bfd/elf32-arm.c
> > @@ -5663,6 +5663,15 @@ elf32_arm_size_stubs (bfd *output_bfd,
> >  		  != 0)
> >  		goto error_ret_free_local;
> >  	    }
> > +
> > +	  if (local_syms != NULL
> > +	      && symtab_hdr->contents != (unsigned char *) local_syms)
> > +	    {
> 
> Oops, I had missed that normal exiting of the block was not handled.
> 
> > +	      if (!info->keep_memory)
> > +		free (local_syms);
> > +	      else
> > +		symtab_hdr->contents = (unsigned char *) local_syms;
> 
> Should we make that check at the error_ret_free_local label as well?

I think it's slightly better to not cache the symbols.  There isn't
much point in optimizing an error path, and it's more conservative to
free memory.  Committing with this ChangeLog:

	* elf32-arm.c (elf32_arm_size_stubs): Free or cache local syms
	for each BFD.  Don't goto error_ret_free_local from outside loop.

-- 
Alan Modra
Australia Development Lab, IBM


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