Public bug reported:
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>:
...
** Affects: binutils (Ubuntu)
Importance: Undecided
Status: New
** Tags: armel
--
Floating-point assembly and disassembly bugs on armel
https://bugs.launchpad.net/bugs/517081
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
--
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs