The situation seems to be better in gas 2.21 (binutils-arm-linux-gnueabi 2.21-1ubuntu4cross1.55)
arm-linux-gnueabi-as vldr-dis.s -mfpu=neon vldr-dis.s: Assembler messages: vldr-dis.s:17: Error: r15 not allowed here -- `vld1.8 d0,float' vldr-dis.s:19: Error: r15 not allowed here -- `vst1.8 d0,float' vldr-dis.s:21: Error: r15 not allowed here -- `vld1.8 d0,[pc,-(.&-4)-4+float]' vldr-dis.s:23: Error: r15 not allowed here -- `vld1.8 d0,[pc,-(.&-4)-4+float]' so then I replaced those four with vldr d0, float (to keep offsets the same as the original), reassembled and objdump'd it which gives: 0: ed9f 0b0e vldr d0, [pc, #56] ; 3c <float> 4: 46c0 nop ; (mov r8, r8) 6: ed9f 0b0d vldr d0, [pc, #52] ; 3c <float> a: 46c0 nop ; (mov r8, r8) c: ed8f 0b0b vstr d0, [pc, #44] ; 3c <float> 10: 46c0 nop ; (mov r8, r8) 12: ed8f 0b0a vstr d0, [pc, #40] ; 3c <float> 16: 46c0 nop ; (mov r8, r8) 18: f8df 0020 ldr.w r0, [pc, #32] ; 3c <float> 1c: 46c0 nop ; (mov r8, r8) 1e: f8df 001c ldr.w r0, [pc, #28] ; 3c <float> 22: 46c0 nop ; (mov r8, r8) 24: ed9f 0b05 vldr d0, [pc, #20] ; 3c <float> 28: 46c0 nop ; (mov r8, r8) 2a: ed9f 0b04 vldr d0, [pc, #16] ; 3c <float> 2e: 46c0 nop ; (mov r8, r8) 30: ed9f 0b02 vldr d0, [pc, #8] ; 3c <float> 34: 46c0 nop ; (mov r8, r8) 36: ed9f 0b01 vldr d0, [pc, #4] ; 3c <float> 3a: 46c0 nop ; (mov r8, r8) so I think the offsets are now as you expect. So I think that the only one left is that it should be disallowing pc relative vstr's Dave -- You received this bug notification because you are a member of Ubuntu Bugs, which is subscribed to Ubuntu. https://bugs.launchpad.net/bugs/517081 Title: Floating-point assembly and disassembly bugs on armel -- ubuntu-bugs mailing list [email protected] https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs
