.text .type selector, %function foo: movl $0, %eax ret selector: .ifdef __x86_64__ leaq foo(%rip), %rax .else leal foo@GOTOFF(%eax), %eax .endif ret .type selector, %gnu_indirect_function .globl _start _start: .ifdef __x86_64__ movabs ptr, %rax call *%rax .else mov ptr, %eax call *%eax .endif ret .data .type ptr, @object ptr: .dc.a selector .section .note.GNU-stack,"",@progbits