https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99759

Alan Modra <amodra at gmail dot com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |amodra at gmail dot com
             Status|WAITING                     |NEW

--- Comment #2 from Alan Modra <amodra at gmail dot com> ---
> this means the ctors.65535 will come last.
Nope, it will come first.  And since DT_INIT_ARRAY pointers are executed in the
order they appear in the array, it will be one of the first to run. 
.init_array and .ctors sorting is complicated.  ld.bfd will sort .init_array.0
(highest priority .init_array section) and .ctors.65535 (highest priority
.ctors section) together.

I assume this comment:
> The input section description is quite close but does not sort .init_array.* 
> and .ctors.* with the same priority together.
is referring to lld.

> I don't see any issue here really in the end because GCC will produce 
> init_array most of the time.
So the issue really is that lld doesn't support mixing of .ctors.* and
.init_array.*.

It might be nice for libgcc to use .init_array.0 here instead of .ctors.65536
whenever gcc will use .init_array in compiled code.

Reply via email to