| .equ $fprel, 2 |
| |
| .ent foo |
| foo: |
| # Test various forms of relocation syntax. |
| |
| lui $4,(%hi gvar) |
| addiu $4,$4,(%lo (gvar)) |
| lw $4,%lo gvar($5) |
| |
| # Check that registers aren't confused with $ identifiers. |
| |
| lw $4,($fprel)($fp) |
| |
| # Check various forms of paired relocations. |
| |
| lui $4,%call_hi(gfunc) |
| addu $4,$4,$gp |
| lw $25,%call_lo(gfunc)($4) |
| |
| lui $4,%got_hi(gvar) |
| addu $4,$4,$gp |
| lw $5,%got_lo(gvar)($4) |
| |
| lw $4,%got(lvar)($28) |
| sb $5,%lo(lvar)($4) |
| |
| lui $4,%call_hi(gfunc) |
| addiu $4,$4,%call_lo(gfunc) |
| |
| lui $4,%got_hi(gvar) |
| addiu $4,$4,%got_lo(gvar) |
| |
| lw $4,%got(lvar)($28) |
| addiu $4,$4,%lo(lvar) |
| |
| # Check individual relocations. |
| |
| lw $25,%call16(gfunc)($28) |
| addiu $4,$28,%call16(gfunc) |
| |
| lw $4,%got_disp(gvar)($28) |
| addiu $4,$28,%got_disp(gvar) |
| |
| lw $4,%gp_rel(gvar)($28) |
| sw $4,%gp_rel(gvar)($28) |
| addiu $4,$28,%gp_rel(gvar) |
| |
| .space 64 |
| .end foo |
| |
| .data |
| lvar: .word 1,2 |