blob: 0f6b7295d367954af5d5d3ea1a87ad0fbf564b9a [file] [log] [blame]
;;; Bug #1825: gas assemble PC-relative indexed addressing modes incorrectly
;;; http://savannah.gnu.org/bugs/?func=detailbug&bug_id=1825&group_id=2424
;;;
.sect .text
.globl _main
_main:
nop
ldx L1,pc ; Assemble to 5-bit > 0 offset
bra L2
L1:
.dc.w 0xaabb
L2:
subd L1,pc ; Assemble to 5-bit < 0 offset
L3:
.ds.b 14, 0xA7
ldab L3,pc ; 5-bit < 0 offset
ldab L4,pc ; 5-bit > 0 offset
.skip 15
L4:
.skip 128
subd L4,pc ; 9-bit < 0 offset
addd L5,pc ; 9-bit > 0 offset
.skip 128
L5:
.skip 256-3
orab L5,pc ; 9 bit < 0 offset (min value)
oraa L6,pc ; 9 bit > 0 offset (max value)
.skip 255
L6:
.skip 256-2
orab L6,pc ; 16 bit < 0 offset
anda _main,pc ; 16 bit < 0 offset
andb L7,pc
.skip 256
L7:
stab external,pc ; External 16-bit PCREL
ldd _table,pc
addd _table+2,pc
subd _table+4,pc
addd _table+8,pc
addd _table+12,pc
addd _table+16,pc
rts
nop
_table:
.ds.b 16,0
leax _table,sp ; 16-bit absolute reloc
leay _table,x
leax _table,y