<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">