1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- .macro start, sym
- .type \sym, @function
- .pushsection .opd, "aw"
- \sym: .quad .L.\sym, .TOC.@tocbase, 0
- .popsection
- .L.\sym:
- mflr 0
- std 31, -8(1)
- std 0, 16(1)
- stdu 1, -128(1)
- mr 31, 1
- .endm
- .macro end, sym
- addi 1,31,128
- ld 0, 16(1)
- mtlr 0
- ld 31, -8(1)
- blr
- .size \sym, . - .L.\sym
- .endm
- .macro forward, from, to
- start \from
- bl \to
- nop
- end \from
- .endm
- .macro usegot, sym
- .pushsection .data
- \sym\@: .quad \@
- .popsection
- .pushsection .toc, "aw"
- .LT\@: .tc \sym\@[TC], \sym\@
- .popsection
- ld 3,.LT\@@toc(2)
- .endm
- .macro in123
- .pushsection .toc, "aw"
- .LThello:
- .tc hello[TC],hello
- .popsection
- .pushsection .rodata
- hello: .asciz "Hello, world!\n"
- .popsection
- .pushsection .text.in123, "axG", @progbits, in123, comdat
- .weak in123
- start in123
- ld 3, .LThello@toc(2)
- #bl printf
- nop
- end in123
- .popsection
- .endm
- .macro in23
- .pushsection .text
- forward local, in123
- .popsection
- .pushsection .text.in23, "axG", @progbits, in23, comdat
- .weak in23
- forward in23, local
- .popsection
- .endm
- .macro gobblegot, sym
- .pushsection .text
- .globl \sym
- start \sym
- .rept 5000
- usegot a
- .endr
- end \sym
- .popsection
- .endm
|