<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/126051>126051</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[flang] linker_flags.f90 fails with -DCLANG_DEFAULT_UNWINDLIB=libgcc
</td>
</tr>
<tr>
<th>Labels</th>
<td>
flang:driver
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
nikic
</td>
</tr>
</table>
<pre>
```
RUN: at line 14: /builddir/build/BUILD/flang-20.1.0_rc1-build/llvm-project-20.1.0-rc1.src/flang/redhat-linux-build/bin/flang -### -rtlib=compiler-rt --target=aarch64-linux-gnu /builddir/build/BUILD/flang-20.1.0_rc1-build/llvm-project-20.1.0-rc1.src/flang/test/Driver/Inputs/hello.f90 2>&1 | /usr/lib64/llvm20/bin/FileCheck /builddir/build/BUILD/flang-20.1.0_rc1-build/llvm-project-20.1.0-rc1.src/flang/test/Driver/linker-flags.f90 --check-prefixes=CHECK,UNIX,COMPILER-RT
+ /builddir/build/BUILD/flang-20.1.0_rc1-build/llvm-project-20.1.0-rc1.src/flang/redhat-linux-build/bin/flang -### -rtlib=compiler-rt --target=aarch64-linux-gnu /builddir/build/BUILD/flang-20.1.0_rc1-build/llvm-project-20.1.0-rc1.src/flang/test/Driver/Inputs/hello.f90
+ /usr/lib64/llvm20/bin/FileCheck /builddir/build/BUILD/flang-20.1.0_rc1-build/llvm-project-20.1.0-rc1.src/flang/test/Driver/linker-flags.f90 --check-prefixes=CHECK,UNIX,COMPILER-RT
/builddir/build/BUILD/flang-20.1.0_rc1-build/llvm-project-20.1.0-rc1.src/flang/test/Driver/linker-flags.f90:68:20: error: COMPILER-RT-NOT: excluded string found in input
! COMPILER-RT-NOT: "-lgcc_s"
^
<stdin>:6:880: note: found here
"/usr/bin/ld" "-EL" "--hash-style=gnu" "--build-id" "--eh-frame-hdr" "-m" "aarch64linux" "-dynamic-linker" "/lib/ld-linux-aarch64.so.1" "-o" "a.out" "/lib/../lib64/crt1.o" "/lib/../lib64/crti.o" "crtbegin.o" "-L/lib/../lib64" "-L/usr/lib/../lib64" "-L/lib" "-L/usr/lib" "/tmp/lit-tmp-5pv3rp85/hello-e5d40e.o" "-L/builddir/build/BUILD/flang-20.1.0_rc1-build/llvm-project-20.1.0-rc1.src/flang/redhat-linux-build/lib" "-lFortranRuntime" "-lFortranDecimal" "-lm" "/builddir/build/BUILD/flang-20.1.0_rc1-build/llvm-project-20.1.0-rc1.src/flang/redhat-linux-build/bin/../../../lib/clang/20/lib/aarch64-unknown-linux-gnu/libclang_rt.builtins.a" "--as-needed" "-lgcc_s" "--no-as-needed" "-lc" "/builddir/build/BUILD/flang-20.1.0_rc1-build/llvm-project-20.1.0-rc1.src/flang/redhat-linux-build/bin/../../../lib/clang/20/lib/aarch64-unknown-linux-gnu/libclang_rt.builtins.a" "--as-needed" "-lgcc_s" "--no-as-needed" "crtend.o" "/lib/../lib64/crtn.o"
^~~~~~~~~
Input file: <stdin>
Check file: /builddir/build/BUILD/flang-20.1.0_rc1-build/llvm-project-20.1.0-rc1.src/flang/test/Driver/linker-flags.f90
-dump-input=help explains the following input dump.
Input was:
<<<<<<
1: flang version 20.1.0 (Fedora 20.1.0~rc1-3.fc42)
2: Target: aarch64-unknown-linux-gnu
3: Thread model: posix
4: InstalledDir: /builddir/build/BUILD/flang-20.1.0_rc1-build/llvm-project-20.1.0-rc1.src/flang/redhat-linux-build/bin
5: "/builddir/build/BUILD/flang-20.1.0_rc1-build/llvm-project-20.1.0-rc1.src/flang/redhat-linux-build/bin/flang" "-fc1" "-triple" "aarch64-unknown-linux-gnu" "-emit-obj" "-mrelocation-model" "static" "-target-cpu" "generic" "-target-feature" "+outline-atomics" "-target-feature" "+v8a" "-target-feature" "+fp-armv8" "-target-feature" "+neon" "-resource-dir" "/builddir/build/BUILD/flang-20.1.0_rc1-build/llvm-project-20.1.0-rc1.src/flang/redhat-linux-build/bin/../../../lib/clang/20" "-mframe-pointer=non-leaf" "-o" "/tmp/lit-tmp-5pv3rp85/hello-e5d40e.o" "-x" "f95-cpp-input" "/builddir/build/BUILD/flang-20.1.0_rc1-build/llvm-project-20.1.0-rc1.src/flang/test/Driver/Inputs/hello.f90"
6: "/usr/bin/ld" "-EL" "--hash-style=gnu" "--build-id" "--eh-frame-hdr" "-m" "aarch64linux" "-dynamic-linker" "/lib/ld-linux-aarch64.so.1" "-o" "a.out" "/lib/../lib64/crt1.o" "/lib/../lib64/crti.o" "crtbegin.o" "-L/lib/../lib64" "-L/usr/lib/../lib64" "-L/lib" "-L/usr/lib" "/tmp/lit-tmp-5pv3rp85/hello-e5d40e.o" "-L/builddir/build/BUILD/flang-20.1.0_rc1-build/llvm-project-20.1.0-rc1.src/flang/redhat-linux-build/lib" "-lFortranRuntime" "-lFortranDecimal" "-lm" "/builddir/build/BUILD/flang-20.1.0_rc1-build/llvm-project-20.1.0-rc1.src/flang/redhat-linux-build/bin/../../../lib/clang/20/lib/aarch64-unknown-linux-gnu/libclang_rt.builtins.a" "--as-needed" "-lgcc_s" "--no-as-needed" "-lc" "/builddir/build/BUILD/flang-20.1.0_rc1-build/llvm-project-20.1.0-rc1.src/flang/redhat-linux-build/bin/../../../lib/clang/20/lib/aarch64-unknown-linux-gnu/libclang_rt.builtins.a" "--as-needed" "-lgcc_s" "--no-as-needed" "crtend.o" "/lib/../lib64/crtn.o"
not:68 !~~~~~~~~ error: no match expected
>>>>>>
```
-lgcc_s gets pulled in via the unwind library here.
I'm not really sure what do do about this one. It looks like flang doesn't expose the `--unwindlib` flag from the driver. If I understand correctly, fortran doesn't have exceptions, so possibly it doesn't need to link an unwind library at all? I think it should be either that, or flang should expose --unwindlib.
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJzsWNFv8ygS_2vIC8KycZwmD3lI4-Quul739Omr7t4qDOOYLQYLcNq-7N9-AttJtttVb0-6r6tTI6u1md_ADDAzP2DOyaMGWKPiFhXljPW-MXat5ZPks8qI1zVapOOTbr493KN8g5nHSmrA2Tx8IbqveqmEkHZ6RXR_-3C4KxHd14rpI6FpkiXpo-UZmQBKnVrSWfMzcD_KieVZ4iyf1BDdWxAN80RJ3b-cVSupJwgmiObDg4n1SlYoL7lpO6nAEusxIZ7ZI3iUl4xZ3izmY2dH3f9vTffgPKL70soThO4Puuu9Q3TfgFImqVcppijfIbrIMLrZBmN6F4BKVov5OAxNz_7upYJtA_zpx5qtpH4CS2rFji4aTQgPVpDOQi1fwKG83P51t_0botuH-8O_EN1uf_r7Pw53u2_k23eUbhC9_doj__UeuUzg_-nm-ERrUb5ZLFG-oeENg7XGhpcrC8n9T9-j7IWrXoDAzlupj7g2vRZYaizDgkU_svf0EKVEHTl_dIhSlG7wb3-o2AX9fOu8kDokhHyzQPlmuYxWaeMh_B9GbMBC6Cb0Nu2IYQOEaaFxvN3d9EYa5hri_KsClJdH3Z8FcR6JPOsQaEhtWQukEXZqbMeXMSZiSEwy8apZKzkZpnRsHbZnNGYMoFE1cSbJJlUzdZuY3r_VTJKrPc6tzxLzEUSeIdz6Co5SnxvI3btaF9k5pn4XEWXvKkxW-baLTZ74tiNFd8pttyymGCZQiHkKvzbpB-fCKx_U3lhvmf7Way9beNtcApctU-fm9uLmp-TvuCaXP8NC8VEvpr-haUrbvX7S5llf0veAiBqP1iehdy-1S9h55zNHNICAcyyc43WQa_MOhH_Nyzvzwq0HLT6O2CFAYx4rdr-Mv5AE000sgLiWKia966yYbob6dpZ9auWIxhLRtx0ZSkBeNqA6DC-dYlI77BvAtVHKPId6ETE4wJNrP5-ZQ_lmSP9vn0uxyGL-j0zmBNZJo_FgOEZ0uQdhLBsbfgme5knN5xTRFb7qg4Y-vo8sZ4N_d19c6-RRp7HABG6NABW-O-PkyzUqngEO2nmmFIhS2k87E1xbVYzV91OJ5xQrNT8XP29lp-DXhfW96BzQ0EpPTPXzuSJbUIYzL40mw4oMAueZl_w8RlxmwrupnyNosL-R18B8b-EcrLem9-FYR5g3reTuI_hpyT6C1B1htj0tP8JpMHrCWHCmtxxIXLI_d5YdV2VgTp2R2oNFeamNJgpY_Zbx_HGyMPGtelUQ3k255gfMyn9wMAlWXAIuUFb8xUu_eOkXL_3ipX-yefljvDRkNW18vBzAiGYTQb1cEGiDW-Z5E9gecA8iMrjd2yfdXN-dBr44mIqP4B3u-sCXsNT4JFmki71-llpgJSvL7Gs8609sEdGbFmvjsQWm1Ct2vQX83DCPhQkPq0zvsW-kw0ZDgg8eK2OeHFbyCUbuKAw4jeiND2YbB3FMtEgJGQYOc7JIA_iIa2vaKBexACT4UOMD7rUA6zzTAnNjLXCvXhHd4noI0qsRGnYCDC8cusBVXAA5E7ijk5V6xdJfYcNSYW9wSNmY6bfTwDxmSqF8jw_BQf0UtF1jeiVwBRikb8Bi3zAfRjF29HZEjK5e-ZjMxDoXq3zFZrDObvLlcp4Vq2LWrJd8AQvBskVKOc0ZFzd5tSpqPq8hzXgNM7mmKS1Smi6yLM-zIlnlIqdpXmWr1VwsVxTNU2iZVEkIpMTY40w618M6o4u0yGaKVaBcvGqndIimfCPGEktRUc7sOoZg1R8dmqdKOu8ufXnpVbyoH1SLEg9V7vFy_VYzqRx-lr7BpNzebe7_8lju9puHu--PD_f_PNyXd4dblJdKVkfOZ71V68b7Lh5C6B7R_VH6pq8SbtoxG7xJCojuo0eBCYxOndb03wEAAP__PCVc1g">