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

Reply via email to