// Test the fix that BOLT should skip special handling of any non-virtual // function pointer relocations in relative vtable. // RUN: llvm-mc -filetype=obj -triple aarch64-unknown-gnu %s -o %t.o // RUN: %clang %cxxflags -fuse-ld=lld %t.o -o %t.so -Wl,-q // RUN: llvm-bolt %t.so -o %t.bolted.so .text .p2align 2 .type foo,@function foo: .cfi_startproc adrp x8, _ZTV3gooE add x8, x8, :lo12:_ZTV3gooE ldr x0, [x8] ret .Lfunc_end0: .size foo, .Lfunc_end0-foo .cfi_endproc .type _fake_rtti_data,@object .section .rodata.cst16._fake_rtti_data,"aMG",@progbits,16,_fake_rtti_data,comdat .p2align 3, 0x0 _fake_rtti_data: .ascii "_FAKE_RTTI_DATA_" .size _fake_rtti_data, 16 .type _ZTV3gooE,@object .section .rodata,"a",@progbits .p2align 2, 0x0 _ZTV3gooE: .word 0 .word _fake_rtti_data-_ZTV3gooE-8 .word %pltpcrel(foo) .size _ZTV3gooE, 12