mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-06-29 08:24:05 +08:00
Support .quad for x32.
gas/ 2011-03-28 H.J. Lu <hongjiu.lu@intel.com> * config/tc-i386.c (handle_quad): New. (md_pseudo_table): Add "quad". gas/testsuite/ 2011-03-28 H.J. Lu <hongjiu.lu@intel.com> * gas/i386/ilp32/inval.s: Remove .quad. * gas/i386/ilp32/inval.l: Updated. * gas/i386/ilp32/quad.d: New. * gas/i386/ilp32/quad.s: Likewise.
This commit is contained in:
@ -1,3 +1,8 @@
|
|||||||
|
2011-03-28 H.J. Lu <hongjiu.lu@intel.com>
|
||||||
|
|
||||||
|
* config/tc-i386.c (handle_quad): New.
|
||||||
|
(md_pseudo_table): Add "quad".
|
||||||
|
|
||||||
2011-03-26 John Marino <binutils@marino.st>
|
2011-03-26 John Marino <binutils@marino.st>
|
||||||
|
|
||||||
* configure.tgt: Fix support for *-*-dragonfly*.
|
* configure.tgt: Fix support for *-*-dragonfly*.
|
||||||
|
@ -182,6 +182,7 @@ static void s_bss (int);
|
|||||||
#endif
|
#endif
|
||||||
#if defined (OBJ_ELF) || defined (OBJ_MAYBE_ELF)
|
#if defined (OBJ_ELF) || defined (OBJ_MAYBE_ELF)
|
||||||
static void handle_large_common (int small ATTRIBUTE_UNUSED);
|
static void handle_large_common (int small ATTRIBUTE_UNUSED);
|
||||||
|
static void handle_quad (int);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
static const char *default_arch = DEFAULT_ARCH;
|
static const char *default_arch = DEFAULT_ARCH;
|
||||||
@ -813,6 +814,7 @@ const pseudo_typeS md_pseudo_table[] =
|
|||||||
{"sse_check", set_sse_check, 0},
|
{"sse_check", set_sse_check, 0},
|
||||||
#if defined (OBJ_ELF) || defined (OBJ_MAYBE_ELF)
|
#if defined (OBJ_ELF) || defined (OBJ_MAYBE_ELF)
|
||||||
{"largecomm", handle_large_common, 0},
|
{"largecomm", handle_large_common, 0},
|
||||||
|
{"quad", handle_quad, 8},
|
||||||
#else
|
#else
|
||||||
{"file", (void (*) (int)) dwarf2_directive_file, 0},
|
{"file", (void (*) (int)) dwarf2_directive_file, 0},
|
||||||
{"loc", dwarf2_directive_loc, 0},
|
{"loc", dwarf2_directive_loc, 0},
|
||||||
@ -9149,4 +9151,50 @@ handle_large_common (int small ATTRIBUTE_UNUSED)
|
|||||||
bss_section = saved_bss_section;
|
bss_section = saved_bss_section;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
handle_quad (int nbytes)
|
||||||
|
{
|
||||||
|
expressionS exp;
|
||||||
|
|
||||||
|
if (x86_elf_abi != X86_64_X32_ABI)
|
||||||
|
{
|
||||||
|
cons (nbytes);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (is_it_end_of_statement ())
|
||||||
|
{
|
||||||
|
demand_empty_rest_of_line ();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
do
|
||||||
|
{
|
||||||
|
if (*input_line_pointer == '"')
|
||||||
|
{
|
||||||
|
as_bad (_("unexpected `\"' in expression"));
|
||||||
|
ignore_rest_of_line ();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
x86_cons (&exp, nbytes);
|
||||||
|
/* Output 4 bytes if not constant. */
|
||||||
|
if (exp.X_op != O_constant)
|
||||||
|
nbytes = 4;
|
||||||
|
emit_expr (&exp, (unsigned int) nbytes);
|
||||||
|
}
|
||||||
|
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 */
|
#endif /* OBJ_ELF || OBJ_MAYBE_ELF */
|
||||||
|
@ -1,3 +1,11 @@
|
|||||||
|
2011-03-28 H.J. Lu <hongjiu.lu@intel.com>
|
||||||
|
|
||||||
|
* gas/i386/ilp32/inval.s: Remove .quad.
|
||||||
|
* gas/i386/ilp32/inval.l: Updated.
|
||||||
|
|
||||||
|
* gas/i386/ilp32/quad.d: New.
|
||||||
|
* gas/i386/ilp32/quad.s: Likewise.
|
||||||
|
|
||||||
2011-03-24 Mike Frysinger <vapier@gentoo.org>
|
2011-03-24 Mike Frysinger <vapier@gentoo.org>
|
||||||
|
|
||||||
* gas/bfin/expected_errors.s: Add invalid vector add/sub insn tests.
|
* gas/bfin/expected_errors.s: Add invalid vector add/sub insn tests.
|
||||||
|
@ -3,7 +3,6 @@
|
|||||||
.*:4: Error: .*
|
.*:4: Error: .*
|
||||||
.*:5: Error: .*
|
.*:5: Error: .*
|
||||||
.*:6: Error: .*
|
.*:6: Error: .*
|
||||||
.*:10: Error: .*
|
|
||||||
GAS LISTING .*
|
GAS LISTING .*
|
||||||
|
|
||||||
|
|
||||||
@ -19,11 +18,6 @@ GAS LISTING .*
|
|||||||
[ ]*5[ ]+00000000
|
[ ]*5[ ]+00000000
|
||||||
[ ]*5[ ]+0000
|
[ ]*5[ ]+0000
|
||||||
[ ]*6[ ]+\?\?\?\? 48A10000 movabsq foo,%rax
|
[ ]*6[ ]+\?\?\?\? 48A10000 movabsq foo,%rax
|
||||||
|
\*\*\*\* Error:cannot represent relocation type BFD_RELOC_[ ]*64[ ]+in x32 mode
|
||||||
[ ]*6[ ]+00000000
|
[ ]*6[ ]+00000000
|
||||||
[ ]*6[ ]+0000
|
[ ]*6[ ]+0000
|
||||||
[ ]*7[ ]+
|
|
||||||
[ ]*8[ ]+\.data
|
|
||||||
[ ]*9[ ]+xxx:
|
|
||||||
[ ]*10[ ]+\?\?\?\? 00000000 \.quad foo
|
|
||||||
\*\*\*\* Error:cannot represent relocation type BFD_RELOC_[ ]*64[ ]+in x32 mode
|
|
||||||
[ ]*10[ ]+00000000
|
|
||||||
|
@ -4,7 +4,3 @@
|
|||||||
movabs foo,%rax
|
movabs foo,%rax
|
||||||
movabsq xxx,%rax
|
movabsq xxx,%rax
|
||||||
movabsq foo,%rax
|
movabsq foo,%rax
|
||||||
|
|
||||||
.data
|
|
||||||
xxx:
|
|
||||||
.quad foo
|
|
||||||
|
14
gas/testsuite/gas/i386/ilp32/quad.d
Normal file
14
gas/testsuite/gas/i386/ilp32/quad.d
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
#objdump: -sr
|
||||||
|
#name: xquad
|
||||||
|
|
||||||
|
.*: +file format .*
|
||||||
|
|
||||||
|
RELOCATION RECORDS FOR \[.data\]:
|
||||||
|
OFFSET +TYPE +VALUE
|
||||||
|
0+ R_X86_64_32 +foo
|
||||||
|
0+10 R_X86_64_32 +bar
|
||||||
|
|
||||||
|
|
||||||
|
Contents of section .data:
|
||||||
|
0000 00000000 00000000 efcdab90 78674512 ............xgE.
|
||||||
|
0010 00000000 00000000 ffffffff ffffffff ................
|
5
gas/testsuite/gas/i386/ilp32/quad.s
Normal file
5
gas/testsuite/gas/i386/ilp32/quad.s
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
.data
|
||||||
|
.quad foo
|
||||||
|
.quad 0x1245677890abcdef
|
||||||
|
.quad bar
|
||||||
|
.quad -1
|
Reference in New Issue
Block a user