blob: 41a00313427daa6524d0366c8504b40fde3dc307 [file] [log] [blame] [edit]
// 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 foo@PLT-_ZTV3gooE-8
.size _ZTV3gooE, 12