<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/60392>60392</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
LLD -Wl,-z,notext on AArch64 breaks exception handling unwind
</td>
</tr>
<tr>
<th>Labels</th>
<td>
lld,
backend:AArch64,
lld:ELF
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
MatzeB
</td>
</tr>
</table>
<pre>
We see exception handling unwind failing on aarch64/linux when using `clang -fuse-ld=lld -Wl,-z,notext`.
Reproducer:
```
extern "C" int puts(const char* str);
void __attribute__((noinline)) raise() { throw "hello!"; }
bool __attribute__((noinline)) foo() {
try {
raise();
} catch (...) {
return true;
}
return true;
}
int main() {
foo();
puts("all fine.\n");
return 0;
}
```
trying this on llvm-15 or a revent git version (9470de65bb33a18842d64ab2ab777902613ee014). Gives me:
```
$ build/bin/clang++ -fuse-ld=lld -Wl,-z,notext repro.cpp && ./a.out
terminate called after throwing an instance of 'char const*'
Aborted (core dumped)
```
(it should just print "all fine.")
This worked with older toolchains based on llvm-12. I bisected the problem to 464531193353584cef7003c11ceffee61a7dc38a
/ https://reviews.llvm.org/D122459 reverting this change does fix things for me...
```
$ build/bin/clang++ -v
clang version 17.0.0 (ssh://git.vip.facebook.com/data/gitrepos/osmeta/external/llvm-project 9470de65bb33a18842d64ab2ab777902613ee014)
Target: aarch64-redhat-linux-gnu
Thread model: posix
InstalledDir: /home/matthiasb/dev/llvm-project/llvm/build/bin
Found candidate GCC installation: /opt/rh/gcc-toolset-12/root/usr/lib/gcc/aarch64-redhat-linux/12
Selected GCC installation: /opt/rh/gcc-toolset-12/root/usr/lib/gcc/aarch64-redhat-linux/12
Candidate multilib: .;@m64
Selected multilib: .;@m64
Found CUDA installation: /usr/local/cuda, version 11.8
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJy8lktv47YTwD8NfRlYkEYv--CDY_-1WGD_lz6wx4AiRxY3FCmQlJPdT19QUhInTbvtpUCgmORwnr8ZiXuvLobowMo7Vp43fAq9dYf_8_CD7jatld8PXwk8EdCToDEoa6DnRmplLjCZR2UkdFzNS2uAcyf6qmDYaGWmJ3jsycDk4ymrUqG5ucC2mzxttWT5WWsJ26-a4Wn7g-HJ2EBPgVVpwtIzS4_L8xcanZWTIMfydYtV6fo3L-kpkDPAEE8MEZQJME7BM9wJa3wA0XPH8Ag-OIZ7lt_dqr9aJeH-nofgVDsFur9nuGO4M1YZrQzFG7gHx5Wn-WQPrL6D0Dv7GE32pLVlmDFElt8Bq8-32ltr9T_Q3ln7qnu5CRDc95vljQMvEUA0B4IH0QPDXZIk71QAOAqTMxDcRG-vPf_8SOBdEDGhA1fmzy6--H2je009Q-RaQ6cMJaw8mZifW7nVbvqB0bfVXZ7BfY8UhV75CJrW12GblWAdcHB0JRPgogJcyfnIKMPdvqhTSVXZtnnOs92uQFkVvEXe1nW9T7HKcqI0KxjuE_ikruRhoFfEPnQFC2gnpSXDpo35aGakGd4xvPsp2OAiyYkYR2BYMawgYdjwxE5hjZHcoAwPBIJrTRJ4F8gtqMXguQFlfOBGENgOGNaRbJghZ3hkWC96jq11gSTMDeAI5DSMJGP2Pw5qpwL43k5awrfJBxhdrPibAi7Fu8nMb7EQj9Y9kIRHFXqwWkZfrdWi58p4aLkn-VorTOAztMqTiK6FnmB0ttU0QLBQVEWZZ9k-z8u83BWCujpNc5FlgrqOqMp4LUW-47DCw7CBPoTRx3phw7BxdFX06JNoLLHuwrA5Z4hFuZ_xcOGFHtFzcyGQljx06ilumouHzjoYKLbQauLtv7c5g5-QcF3EloH3zGRWJ2mSxqp43784flEhuaox6big1tqHRNiBYSN54Mupo9F6ho31A817y7jjOk7ZmNrR2W8kAvwL4NcacnehwPLj89zeOpI9D9t5eG8vZnqutSMuYbCSdJQerVdPy9HnyGNk9azieI6F6e1ADJuBh9Ar7tsYDF3fObsuY_ZusjirbOxkJAhupJKxFz6dTgv2WvP4_lnN2DEqcX1MkhDbCJ6nsM0w7lobDyfv5jdRu8jEZvsgToZNhovpX0kveP6HNk8vgQ6TDirezI-QxLFYpENVvPPs74SWzJ1-Px8_cn71zIqZHDFJzvD0CmeW7N6Nh4085HKf7_mGDllVl1laZ_ty0x-qqiqrNEXJi7Zud1neynJfdTl1oqhbWW3UAVPM0yxPY0tnZZIVmdjJtMpS7LKi2LEipYEr_dKuG-X9RIcqzfe40bwl7edPEkQd6UA2v9pbLh7ISJYfj8f1Q2M9iVL58X9fmrhTnjfuMNPWThfPilQrH15HwyaooOnw5cv5gxltDay6oXXEH_xff_hsJqcPb6fQRYV-atcWXgF_h_0caOznOdY_AgAA__-_LNeo">