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