.type foo, @function .globl foo foo: movq $0, %rax ret bar: # References to globals must be rewritten to their local targets. call foo jmp foo jbe foo jne foo # Jumps to PLT symbols are rewritten through redirectors. call memcpy@PLT jmp memcpy@PLT jbe memcpy@PLT # Jumps to local PLT symbols use their local targets. call foo@PLT jmp foo@PLT jbe foo@PLT # Synthesized symbols are treated as local ones. call OPENSSL_ia32cap_get@PLT # References to local labels are left as-is in the first file. .Llocal_label: jbe .Llocal_label leaq .Llocal_label+2048(%rip), %r14 leaq .Llocal_label+2048+1024(%rip), %r14 .section .rodata .L1: .quad 42 .L2: .quad .L2-.L1 .uleb128 .L2-.L1 .sleb128 .L2-.L1 # Local labels and their jumps are left alone. .text jmp 1f 1: jmp 1b