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: [GOLD] powerpc64 --gc-sections RFC


On Wed, Sep 05, 2012 at 05:31:40PM -0700, Ian Lance Taylor wrote:
> > +  // Given a reference from SRC_OBJ, SRC_INDX to a location specified
> > +  // by DST_OBJ, DST_INDX and DST_OFF, return the true destination
> > +  // section that should be marked during --gc-sections processing.
> > +
> > +  virtual unsigned int
> > +  dest_shndx(Object* /* src_obj */,
> > +            unsigned int /* src_indx */,
> > +            Object* /* dst_obj */,
> > +            unsigned int dst_indx,
> > +            typename elfcpp::Elf_types<size>::Elf_Addr /* dst_off */)
> > +  { return dst_indx; }
> 
> This should use the do_dest_shndx approach as in other virtual
> functions.  Also dest_shndx isn't the best name, perhaps something
> like gc_ref_shndx.

I've revised the patch considerably.  I now want to add the following
to Sized_target, and I'm confused about the rules.

  // Handle target specific gc actions when adding a gc reference.
  virtual void
  do_gc_add_reference(Symbol_table* /* symtab */,
		      Object* /* src_obj */,
		      unsigned int /* src_shndx */,
		      Object* /* dst_obj */,
		      unsigned int /* dst_shndx */,
		      typename elfcpp::Elf_types<size>::Elf_Addr /* dst_off */)
  { }

Does this need a gc_add_reference in Sized_target?  Or should I make
that last parameter a uint64_t and treat this function like
adjust_elf_header/do_adjust_elf_header?  Note that in this case we
will be calling the function from gc.h:gc_process_relocs which is
templated on size so I'm thinking uint32_t -> uint64_t -> uint32_t
conversions for 32-bit targets is a little unclean.

-- 
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]