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

--- Comment #29 from Óscar Fuentes <gcc_bugzilla at axeitado dot com> ---
(In reply to Eric Botcazou from comment #28)
> OK, I know what's wrong in the libstdc++.dll of GCC 11, now let's try to
> figure out why this is so...  Can you run 'nm' on one of the occurrences of
> crtend.o in the build tree (there are two copies of it)?  On my machine it
> yields:
> 
> 00000000 b .bss
> 00000000 d .ctors.65535
> 00000000 d .data
> 00000000 d .eh_frame
> 00000000 r .rdata$zzz
> 00000000 t .text
> 00000000 t .text.startup
> 00000000 d ___FRAME_END__
>          U ___gcc_register_frame
> 00000000 t _register_frame_ctor

I have quite a few crtend.o files in the build directory. A quick glance
indicates that .text.startup is missing:

$ for f in `find ./build-i686-w64-mingw32/ -name crtend.o` ; do echo $f && nm
$f ; done
./build-i686-w64-mingw32/gcc/crtend.o
00000000 b .bss
00000000 d .ctors.65535
00000000 d .data
00000000 r .eh_frame
00000000 r .rdata$zzz
00000000 t .text
00000000 r ___FRAME_END__
         U ___gcc_register_frame
00000000 t _register_frame_ctor
./build-i686-w64-mingw32/i686-w64-mingw32/libgcc/crtend.o
00000000 b .bss
00000000 d .ctors.65535
00000000 d .data
00000000 r .eh_frame
00000000 r .rdata$zzz
00000000 t .text
00000000 r ___FRAME_END__
         U ___gcc_register_frame
00000000 t _register_frame_ctor
./build-i686-w64-mingw32/prev-gcc/crtend.o
00000000 b .bss
00000000 d .ctors.65535
00000000 d .data
00000000 r .eh_frame
00000000 r .rdata$zzz
00000000 t .text
00000000 r ___FRAME_END__
         U ___gcc_register_frame
00000000 t _register_frame_ctor
./build-i686-w64-mingw32/prev-i686-w64-mingw32/libgcc/crtend.o
00000000 b .bss
00000000 d .ctors.65535
00000000 d .data
00000000 r .eh_frame
00000000 r .rdata$zzz
00000000 t .text
00000000 r ___FRAME_END__
         U ___gcc_register_frame
00000000 t _register_frame_ctor
./build-i686-w64-mingw32/stage1-gcc/crtend.o
00000000 b .bss
00000000 d .ctors.65535
00000000 d .data
00000000 r .eh_frame
00000000 r .rdata$zzz
00000000 t .text
00000000 r ___FRAME_END__
         U ___gcc_register_frame
00000000 t _register_frame_ctor
./build-i686-w64-mingw32/stage1-i686-w64-mingw32/libgcc/crtend.o
00000000 b .bss
00000000 d .ctors.65535
00000000 d .data
00000000 r .eh_frame
00000000 r .rdata$zzz
00000000 t .text
00000000 r ___FRAME_END__
         U ___gcc_register_frame
00000000 t _register_frame_ctor



These are the crtend.o from the installed gcc 10.3 (which works fine):

$ for f in `find /mingw32 -name crtend.o` ; do echo $f && nm $f ; done         
/mingw32/i686-w64-mingw32/lib/crtend.o
00000000 b .bss
00000000 d .data
00000000 r .rdata$zzz
00000000 t .text
/mingw32/lib/gcc/i686-w64-mingw32/10.3.0/crtend.o
00000000 b .bss
00000000 d .ctors.65535
00000000 d .data
00000000 r .eh_frame
00000000 r .rdata$zzz
00000000 t .text
00000000 t .text.startup
00000000 r ___FRAME_END__
         U ___gcc_register_frame
00000000 t _register_frame_ctor

Reply via email to