1 .text 2 .type implementation1, @function 3implementation1: 4 movl $1, %eax 5 ret 6 .size implementation1, .-implementation1 7 .type implementation2, @function 8implementation2: 9 movl $2, %eax 10 ret 11 .size implementation2, .-implementation2 12 .type resolver2, @function 13resolver2: 14 leaq implementation2(%rip), %rax 15 ret 16 .size resolver2, .-resolver2 17 .type func2, @gnu_indirect_function 18 .set func2,resolver2 19 .type resolver1, @function 20resolver1: 21 leaq implementation1(%rip), %rax 22 ret 23 .size resolver1, .-resolver1 24 .globl func1 25 .type func1, @gnu_indirect_function 26 .set func1,resolver1 27 .globl get_func2 28 .type get_func2, @function 29get_func2: 30 movq func2@GOTPCREL(%rip), %rax 31 ret 32 .size get_func2, .-get_func2 33 .globl call_func2 34 .type call_func2, @function 35call_func2: 36 subq $8, %rsp 37 call *get_func2@GOTPCREL(%rip) 38 cmpq func2@GOTPCREL(%rip), %rax 39 jne .L10 40 addq $8, %rsp 41 jmp *func2@GOTPCREL(%rip) 42.L10: 43 call *abort@GOTPCREL(%rip) 44 .size call_func2, .-call_func2 45 .globl func2_p 46#ifdef CHECK_PLT 47 .section .rodata,"a",@progbits 48#else 49 .section .data.rel,"aw",@progbits 50#endif 51#ifdef __LP64__ 52 .align 8 53 .size func2_p, 8 54#else 55 .align 4 56 .size func2_p, 4 57#endif 58 .type func2_p, @object 59func2_p: 60 .dc.a func2 61 .section .note.GNU-stack,"",@progbits 62