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

    <tr>
        <th>Summary</th>
        <td>
            s390x does not handle PC offset correctly when using CREL
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            new issue
      </td>
    </tr>

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

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

<pre>
    ```cpp
#include <iostream>

void c() {
 throw std::runtime_error("e");
}

void f() {
    try {
        c();
 } catch (...) {
        std::cerr << "caught\n";
    }
}

int main() {
    f();
    return 0;
}
```
This could cause a segfault or an infinite loop when compiled with --crel:
```
# clang++ -fuse-ld=lld -Wa,--crel,--allow-experimental-crel 0.cc
# ./a.out
<does not exit>
```
a `brasl` seems to be branchign into itslef:
```
0x1001d04 <main+20> brasl  %r14,0x1001d04 <main+20>
```

Seems to be similar to this issue on arm: https://github.com/llvm/llvm-project/issues/141678
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJykk8-O67YOxp-G3hAxZMqOk4UX-TNZ3cVFW6DLQpZpW4UsBZI8mXn7QknmdNKDrioYsAWRn34fSasYzeSYO2iO0JwLtabZh24xVg2jCloVvR8-O9iKx6OvVxAHIGmctuvACPJkfEyB1QLyLZ-Jw7s3A2qgHdAeoT2COGCag79hTAPIA8hDWF0yC__BIfhwjyQGIqA9yBwP7fmb1viqhYgpfH7b5fW875GO0J5Rq6RnBNqVZfmandcPFM0hZBsgTwhEWq3TnKA5ucwjv1KeQF9YxiVclHE_gY0vGIgYOK3BoXjx9VVOEIffZhNR-9UOqNUaGRVGnka12oQ-oHJo3GicSYzW-yveZnao_XI1lge8mTTjZqMD2-zmVRpIorbKTUBHoCNuxjXyxg4gz9YOuPldAZ2eyflDWetvG_64cjALu6Ts_QxFqfVTrgS6qNKvKe_lafAc0fmE_GHSs__fABTCVvRBRQtbgZF5iZg89ox9UE7PZsrukkeTouXxZwfioxKiGkSdG_So95EEyDe8qyICNaGqgU7_GvnPmojDr984osmjHvIu5UaYGFdG71CFBeQB55SuMXPRBegymTSvfan9AnSx9v3rtbkG_yfrBHS5C0SgS1VX23ZXDJ0c9nKvCu6qtqFd3VRUF3PHY7vVvWhbofZ63KmWtdrSvmXVjkJXTWE6EtSIttpVkhqqy7GhutHcb6uxHUa1hVrwoowtM0Hpw1Tc7-6qet9UVWFVzzbe_2six7eHtTzTzbkI3R27X6cItbAmpvi3TDLJchflXnzgjwbPyg2W8f8n9OMYOaH2IbBO9vMxkWs0bsLTL2__K9Zgu_9Stzv-e0d_BQAA__-_bVej">