[clang] [flang] [flang][Driver] Let the linker fail on multiple definitions of main() (PR #73124)
Michael Klemm via cfe-commits
cfe-commits at lists.llvm.org
Thu Dec 7 08:55:16 PST 2023
mjklemm wrote:
Thanks for the reproducer.
> The error shows up when linking a C program with a Fortran shared library, so maybe you weren't enabling building shared libraries?
I was building OpenBLAS using the "old" Makefile-based build. There the issue indeed does not happen. When I switched to your CMake configuration line, I was able to reproduce the problem.
The solution is to add `-fno-fortran-main` to the linker options via `CMAKE_SHARED_LINKER_FLAGS`. This will need PR https://github.com/llvm/llvm-project/pull/74139 land first. But this option will be a good way to control if the flang compiler should attempt linking in the `main` stub from its library.
It seems like `flang-new` when being used as a linker with `-shared` included Fortran_main in the shared library. This seems wrong to me. The option `-fno-fortran-main` avoids this. I'm pondering if `-shared` is buggy here. It will require a bit more digging on my end to figure that out.
https://github.com/llvm/llvm-project/pull/73124
More information about the cfe-commits
mailing list