Regression in 2.30 for MinGW constructors/destructors

Martin Storsjö martin@martin.st
Sun Jul 8 21:06:00 GMT 2018


Hi,

It seems like the following commit introduced a regression for 
constructors for MinGW:

commit ca6f2be7f6bc638fd4fad48def1fae4ae4d7906e
Author: Nick Clifton <nickc@redhat.com>
Date:   Thu Aug 10 13:17:12 2017 +0100

     Add support for PE startup files that want to define their own constructor and desctructor sequencing.

         * scripttempl/pep.sc: Enclose __CTOR_LIST__, ___CTOR_LIST__,
         __DTOR_LIST__ and ___DTOR_LIST__ in PROVIDE statements so that
         they can be overrridden by crt input files.
         * scripttempl/pe.sc: Likewise.

After this commit, setups with existing versions of mingw-w64 no longer 
run constructors.

The reason seems to be that if mingw-w64 startup files don't provide 
definitions of __CTOR_LIST__ etc (which they don't normally), the linker 
will fall back to a dummy __CTOR_LIST__ from libgcc.a(_ctors.o), and this 
__CTOR_LIST__ doesn't get sorted into the right location like either the 
linker script version does, or a manually defined one that provides 
explicit section placement.

// Martin



More information about the Binutils mailing list