1// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | llvm-readelf -s - | FileCheck %s 2.text 3 4.type foo_impl,@function 5foo_impl: 6 ret 7 8.type foo_resolver,@function 9foo_resolver: 10 mov $foo_impl, %rax 11 ret 12 13.type foo,@gnu_indirect_function 14.set foo,foo_resolver 15 16// All things below should be IFunc identical to 'foo' 17.set foo2,foo 18.set foo3,foo2 19.type foo4,@function 20.set foo4,foo3 21 22// But tls_object should not be IFunc 23.set tls,foo 24.type tls,@tls_object 25 26// CHECK: IFUNC LOCAL DEFAULT 2 foo 27// CHECK: IFUNC LOCAL DEFAULT 2 foo2 28// CHECK: IFUNC LOCAL DEFAULT 2 foo3 29// CHECK: IFUNC LOCAL DEFAULT 2 foo4 30// CHECK: FUNC LOCAL DEFAULT 2 foo_impl 31// CHECK: FUNC LOCAL DEFAULT 2 foo_resolver 32// CHECK: TLS LOCAL DEFAULT 2 tls 33