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, 17 May 2016, Thomas Preudhomme wrote:

> > 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?
> 
> > +	    }
> >  	}
> 
> Can't we instead move error_ret_free_internal and error_ret_free_local at this 
> location and rewrite the if (r_type >= (unsigned int) R_ARM_max) to call 
> bfd_set_error and then use goto? That would avoid some code duplication, 
> wouldn't it?

 FWIW I suspect all these observations mean that you probably want to 
factor out this whole block.  Besides improving structure it would help 
readability too as parts of this code indent quite far to the right.

  Maciej


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