[Bug gas/5712] New: gas can't parse ARM .save directives for FPA registers

2008-02-01 Thread dimitry at andric dot com
According to the docs here:

http://sourceware.org/binutils/docs-2.18/as/ARM-Directives.html#index-g_t_0040code_007b_002esave_007d-directive_002c-ARM-609

you should be able to specify an FPA register in ARM .save directives,
like the following:

sfmfd   f4, 1, [sp]!
.save f4, 1

These directives are usually generated by g++.  However, if you attempt
to assemble this, using "gas -mfpu=fpa", you'll get:

test.s: Assembler messages:
test.s:2: Error: expected , 

This is because gas apparently doesn't skip the register name when
looking for the following comma.

The function s_arm_unwind_save(), in gas/config/tc-arm.c, peeks ahead
to parse the type of register that follows a .save directive, using
arm_reg_parse_mult().  When it finds a known register, it uses its
type to call the appropriate handler for that type.

Unfortunately, for FPA registers, it calls s_arm_unwind_save_fpa()
*without* advancing the input_line_pointer to just afer the register
name.  Since the first thing s_arm_unwind_save_fpa() expects to find
is a comma, it will always fail, with: "expected , ".

Since arm_reg_parse_multi() already advanced the peek pointer to just
after the register name, just setting input_line_pointer to peek is a
nice, one-line fix.

-- 
   Summary: gas can't parse ARM .save directives for FPA registers
   Product: binutils
   Version: 2.19 (HEAD)
Status: NEW
  Severity: normal
  Priority: P2
 Component: gas
AssignedTo: unassigned at sources dot redhat dot com
        ReportedBy: dimitry at andric dot com
CC: bug-binutils at gnu dot org
 GCC build triplet: i686-pc-linux-gnu
  GCC host triplet: i686-pc-linux-gnu
GCC target triplet: arm-omap2-linux-gnueabi


http://sourceware.org/bugzilla/show_bug.cgi?id=5712

--- You are receiving this mail because: ---
You are on the CC list for the bug, or are watching someone who is.


___
bug-binutils mailing list
bug-binutils@gnu.org
http://lists.gnu.org/mailman/listinfo/bug-binutils


[Bug gas/5712] gas can't parse ARM .save directives for FPA registers

2008-02-01 Thread dimitry at andric dot com

--- Additional Comments From dimitry at andric dot com  2008-02-01 23:21 
---
Created an attachment (id=2225)
 --> (http://sourceware.org/bugzilla/attachment.cgi?id=2225&action=view)
Test case for .save of an FPA register


-- 


http://sourceware.org/bugzilla/show_bug.cgi?id=5712

--- You are receiving this mail because: ---
You are on the CC list for the bug, or are watching someone who is.


___
bug-binutils mailing list
bug-binutils@gnu.org
http://lists.gnu.org/mailman/listinfo/bug-binutils


[Bug gas/5712] gas can't parse ARM .save directives for FPA registers

2008-02-01 Thread dimitry at andric dot com

--- Additional Comments From dimitry at andric dot com  2008-02-01 23:22 
---
Created an attachment (id=2226)
 --> (http://sourceware.org/bugzilla/attachment.cgi?id=2226&action=view)
Fix for properly parsing .save directives with an FPA register


-- 


http://sourceware.org/bugzilla/show_bug.cgi?id=5712

--- You are receiving this mail because: ---
You are on the CC list for the bug, or are watching someone who is.


___
bug-binutils mailing list
bug-binutils@gnu.org
http://lists.gnu.org/mailman/listinfo/bug-binutils