| .section .text.foo,"ax",@progbits | |
| .type foo, @function | |
| foo: | |
| .global foo | |
| movl ifunc@GOT(%ecx), %eax | |
| movl ifunc@GOTOFF(%ecx), %eax | |
| call ifunc@PLT | |
| call ifunc | |
| movl xxx@GOT(%ecx), %eax | |
| movl xxx, %eax | |
| ret | |
| .section .text.bar,"ax",@progbits | |
| .type bar, @function | |
| bar: | |
| .global bar | |
| ret | |
| .section .text.ifunc,"ax",@progbits | |
| .type ifunc, @gnu_indirect_function | |
| ifunc: | |
| ret | |
| .section .data.foo,"aw",@progbits | |
| xxx: | |
| .long ifunc |