I am currently using MSYS_NT-10.0-22621 Legion 3.4.7.x86_64 2023-07-14 16:57 UTC x86_64 Msys
and using mingw64
My mingw64 version is
g++.exe (Rev7, Built by MSYS2 project) 13.1.0
Copyright (C) 2023 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
I wrote a simple main.cpp file which contained.
#include <iostream>
int main()
{
std::cout<<"Hello world"<<std::endl;
}
However, while building it, even though it creates a .exe file, it doesn't output anything.
So, I install a previous version, using Mingw Natively.
And my version was
g++.exe (MinGW-W64 x86_64-ucrt-posix-seh, built by Brecht Sanders) 12.3.0
Copyright (C) 2022 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
For Comparison, I compiled the same file into assembly.
12.3.0
.file "main.cpp"
.text
.lcomm _ZStL8__ioinit,1,1
.def __main; .scl 2; .type 32; .endef
.section .rdata,"dr"
.LC0:
.ascii "Hello world\0"
.text
.globl main
.def main; .scl 2; .type 32; .endef
.seh_proc main
main:
.LFB1991:
pushq %rbp
.seh_pushreg %rbp
movq %rsp, %rbp
.seh_setframe %rbp, 0
subq $32, %rsp
.seh_stackalloc 32
.seh_endprologue
call __main
leaq .LC0(%rip), %rax
movq %rax, %rdx
movq .refptr._ZSt4cout(%rip), %rax
movq %rax, %rcx
call _ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc
movq %rax, %rcx
movq .refptr._ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_(%rip), %rax
movq %rax, %rdx
call _ZNSolsEPFRSoS_E
movl $0, %eax
addq $32, %rsp
popq %rbp
ret
.seh_endproc
.def __tcf_0; .scl 3; .type 32; .endef
.seh_proc __tcf_0
__tcf_0:
.LFB2524:
pushq %rbp
.seh_pushreg %rbp
movq %rsp, %rbp
.seh_setframe %rbp, 0
subq $32, %rsp
.seh_stackalloc 32
.seh_endprologue
leaq _ZStL8__ioinit(%rip), %rax
movq %rax, %rcx
call _ZNSt8ios_base4InitD1Ev
nop
addq $32, %rsp
popq %rbp
ret
.seh_endproc
.def _Z41__static_initialization_and_destruction_0ii; .scl 3; .type 32; .endef
.seh_proc _Z41__static_initialization_and_destruction_0ii
_Z41__static_initialization_and_destruction_0ii:
.LFB2523:
pushq %rbp
.seh_pushreg %rbp
movq %rsp, %rbp
.seh_setframe %rbp, 0
subq $32, %rsp
.seh_stackalloc 32
.seh_endprologue
movl %ecx, 16(%rbp)
movl %edx, 24(%rbp)
cmpl $1, 16(%rbp)
jne .L6
cmpl $65535, 24(%rbp)
jne .L6
leaq _ZStL8__ioinit(%rip), %rax
movq %rax, %rcx
call _ZNSt8ios_base4InitC1Ev
leaq __tcf_0(%rip), %rax
movq %rax, %rcx
call atexit
.L6:
nop
addq $32, %rsp
popq %rbp
ret
.seh_endproc
.def _GLOBAL__sub_I_main; .scl 3; .type 32; .endef
.seh_proc _GLOBAL__sub_I_main
_GLOBAL__sub_I_main:
.LFB2525:
pushq %rbp
.seh_pushreg %rbp
movq %rsp, %rbp
.seh_setframe %rbp, 0
subq $32, %rsp
.seh_stackalloc 32
.seh_endprologue
movl $65535, %edx
movl $1, %ecx
call _Z41__static_initialization_and_destruction_0ii
nop
addq $32, %rsp
popq %rbp
ret
.seh_endproc
.section .ctors,"w"
.align 8
.quad _GLOBAL__sub_I_main
.ident "GCC: (MinGW-W64 x86_64-ucrt-posix-seh, built by Brecht Sanders) 12.3.0"
.def _ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc; .scl 2; .type 32; .endef
.def _ZNSolsEPFRSoS_E; .scl 2; .type 32; .endef
.def _ZNSt8ios_base4InitD1Ev; .scl 2; .type 32; .endef
.def _ZNSt8ios_base4InitC1Ev; .scl 2; .type 32; .endef
.def atexit; .scl 2; .type 32; .endef
.section .rdata$.refptr._ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_, "dr"
.globl .refptr._ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_
.linkonce discard
.refptr._ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_:
.quad _ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_
.section .rdata$.refptr._ZSt4cout, "dr"
.globl .refptr._ZSt4cout
.linkonce discard
.refptr._ZSt4cout:
.quad _ZSt4cout
And the 13.1 outputs
.file "main.cpp"
.text
.def __main; .scl 2; .type 32; .endef
.section .rdata,"dr"
.LC0:
.ascii "Hello world\0"
.text
.globl main
.def main; .scl 2; .type 32; .endef
.seh_proc main
main:
.LFB2073:
pushq %rbp
.seh_pushreg %rbp
movq %rsp, %rbp
.seh_setframe %rbp, 0
subq $32, %rsp
.seh_stackalloc 32
.seh_endprologue
call __main
leaq .LC0(%rip), %rax
movq %rax, %rdx
movq .refptr._ZSt4cout(%rip), %rax
movq %rax, %rcx
call _ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc
movq %rax, %rcx
movq .refptr._ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_(%rip), %rax
movq %rax, %rdx
call _ZNSolsEPFRSoS_E
movl $0, %eax
addq $32, %rsp
popq %rbp
ret
.seh_endproc
.section .rdata,"dr"
_ZNSt8__detail30__integer_to_chars_is_unsignedIjEE:
.byte 1
_ZNSt8__detail30__integer_to_chars_is_unsignedImEE:
.byte 1
_ZNSt8__detail30__integer_to_chars_is_unsignedIyEE:
.byte 1
.ident "GCC: (Rev7, Built by MSYS2 project) 13.1.0"
.def _ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc; .scl 2; .type 32; .endef
.def _ZNSolsEPFRSoS_E; .scl 2; .type 32; .endef
.section .rdata$.refptr._ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_, "dr"
.globl .refptr._ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_
.linkonce discard
.refptr._ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_:
.quad _ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_
.section .rdata$.refptr._ZSt4cout, "dr"
.globl .refptr._ZSt4cout
.linkonce discard
.refptr._ZSt4cout:
.quad _ZSt4cout
My command was same for the both version, (without any optimisation option)
for executable
g++ .\main.cpp -o .\main.exe
Using pacman -Qq | grep gcc
in msys2shell, mingw64shell and ucrt64shell,
I get these packages
gcc-libs
mingw-w64-x86_64-gcc
mingw-w64-x86_64-gcc-ada
mingw-w64-x86_64-gcc-fortran
mingw-w64-x86_64-gcc-libgfortran
mingw-w64-x86_64-gcc-libs
mingw-w64-x86_64-gcc-objc
mingw-w64-x86_64-libgccjit
Same for all the shells
When I ran $ pacman -Qi gcc-libs
in the shell it returned:
Name : gcc-libs
Version : 11.3.0-4
Description : Runtime libraries shipped by GCC
Architecture : x86_64
URL : https://gcc.gnu.org/
Licenses : GPL LGPL FDL custom
Groups : None
Provides : None
Depends On : None
Optional Deps : None
Required By : brotli bsdtar file inetutils libasprintf libassuan libbz2 libdb libexpat libgdbm
libgettextpo libgnutls libiconv libintl libksba liblz4 libnghttp2 libnpth libpcre libpcre2_8
libutil-linux libzstd ncurses wget zlib zstd
Optional For : None
Conflicts With : None
Replaces : None
Installed Size : 5.30 MiB
Packager : CI (msys2/msys2-autobuild/79096b75/5113523851)
Build Date : Mon, May 29, 2023 10:03:27 PM
Install Date : Tue, Jul 18, 2023 9:15:05 AM
Install Reason : Installed as a dependency for another package
Install Script : No
Validated By : Signature
Also, for more information, I'm adding this:
$ pacman -Qi | grep gcc-libs
Depends On : gcc-libs
Depends On : gcc-libs libbz2 libiconv libexpat liblzma liblz4 libopenssl libzstd zlib
Depends On : gcc-libs zlib libbz2 liblzma libzstd
Name : gcc-libs
Depends On : gcc-libs libintl libreadline ncurses
Depends On : gcc-libs
Depends On : gcc-libs libgpg-error
Depends On : gcc-libs
Depends On : gcc-libs
Depends On : gcc-libs
Depends On : gcc-libs libreadline libiconv libintl ncurses
Depends On : gcc-libs
Depends On : gcc-libs libidn2 libiconv libintl gmp libnettle libp11-kit libtasn1 zlib
Depends On : gcc-libs libintl
Depends On : gcc-libs libiconv
Depends On : gcc-libs libgpg-error
Depends On : gcc-libs
Depends On : gcc-libs
Depends On : gcc-libs
Depends On : gcc-libs
Depends On : gcc-libs
Depends On : gcc-libs libintl
Depends On : gcc-libs
Depends On : mingw-w64-x86_64-gcc-libs
Depends On : mingw-w64-x86_64-binutils mingw-w64-x86_64-crt mingw-w64-x86_64-headers mingw-w64-x86_64-isl mingw-w64-x86_64-libiconv mingw-w64-x86_64-gmp mingw-w64-x86_64-mpfr mingw-w64-x86_64-mpc mingw-w64-x86_64-gcc-libs=13.1.0-7 mingw-w64-x86_64-windows-default-manifest mingw-w64-x86_64-winpthreads mingw-w64-x86_64-zlib mingw-w64-x86_64-zstd
Depends On : mingw-w64-x86_64-gcc-libs=13.1.0-7
Name : mingw-w64-x86_64-gcc-libs
Depends On : mingw-w64-x86_64-gcc-libs mingw-w64-x86_64-mpc mingw-w64-x86_64-mpfr mingw-w64-x86_64-ncurses mingw-w64-x86_64-python mingw-w64-x86_64-readline mingw-w64-x86_64-xxhash mingw-w64-x86_64-zlib mingw-w64-x86_64-zstd
Depends On : mingw-w64-x86_64-expat mingw-w64-x86_64-gcc-libs mingw-w64-x86_64-libiconv
Depends On : mingw-w64-x86_64-gcc-libs mingw-w64-x86_64-gettext
Required By : mingw-w64-x86_64-gcc-libs mingw-w64-x86_64-winpthreads-git
Depends On : mingw-w64-x86_64-gcc-libs
Depends On : mingw-w64-x86_64-gcc-libs mingw-w64-x86_64-gmp
Depends On : mingw-w64-x86_64-gcc-libs mingw-w64-x86_64-expat mingw-w64-x86_64-bzip2 mingw-w64-x86_64-libffi mingw-w64-x86_64-mpdecimal mingw-w64-x86_64-ncurses mingw-w64-x86_64-openssl mingw-w64-x86_64-sqlite3 mingw-w64-x86_64-tcl mingw-w64-x86_64-tk mingw-w64-x86_64-zlib mingw-w64-x86_64-xz mingw-w64-x86_64-tzdata
Depends On : mingw-w64-x86_64-gcc-libs mingw-w64-x86_64-termcap
Depends On : mingw-w64-x86_64-gcc-libs mingw-w64-x86_64-readline mingw-w64-x86_64-tcl mingw-w64-x86_64-zlib
Depends On : mingw-w64-x86_64-gcc-libs mingw-w64-x86_64-zlib
Depends On : mingw-w64-x86_64-gcc-libs
Depends On : mingw-w64-x86_64-gcc-libs
Depends On : mingw-w64-x86_64-gcc-libs
Depends On : gcc-libs
Depends On : gcc-libs libiconv libidn2 libintl libgpgme libpcre2_8 libpsl libuuid libgnutls zlib
Depends On : gcc-libs
Depends On : gcc-libs libzstd
nurpr@Legion MSYS ~
$ pacman -Qi | grep mingw-w64-x86_64-gcc-libs
Depends On : mingw-w64-x86_64-gcc-libs
Depends On : mingw-w64-x86_64-binutils mingw-w64-x86_64-crt mingw-w64-x86_64-headers mingw-w64-x86_64-isl mingw-w64-x86_64-libiconv mingw-w64-x86_64-gmp mingw-w64-x86_64-mpfr mingw-w64-x86_64-mpc mingw-w64-x86_64-gcc-libs=13.1.0-7 mingw-w64-x86_64-windows-default-manifest mingw-w64-x86_64-winpthreads mingw-w64-x86_64-zlib mingw-w64-x86_64-zstd
Depends On : mingw-w64-x86_64-gcc-libs=13.1.0-7
Name : mingw-w64-x86_64-gcc-libs
Depends On : mingw-w64-x86_64-gcc-libs mingw-w64-x86_64-mpc mingw-w64-x86_64-mpfr mingw-w64-x86_64-ncurses mingw-w64-x86_64-python mingw-w64-x86_64-readline mingw-w64-x86_64-xxhash mingw-w64-x86_64-zlib mingw-w64-x86_64-zstd
Depends On : mingw-w64-x86_64-expat mingw-w64-x86_64-gcc-libs mingw-w64-x86_64-libiconv
Depends On : mingw-w64-x86_64-gcc-libs mingw-w64-x86_64-gettext
Required By : mingw-w64-x86_64-gcc-libs mingw-w64-x86_64-winpthreads-git
Depends On : mingw-w64-x86_64-gcc-libs
Depends On : mingw-w64-x86_64-gcc-libs mingw-w64-x86_64-gmp
Depends On : mingw-w64-x86_64-gcc-libs mingw-w64-x86_64-expat mingw-w64-x86_64-bzip2 mingw-w64-x86_64-libffi mingw-w64-x86_64-mpdecimal mingw-w64-x86_64-ncurses mingw-w64-x86_64-openssl mingw-w64-x86_64-sqlite3 mingw-w64-x86_64-tcl mingw-w64-x86_64-tk mingw-w64-x86_64-zlib mingw-w64-x86_64-xz mingw-w64-x86_64-tzdata
Depends On : mingw-w64-x86_64-gcc-libs mingw-w64-x86_64-termcap
Depends On : mingw-w64-x86_64-gcc-libs mingw-w64-x86_64-readline mingw-w64-x86_64-tcl mingw-w64-x86_64-zlib
Depends On : mingw-w64-x86_64-gcc-libs mingw-w64-x86_64-zlib
Depends On : mingw-w64-x86_64-gcc-libs
Depends On : mingw-w64-x86_64-gcc-libs
Depends On : mingw-w64-x86_64-gcc-libs
Running executable generated from 13.1 outputs nothing where, 12.3 executable outputs correctly. It used to work before I updated it. I also used same version of Mingw natively, and it had the same problem.
I also posted this on StackOverflow for help. Here is the link
I also have an issue on msys2 here
Is it some sort of bug in g++ 13.1. Why isn't it working?