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

    <tr>
        <th>Summary</th>
        <td>
            -mbranch-protection=bti and -fexperimental-relative-c++-abi-vtables are not compatible 
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            lld,
            backend:AArch64
      </td>
    </tr>

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

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

<pre>
    LLD doesn't generate a landing pad for the PLT entry that belong to the relative vtables. 

Small reproducer: 

main.cpp
```
#include "v.hpp"

int main() {
    A* a = new B();
 a->do_something2();
    return 0;
}

```

v.hpp
```
struct A {
    virtual void do_something() = 0;
    virtual void do_something2();
};

struct B : public A
{
    void do_something() override;
    void do_something2() override;
};
```

v.cpp
```
#include "v.hpp"
void A::do_something2() { }
void B::do_something() { }
void B::do_something2() { }
```

```
CC="clang++ --target=aarch64-unknown-linux-gnu -fuse-ld=lld -mbranch-protection=bti"
F=-fexperimental-relative-c++-abi-vtables

${=CC} $F -shared v.cpp -o v.so -z force-bti
${=CC} $F main.cpp -L./ v.so -Wl,-rpath=. -z force-bti
qemu-aarch64-static -L /usr/aarch64-linux-gnu -cpu max ./a.out
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJyclM2O4zYMx5-GuRAyHCl2koMPSVxfdg4FWqDHQrYYW11ZcvWRne3TF87HNJnJFNgFDCcWKfL3JynJEHRviSoo9sB5La0m88XrEN3xiw4BOIeiXsgUB-erD-ZF69T36uWlRuUoWODriD1Z8jISSjTSKm17nKTCo_MYB8JfX35HstF_xzjIiC0ZZ3uM7mz0ZGTUJ8JTlK2hkCHkNeS7y_u3URqDnibvVOrIg9g92EepbdZN03WtzK_P5ZMLbTuTFCFwfsqGaZrF3W3XNuIcAvgG-BZhvb-sIyLugO9QIogaLX3D_cUHxM1FMhC_KPdncCPFQduev_dARE8xeYv52yKs63uA98Tn94X0mT1En7qIu0fSk_YxSYMnpxXeE91kifqO4H93vNcw4779v0fY49yKKbVGd3gT8wD1CYw7kfda0SPPJxwfvR-AnhfvZ8bhDLADMT_POGC9x7fWnZ33H51_xPdp4KeC3i0eDiBq4Lwzcs64B75HxqL0PUUQtZS-G8oVS_ardd8sM9qmV9bbhOyYAjGjQNTGKGRj66XtBjZ5F6mL2lkQdRv1W00aEDU70utEXo9kozTsdlhZd8nMZKvZ9eA-MPPVPAyiPhxgXSPwVYMsDNKTwnODkDk8ZcEh-2e-Jjpic-ZP996OObKXDHhz3fqHAX5gfpJxAFFnT2L9TWNit5KEKKPukL0g8CYFD7y5me6q1E0JR_mKcx6ZuRTfdWGhKqG2YisXVC3LzXpbbIp1sRiqblke25ZvFVd8KbfiKJftdlXm-Wq57EiKha54zkVe8s1ScF4UWbkptuVmzVdCtZtjUcIqp1FqkxlzGjPn-4UOIVFVimKTL4xsyYTrrW2MmvvED8B5K7uvZBWI3W53lnO9wX01x2Ft6gOscqNDDP9Fjjoaqj4dApRW4Q80H6UntC5i58ZJRt0awkXyphpinMI8_rwB3vQ6DqnNOjcCb2aW68-c_y_qIvDmLDkAb86q_w0AAP__1czwdw">