;;; 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