<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/130364>130364</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            [Emscripten][Clang] wasm-ld crash
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            clang
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          miloszmaki
      </td>
    </tr>
</table>

<pre>
    Trying to build a C++ project with Emscripten to a WASM, but linker crashes with the following stack dump:
```
0.      Program arguments: /home/user1/emsdk/upstream/bin/wasm-ld @/tmp/emscripten_0aer_qq7.rsp.utf-8
1.      Running pass "cgscc(function-attrs)" on module "ld-temp.o"
 #0 0x0000574add0e7b88 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/home/user1/emsdk/upstream/bin/wasm-ld+0x1046b88)
 #1 0x0000574add0e4eee llvm::sys::RunSignalHandlers() (/home/user1/emsdk/upstream/bin/wasm-ld+0x1043eee)
 #2 0x0000574add0e877f SignalHandler(int) Signals.cpp:0:0
 #3 0x0000724181045330 (/lib/x86_64-linux-gnu/libc.so.6+0x45330)
 #4 0x0000574ade78047c checkFunctionMemoryAccess(llvm::Function&, bool, llvm::AAResults&, llvm::SmallSetVector<llvm::Function*, 8u> const&) (.llvm.10950425614668631022) FunctionAttrs.cpp:0:0
 #5 0x0000574ade7818ea llvm::SmallSet<llvm::Function*, 8u, std::__2::less<llvm::Function*>> deriveAttrsInPostOrder<llvm::PostOrderFunctionAttrsPass::run(llvm::LazyCallGraph::SCC&, llvm::AnalysisManager<llvm::LazyCallGraph::SCC, llvm::LazyCallGraph&>&, llvm::LazyCallGraph&, llvm::CGSCCUpdateResult&)::$_0&>(llvm::ArrayRef<llvm::Function*>, llvm::PostOrderFunctionAttrsPass::run(llvm::LazyCallGraph::SCC&, llvm::AnalysisManager<llvm::LazyCallGraph::SCC, llvm::LazyCallGraph&>&, llvm::LazyCallGraph&, llvm::CGSCCUpdateResult&)::$_0&, bool) FunctionAttrs.cpp:0:0
 #6 0x0000574ade780f4a llvm::PostOrderFunctionAttrsPass::run(llvm::LazyCallGraph::SCC&, llvm::AnalysisManager<llvm::LazyCallGraph::SCC, llvm::LazyCallGraph&>&, llvm::LazyCallGraph&, llvm::CGSCCUpdateResult&) (/home/user1/emsdk/upstream/bin/wasm-ld+0x26dff4a)
 #7 0x0000574ade0178ad llvm::detail::PassModel<llvm::LazyCallGraph::SCC, llvm::PostOrderFunctionAttrsPass, llvm::AnalysisManager<llvm::LazyCallGraph::SCC, llvm::LazyCallGraph&>, llvm::LazyCallGraph&, llvm::CGSCCUpdateResult&>::run(llvm::LazyCallGraph::SCC&, llvm::AnalysisManager<llvm::LazyCallGraph::SCC, llvm::LazyCallGraph&>&, llvm::LazyCallGraph&, llvm::CGSCCUpdateResult&) PassBuilder.cpp:0:0
 #8 0x0000574adf37e11d llvm::ModuleToPostOrderCGSCCPassAdaptor::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/home/user1/emsdk/upstream/bin/wasm-ld+0x32dd11d)
 #9 0x0000574addff432d llvm::detail::PassModel<llvm::Module, llvm::ModuleToPostOrderCGSCCPassAdaptor, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) PassBuilder.cpp:0:0
#10 0x0000574adfc3af4a llvm::PassManager<llvm::Module, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/home/user1/emsdk/upstream/bin/wasm-ld+0x3b99f4a)
#11 0x0000574addf477e6 llvm::lto::opt(llvm::lto::Config const&, llvm::TargetMachine*, unsigned int, llvm::Module&, bool, llvm::ModuleSummaryIndex*, llvm::ModuleSummaryIndex const*, std::__2::vector<unsigned char, std::__2::allocator<unsigned char>> const&) (/home/user1/emsdk/upstream/bin/wasm-ld+0x1ea67e6)
#12 0x0000574addf49c73 llvm::lto::backend(llvm::lto::Config const&, std::__2::function<llvm::Expected<std::__2::unique_ptr<llvm::CachedFileStream, std::__2::default_delete<llvm::CachedFileStream>>> (unsigned int, llvm::Twine const&)>, unsigned int, llvm::Module&, llvm::ModuleSummaryIndex&) (/home/user1/emsdk/upstream/bin/wasm-ld+0x1ea8c73)
#13 0x0000574addf334df llvm::lto::LTO::runRegularLTO(std::__2::function<llvm::Expected<std::__2::unique_ptr<llvm::CachedFileStream, std::__2::default_delete<llvm::CachedFileStream>>> (unsigned int, llvm::Twine const&)>) (/home/user1/emsdk/upstream/bin/wasm-ld+0x1e924df)
#14 0x0000574addf3275a llvm::lto::LTO::run(std::__2::function<llvm::Expected<std::__2::unique_ptr<llvm::CachedFileStream, std::__2::default_delete<llvm::CachedFileStream>>> (unsigned int, llvm::Twine const&)>, llvm::FileCache) (/home/user1/emsdk/upstream/bin/wasm-ld+0x1e9175a)
#15 0x0000574add5956ed lld::wasm::BitcodeCompiler::compile() (/home/user1/emsdk/upstream/bin/wasm-ld+0x14f46ed)
#16 0x0000574add598e54 lld::wasm::SymbolTable::compileBitcodeFiles() (/home/user1/emsdk/upstream/bin/wasm-ld+0x14f7e54)
#17 0x0000574add57f23c lld::wasm::(anonymous namespace)::LinkerDriver::linkerMain(llvm::ArrayRef<char const*>) Driver.cpp:0:0
#18 0x0000574add579228 lld::wasm::link(llvm::ArrayRef<char const*>, llvm::raw_ostream&, llvm::raw_ostream&, bool, bool) (/home/user1/emsdk/upstream/bin/wasm-ld+0x14d8228)
#19 0x0000574add0eabe0 lld::unsafeLldMain(llvm::ArrayRef<char const*>, llvm::raw_ostream&, llvm::raw_ostream&, llvm::ArrayRef<lld::DriverDef>, bool) (/home/user1/emsdk/upstream/bin/wasm-ld+0x1049be0)
#20 0x0000574add02a981 lld_main(int, char**, llvm::ToolContext const&) (/home/user1/emsdk/upstream/bin/wasm-ld+0xf89981)
#21 0x0000574add02b374 main (/home/user1/emsdk/upstream/bin/wasm-ld+0xf8a374)
#22 0x000072418102a1ca __libc_start_call_main ./csu/../sysdeps/nptl/libc_start_call_main.h:74:3
#23 0x000072418102a28b call_init ./csu/../csu/libc-start.c:128:20
#24 0x000072418102a28b __libc_start_main ./csu/../csu/libc-start.c:347:5
#25 0x0000574adcf9786a _start (/home/user1/emsdk/upstream/bin/wasm-ld+0xef686a)
em++: error: '/home/user1/emsdk/upstream/bin/wasm-ld @/tmp/emscripten_0aer_qq7.rsp.utf-8' failed (received SIGSEGV (-11))
```
I'm using:
```
Ubuntu clang version 18.1.8 (++20240731025043+3b5b5c1ec4a3-1~exp1~20240731145144.92)
Target: x86_64-pc-linux-gnu
Thread model: posix
InstalledDir: /usr/bin
```
and Emscripten v3.1.74
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJzkWV9v2zgS_zTMCxFDIql_D3lQnLhXoMEWdXbv0aDIkc0LRWlFKo33YT_7gZIcW46TNnUXOFyLBlHE4cxvfjOkhkNurVobgCsUXaPo5oJ3blO3V5XStf2r4g_qoqjl9uq-3Sqzxq7GRae0xBzPEblG5Bo3bf0fEA5_VW6DbysrWtU4MF6U43_nyztE5rjoHNbKPECLRcvtBuwg7zaAy1rr-qvXbh0XD1h2VYNojoIcxcH4P8iDGe7_fW7rdcsrzNt1V4FxFtEcI7LY1BUgsugstCEiC6isfPB_N9a1wCtEFoUyiCy-cltdaokRCxBZuKoZhEfUq4BDu_rzz2TW2mbWufIyRUEejra_dMZ4nA23FiNCxNoKgUhadkY4VZtL7lxrEckQIbg2uKplp8FLannpoGpmNSIEBR4wDXDwFARBECWMSxlAUqQp1vqx8r7T3G7t8PC5VcYtPTP3LReASLoXavnXVb1zMPZEK-MQyTAi6fs5QeQ6eAoDFhdp6p0YcIZHOBkAnML5pTNLtTZc_4sbqcHzkJ4NhQLAHgo5gpImSYknRhFJRwaG13YmGp9MQf8zaKGjloSwMA0DFlEajCi1KhBZPKXxKmaXWpnu6XJtumFAzGw9i3tg_ZQ9LHYIC5I0YInAYgPiYTEmxh1UdbvNhQBrJwHcCYzRK-pa-997gTz_ArbTzo4S-5FlxbVegvsDhKtbROentOZ-TtoheotFbazrtfQxmXnxWRhkUcBIFIcsjtOYhgEhXmCnIfcJfYLD6MjlMAV-Ats3UJE5tk4Oo6sVGR605-i1efTWuyKhVY_QY_toPtfW_dZKmFLw_HbiyWdux2xtOzMJxCf-13bOtf7Q8mYzOjGfvyA9N1xvrbJ33PD1kcnXVBzOn8qQ2Dt0bOOFzGR0_mE5n__eSO5gyIwhpMMgImwV7NQeeJe3Ld9-gfItXidWfnH6npfit1dCfLz4S8Z_YSLP2O5JLMuS8f2-mkyoDcIk5fIAgQTHlR5p5tbe1RL0u5l4I0D_PONn0u13w__LJPL0X_s6E9oTSy49zIuSJhCGh3lx11dd9_VzZHsrXmUuedN_K0-RNkx7F0njlNHtc3KfEinDUO5zP5uUOmXJKHlf7u_cmb-LmR9w_bUk_Al8vp4Gvi6dFNCloPxo5_W0vG7kf8vTMzKnyLLnXdPTMq3XS5YkEB-g0q4eHurGTbx4HpjXplTrg3rx0Kl73q7B3XGxUQbGSq4z_RFSDoePlwn3anE7DC-7quLt9qOR8DRqfEtkByw_XT4-7srhZ1Riw9vTslzrWvBT4kOdeVQy_-gxBnicQLyPEDmKUCYSeipCBRcPYOR3R-mlg7uD6ST3bp8aEA4kovOXMzqj_uxg1bhpvs652IBcKA3L0dFT5iSUvNNuJUGDg7cVjOvp1hP7egLdf1UGDuMwfja_M-XeTrXz45qKhO7jSqdxpZTJ8lRcP93_9ryRfIF1p3nrX5H0lwngebRnhMlyTzs7op0kEf8W7b8S2YcSXmWv_OwYhEl08NGZ9ANklEUx-HJldNlPHZ6ulRO1hHldNUrDWImJ4a_z-0WsZDHIPar4CFUKETuFarmtilrf88J_kg8QjWg9aT-hm8XKBCK2R5dM0SUloeIUOkRSbmqzrerOYsMrsE3fBxwPrZ_6tupNqx53fA6N1juuzGtNAP-N239HhxU5aDhRZ6VHODNC0lM4vdnvN3iYlS_bmG-N7eqI3Qn9nJDIlJB0H5LsqMHICwj2rnbG8hI-afk-an_c01caOCOcIWA3_uXtT-IjYFkBwTMf5KhHTXiWhp6PVTUwMO5AQ4WVvyje7utaz2vj4Mn9pFqqTLMsDfcAj5rTpKAJwx7cWTY4TfbrlJBpv5jwUHC8WmlViJV1vHUrwbXuKcEzRBbCdogsZv7Rbq2ExiKyMI3TYx_5eNLMn68ThmhOR4v02CJJC9zLK6PcsZHh0Wu-7DXPBKJ5SFJEczKuYcJOaZz4cAr-Sc2UJYjm0ah4svGLMkvSmONB5RkhgDJO4_HzAtVw0YRojqFt--M7RiT5R-98SIJLrjRI70QLAtQjSLz8-GF5--EP_-4y7LNwSJKDa6qPiCQV7qwya_TiDuv3ojOuw0Jzs8aP0FpVGxyms3CWDmR5P0lAWJDQMCBRwCgi17SIikiEIBinl-Hf8NSEf--EQhaFjM0yMiAZTmeeoPEOoxEH1xhBfr9pgUtcDd2CHDe1VU8etbGOaw3yRo30LjrbjvxNfeBGHt7yPdJZOEvYhbyiMqMZv4CrMGEhTdOQxBebq4imGZNCBBENQigyydOCcRAlKbksSHChroj3lAYJIVFEollRSMZpKBORQJaFFLEAKq70cGFRt-sLZW0HVyENaMwuNC9A2_72kpCeWUQIim4u2is_4bLo1haxQCvr7F6FU073V557V1B0g6Lrea8husG7nOmvKy-6Vl9tnGv6ri1ZILJYK7fpipmofZr1W97w63K8D0Vk0eP0i3-E-nhF_hsAAP__FU_n7Q">