[Bug target/46770] Replace .ctors/.dtors with .init_array/.fini_array on targets supporting them

hjl.tools at gmail dot com gcc-bugzilla@gcc.gnu.org
Mon Dec 13 20:48:00 GMT 2010


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46770

--- Comment #53 from H.J. Lu <hjl.tools at gmail dot com> 2010-12-13 20:47:44 UTC ---
(In reply to comment #52)
> (In reply to comment #51)
> > > If gcc switches from .ctors to .init_array, it needs to make sure to generate
> > > the constructors in forward order within the TU, rather than backwards order as
> > > it does in the .ctors section. I didn't see anything in HJ's patch that does
> > > that.
> > 
> > It uses priority, instead of MAX_INIT_PRIORITY - priority, to generate
> > NNNN for .init_arry.NNNN.
> 
> No, I was talking about order of constructors within a TU without using
> priority. If you have static constructors for A then B in your source file, gcc
> will output B's constructor before A's in the .ctors section, so that A's will
> run first. Where does your patch reverse that to account for the fact that
> .init_array sections are processed in forward order?


Yes, since

1. ld sorts .init_array sections in forward order.
2. ld.so processes .init_array section in forward order.



More information about the Gcc-bugs mailing list