fixed in 14.04 LTS ** Changed in: binutils (Ubuntu) Status: Confirmed => Fix Released
-- You received this bug notification because you are a member of Ubuntu Touch seeded packages, which is subscribed to binutils in Ubuntu. https://bugs.launchpad.net/bugs/517081 Title: Floating-point assembly and disassembly bugs on armel Status in Linaro Binutils: Fix Released Status in “binutils” package in Ubuntu: Fix Released Bug description: Binary package hint: binutils Distro: lucid Package: binutils (2.20-5ubuntu1) Architecture: armel Two low-priority issues here: 1) gas wrongly accepts an address index for the NEON element loads and stores VLD1, VST2 etc. gas also wrongly accepts e.g., vld1 d0, <label> (where <label> is a local literal label and implies [pc, <some offset>]). There is no instruction encoding allowing an offset in these instructions: gas should throw an error. 2) binutils incorrectly annotates the target address when disassembling pc-relative vldr instructions in Thumb-2. The annotation is done as if the CPU did not align PC down to a word boundary before doing the address calculation; however, the assembled code looks correct. The same problem might apply to other 32-bit instruction encodings, bit I'm not aware of any except for vldr and vstr at the moment (pc- relative vstr is not permitted in Thumb-2 by the architecture and should possibly be rejected by the assembler). See the attached file for a test case. I get: $ as -mfpu=neon -o vldr-dis.o vldr-dis.s $ objdump -d vldr-dis.o ... Disassembly of section .text: 00000000 <f>: 0: ed9f 0b0e vldr d0, [pc, #56] ; 3c <float> 4: bf00 nop 6: ed9f 0b0d vldr d0, [pc, #52] ; 3e <float+0x2> ^^ should be ... ; 3c <float> a: bf00 nop c: ed8f 0b0b vstr d0, [pc, #44] ; 3c <float> 10: bf00 nop 12: ed8f 0b0a vstr d0, [pc, #40] ; 3e <float+0x2> ^^ should be ... ; 3c <float>; however, use of the pc as base register is not permitted in Thumb; gas should probably reject this instruction. 16: bf00 nop 18: f8df 0020 ldr.w r0, [pc, #32] ; 3c <float> 1c: bf00 nop 1e: f8df 001c ldr.w r0, [pc, #28] ; 3c <float> 22: bf00 nop 24: f92f 070f vld1.8 {d0}, [pc] ^^ gas should have rejected this instruction, which had an offset in the source 28: bf00 nop 2a: f90f 070f vst1.8 {d0}, [pc] ^^ gas should have rejected this instruction, which had an offset in the source 2e: bf00 nop 30: f92f 070f vld1.8 {d0}, [pc] ^^ gas should have rejected this instruction, which had an offset in the source 34: bf00 nop 36: f92f 070f vld1.8 {d0}, [pc] ^^ gas should have rejected this instruction, which had an offset in the source 3a: 46c0 nop ; (mov r8, r8) 0000003c <float>: ... To manage notifications about this bug go to: https://bugs.launchpad.net/binutils-linaro/+bug/517081/+subscriptions -- Mailing list: https://launchpad.net/~touch-packages Post to : touch-packages@lists.launchpad.net Unsubscribe : https://launchpad.net/~touch-packages More help : https://help.launchpad.net/ListHelp