https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115643
--- Comment #4 from Sergei Trofimovich <slyfox at gcc dot gnu.org> --- `gcc` produces the following assembly: $ gcc/xgcc -Bgcc -fbuilding-libgcc -fno-stack-protector -S __main.c.c -o - -O2 .file "__main.c.c" .text .p2align 4 .globl ___do_global_dtors .def ___do_global_dtors; .scl 2; .type 32; .endef ___do_global_dtors: movl ___CTOR_LIST__, %eax testl %eax, %eax je L1 L3: jmp L3 .p2align 4,,10 .p2align 3 L1: ret .ident "GCC: (GNU) 15.0.0 99999999 (experimental)" .section .rdata$refptr.__CTOR_LIST__, "dr" .globl refptr.__CTOR_LIST__ .linkonce discard refptr.__CTOR_LIST__: .quad __CTOR_LIST__ `.quad __CTOR_LIST__` looks wrong for a 32-bit target. For comparison `gcc-13` produces slightly different result: $ i686-w64-mingw32-gcc-13.3.0 -fbuilding-libgcc -fno-stack-protector -S __main.c.c -o - -O2 .file "__main.c.c" .text .p2align 4 .globl ___do_global_dtors .def ___do_global_dtors; .scl 2; .type 32; .endef ___do_global_dtors: movl ___CTOR_LIST__, %eax testl %eax, %eax je L1 L3: jmp L3 .p2align 4,,10 .p2align 3 L1: ret .ident "GCC: (GNU) 13.3.0"