diff options
author | H.J. Lu <hjl.tools@gmail.com> | 2011-03-29 12:40:51 +0000 |
---|---|---|
committer | H.J. Lu <hjl.tools@gmail.com> | 2011-03-29 12:40:51 +0000 |
commit | 75c1c785ac61f79188dde9923a90eb918ec11b33 (patch) | |
tree | 8001ccfba308b175206ee38b1bfba821aac9449d /gas | |
parent | fc99ebdc2b470b31622d9efc28fca6f03945532c (diff) | |
download | gdb-75c1c785ac61f79188dde9923a90eb918ec11b33.zip gdb-75c1c785ac61f79188dde9923a90eb918ec11b33.tar.gz gdb-75c1c785ac61f79188dde9923a90eb918ec11b33.tar.bz2 |
Properly handle multiple operands for x32 quad.
gas/
2011-03-29 H.J. Lu <hongjiu.lu@intel.com>
* config/tc-i386.c (handle_quad): Properly handle multiple
operands.
gas/testsuite/
2011-03-29 H.J. Lu <hongjiu.lu@intel.com>
* gas/i386/ilp32/quad.d: Add tests for multiple operands.
* gas/i386/ilp32/quad.s: Likewise.
Diffstat (limited to 'gas')
-rw-r--r-- | gas/ChangeLog | 5 | ||||
-rw-r--r-- | gas/config/tc-i386.c | 16 | ||||
-rw-r--r-- | gas/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gas/testsuite/gas/i386/ilp32/quad.d | 4 | ||||
-rw-r--r-- | gas/testsuite/gas/i386/ilp32/quad.s | 1 |
5 files changed, 23 insertions, 8 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog index 7c5b705..4275767 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,8 @@ +2011-03-29 H.J. Lu <hongjiu.lu@intel.com> + + * config/tc-i386.c (handle_quad): Properly handle multiple + operands. + 2011-03-29 Mike Frysinger <vapier@gentoo.org> * config/bfin-parse.y (BYTEUNPACK): Return yyerror when dest diff --git a/gas/config/tc-i386.c b/gas/config/tc-i386.c index 624c78a..aa345b5 100644 --- a/gas/config/tc-i386.c +++ b/gas/config/tc-i386.c @@ -9182,19 +9182,19 @@ handle_quad (int nbytes) if (exp.X_op != O_constant) nbytes = 4; emit_expr (&exp, (unsigned int) nbytes); + /* Zero-extends to 8 bytes if not constant. */ + if (nbytes == 4) + { + memset (&exp, '\0', sizeof (exp)); + exp.X_op = O_constant; + emit_expr (&exp, nbytes); + } + nbytes = 8; } while (*input_line_pointer++ == ','); input_line_pointer--; /* Put terminator back into stream. */ demand_empty_rest_of_line (); - - /* Zero-extends to 8 bytes if not constant. */ - if (nbytes == 4) - { - memset (&exp, '\0', sizeof (exp)); - exp.X_op = O_constant; - emit_expr (&exp, nbytes); - } } #endif /* OBJ_ELF || OBJ_MAYBE_ELF */ diff --git a/gas/testsuite/ChangeLog b/gas/testsuite/ChangeLog index 2101e9f..51502ee 100644 --- a/gas/testsuite/ChangeLog +++ b/gas/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2011-03-29 H.J. Lu <hongjiu.lu@intel.com> + + * gas/i386/ilp32/quad.d: Add tests for multiple operands. + * gas/i386/ilp32/quad.s: Likewise. + 2011-03-29 Mike Frysinger <vapier@gentoo.org> * gas/bfin/expected_errors.s: Add invalid BYTEUNPACK insn tests. diff --git a/gas/testsuite/gas/i386/ilp32/quad.d b/gas/testsuite/gas/i386/ilp32/quad.d index d3e6ff8..6f8a6c6 100644 --- a/gas/testsuite/gas/i386/ilp32/quad.d +++ b/gas/testsuite/gas/i386/ilp32/quad.d @@ -7,8 +7,12 @@ RELOCATION RECORDS FOR \[.data\]: OFFSET +TYPE +VALUE 0+ R_X86_64_32 +foo 0+10 R_X86_64_32 +bar +0+20 R_X86_64_32 +foo +0+30 R_X86_64_32 +bar Contents of section .data: 0000 00000000 00000000 efcdab90 78674512 ............xgE. 0010 00000000 00000000 ffffffff ffffffff ................ + 0020 00000000 00000000 efcdab90 78674512 ............xgE. + 0030 00000000 00000000 ffffffff ffffffff ................ diff --git a/gas/testsuite/gas/i386/ilp32/quad.s b/gas/testsuite/gas/i386/ilp32/quad.s index e96653a..a14304d 100644 --- a/gas/testsuite/gas/i386/ilp32/quad.s +++ b/gas/testsuite/gas/i386/ilp32/quad.s @@ -3,3 +3,4 @@ .quad 0x1245677890abcdef .quad bar .quad -1 + .quad foo, 0x1245677890abcdef, bar, -1 |