1 .text 2 .globl foo 3 .section .rodata 4foo_addr: 5 .string "string" 6 .section .data.rel.local,"aw",@progbits 7 .align 4 8 .type foo, @object 9 .size foo, 4 10foo: 11 .long foo_addr 12 .text 13 .globl main 14 .type main, @function 15main: 16 leal 4(%esp), %ecx 17 andl $-16, %esp 18 pushl -4(%ecx) 19 pushl %ebp 20 movl %esp, %ebp 21 pushl %ebx 22 pushl %ecx 23 call .LPR0 24 addl $_GLOBAL_OFFSET_TABLE_, %eax 25 movl foo@GOT(%eax), %edx 26 movl (%edx), %edx 27 subl $12, %esp 28 pushl %edx 29 movl %eax, %ebx 30 call puts@PLT 31 addl $16, %esp 32 movl $0, %eax 33 leal -8(%ebp), %esp 34 popl %ecx 35 popl %ebx 36 popl %ebp 37 leal -4(%ecx), %esp 38 ret 39 .size main, .-main 40.LPR0: 41 movl (%esp), %eax 42 ret 43