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

ian at airs dot com gcc-bugzilla@gcc.gnu.org
Sun Apr 22 21:19:00 GMT 2012


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

--- Comment #102 from Ian Lance Taylor <ian at airs dot com> 2012-04-22 21:16:14 UTC ---
To be clear, nothing has changed in collect2.  The only thing that has changed
is that data that was being emitted in the .ctors section is now being emitted
in the .init_array section (and similarly for .dtors and .fini_array).  The
reason this makes a difference is that the dynamic linker executes the entries
in .init_array, whereas gcc-provided startup code executes the entries in
.ctors.  And they happen to execute the entries in different orders.

The whole point of the change is in fact to execute the entries in a different
order, though I continue to think that this would be better handled in a
different way.

In other words, it is not the case that gcc is producing an anoymous opaque
object that the linker can not change.



More information about the Gcc-bugs mailing list