<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/116015>116015</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
Static library compiled with -no-rtti breaks exception handling in an executable it's linked into on ARM Mac
</td>
</tr>
<tr>
<th>Labels</th>
<td>
new issue
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
Harrm
</td>
</tr>
</table>
<pre>
Hi!
This issue is present on both Apple Clang 16 (Apple clang version 16.0.0 (clang-1600.0.26.3) and Clang 19 installed from Homebrew (Homebrew clang version 19.1.3).
It can be reproduced with a following code:
lib.cpp
```cpp
#include <stdexcept>
int foo(int x) {
throw std::runtime_error("aaa");
return x * x;
}
```
main.cpp
```cpp
#include <stdexcept>
#include <system_error>
#include <iostream>
int main() {
try {
throw std::system_error(std::make_error_code(std::errc::bad_address));
} catch(std::runtime_error e) {
std::cout << "Success\n";
} catch(...) {
std::cout << "Fail\n";
}
}
```
I build it using the following flags:
```sh
clang++ -fno-rtti -o build/lib.o -c lib.cpp
clang++ -o build/main_fail main.cpp build/lib.o
clang++ -o build/main_success main.cpp
```
On mac, main_success prints "Success" and main_fail prints "Fail", despite executing the same code.
It works fine (both print "Success") on Linux with clang 19.
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJykVV1v6zYM_TXyCxHDpp04efBDmi7oBXYxYHfvhSwxsVZZMiS5Sf_9IDsfTteLbVhRJAIlHpKH5An3Xh0NUc2WT2z5nPAhtNbVL9y5Lmms_KhfFMOcZc8s206ff7TKg_J-IFAeekeeTABroLGhhW3fa4Kd5uYI-QoYrieLGC3v5LyyBvJVmqVZvB3ti3yVZWmW4iotGG6AG3mF2IAyPnCtScLB2Q5ebEeNo1N0vp0_oW_SfARK53l_CyC4gYbAUe-sHARJOKnQAoeD1dqelDmCsJJYsZ07atWkou8vplU2_d8tWCgj9CAJWLHzQdJZUB9Y8cscRJkAB2sZruPpHKtk1dN0BwAQWmdP4IOMwYutG0xQHb2Sc9YxXDNEzjlDZLhhxczPURicgTMw3ML5dsWq50_5zpPpuDL_q6TH-w8fqLuk-vUTZX1wxLsvSIm5jAV-JsR9zAyf6HkIieubveNvF85ex0bOrsg5MZ0aLl-5lI68j2zOCWXVMwgeRDv3fOgF0N8yjX-3x8IOIVbMih0wxB-DEDHOcmdi8-adm8dK0_Q_we650j_B_Df9_wbNoLQEFWDwcepDS7MdOGh-9PcluCL4djKMy8bwieETLA7GLlwIChZ2AmW4jwtjYSHgsjnwhd_9dRyA1wNXGq5j-Qj0z85-Ihl-Mtbzyn8z0HHBcAcPnr1TJvh5wxBHFbond38ykh83cQeSfK8CAZ1JDOHKpOcdjUKS3pTnZN2bh4MyFHVrVMoR8DFknAFr4FdlhvMkTeKigmki60Juig1PqM6rIi83uMQqaeuyaqrVepkdypLzjK-oRMmrZkVY8I3cHBJVY4ZlnudFnmXrskqxzMSapCwqjkuUGSsz6rjSqdbvXWrdMRnVvc7zVZYvE80b0n78gUA0dJq0P2a7fE5cHZ0WzXD0rMy08sHfYYIKmuofgQc1zoLj7gOE7Xqlr9K7uI5P44i_eZiEJop4y43UkVFlgJsLw7zRBCowrDxoZd5IgjLBRtK2v3-H71wkg9N1G0I_DjDuGe6PKrRDkwrbxZHS79evRe_snyQCw_1Ykme4v9T8XuNfAQAA___dmh6z">