.section .rodata.foo,"aMS",@progbits,1,unique,1 .LC0: .string "PASS" .text .globl check .type check, @function check: subq $8, %rsp call *get_func1@GOTPCREL(%rip) cmpl $func1, %eax jne .L3 movq func1_p@GOTPCREL(%rip), %rdx #ifdef __LP64__ cmpq %rax, (%rdx) #else cmpl %eax, (%rdx) #endif jne .L3 call *func1@GOTPCREL(%rip) cmpl $1, %eax jne .L3 call *call_func1@GOTPCREL(%rip) cmpl $1, %eax jne .L3 leaq .LC0(%rip), %rdi addq $8, %rsp jmp *puts@GOTPCREL(%rip) .L3: call *abort@GOTPCREL(%rip) .size check, .-check .globl get_func1 .type get_func1, @function get_func1: movq func1@GOTPCREL(%rip), %rax ret .size get_func1, .-get_func1 .globl call_func1 .type call_func1, @function call_func1: jmp *func1@GOTPCREL(%rip) .size call_func1, .-call_func1 .globl func1_p .section .rodata.foo,"a",@progbits,unique,2 .align 8 .size func1_p, 8 .type func1_p, @object func1_p: .dc.a func1 .text implementation1: movl $1, %eax ret .size implementation1, .-implementation1 .globl func1 .type func1, @gnu_indirect_function func1: leaq implementation1(%rip), %rax ret .size func1, .-func1 .section .note.GNU-stack,"",@progbits