.section .text@comdatfunc, "x" .linkonce discard .globl comdatfunc comdatfunc: leaq .Ljumptable(%rip), %rax movslq (%rax, %rcx, 4), %rcx addq %rcx, %rax jmp *%rax .section .rdata, "dr" .long 0xcccccccc .Ljumptable: .long .Ltail1-.Ljumptable .long .Ltail2-.Ljumptable .long .Ltail3-.Ljumptable .long 0xdddddddd .section .text@comdatfunc, "x" # If assembled with binutils, the following line can be kept in: # .linkonce discard .Ltail1: movl $1, %eax ret .Ltail2: movl $2, %eax ret .Ltail3: movl $3, %eax ret .text .globl otherfunc otherfunc: call comdatfunc ret