Bug 17865

Summary: ARM conditional load/store multiple instructions unsupported in GAS?
Product: binutils Reporter: Konrad Schwarz <konrad.schwarz>
Component: gasAssignee: Not yet assigned to anyone <unassigned>
Severity: normal CC: konrad.schwarz
Priority: P2    
Version: 2.23   
Target Milestone: ---   
Host: Cygwin Target: ARMv7-A
Build: Last reconfirmed:
Attachments: Contains the rejected opcode

Description Konrad Schwarz 2015-01-21 15:21:58 UTC
Created attachment 8075 [details]
Contains the rejected opcode

How does GAS expect the 32-bit ARM instruction Load Multiple Decrement Before If Negative to be coded?  The ARM V7 Architecture manual indicates that it should coded as `ldmdbmi', yet my GAS reports `Error: bad instruction `ldmdbmi a1,{a2,a3}'' (see attachment ldm-testcase.S).

This GAS reports its version as
`GNU assembler (Sourcery CodeBench Lite 2013.05-39)'.

GAS accepts conditional load/store multiple instructions that omit the stack direction, e.g. `ldmmi', but rejects conditional load/store multiple instructions that include the `ia' suffix, a la `ldmiami'.

Note that objdump disassembles an integer constant corresponding to ldmdbmi as `ldmdbmi'.

In a related vein, does GAS support conditional ADRL pseudo-instructions?

I originally sent this directly to the mailing list, which may not have been correct.  My apologies for the duplication.
Comment 1 Konrad Schwarz 2015-02-02 12:33:55 UTC
    .syntax unified
must be specified.