Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- .file "libtest.c"
- .text
- .globl test
- .align 4
- .type test,@function
- test:
- /* prologue */
- l.sw -4(r1), r9
- l.sw -8(r1), r2
- l.addi r2, r1, 0
- l.addi r1, r1, -12
- /* setup r9 to point to .got */
- l.jal .LPC0
- l.nop
- .LPC0:
- l.movhi r11, gotpchi(_GLOBAL_OFFSET_TABLE_+(.-.LPC0))
- l.ori r11, r11, gotpclo(_GLOBAL_OFFSET_TABLE_+(.-.LPC0))
- l.add r9, r9, r11
- /*
- * load .L.str into r3 by using the relation
- * .got - .L.str + r9 = .L.str
- */
- l.movhi r3, gotoffhi(.L.str)
- l.ori r3, r3, gotofflo(.L.str)
- l.add r3, r3, r9
- /* call printf through got table */
- l.lwz r11, got(printf)(r9)
- l.jalr r11
- l.nop
- /* epilogue */
- l.sw -12(r2), r11
- l.addi r1, r2, 0
- l.lwz r9, -4(r1)
- l.jr r9
- l.lwz r2, -8(r1)
- .Ltmp0:
- .size test, .Ltmp0-test
- .type .L.str,@object
- .section .rodata.str1.1,"aMS",@progbits,1
- .L.str:
- .asciz "hello from libtest!\n"
- .size .L.str, 21
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement