diff options
author | H.J. Lu <hjl.tools@gmail.com> | 2006-12-28 07:09:16 +0000 |
---|---|---|
committer | H.J. Lu <hjl.tools@gmail.com> | 2006-12-28 07:09:16 +0000 |
commit | 31b2323cf7e7b8c52d556031036689cda7c101a2 (patch) | |
tree | 0530c578ba95601d778063479d8971b1d7ab32dd /gas | |
parent | d2d2ef9a94f7cbcffa912edfaecbeadd767390ce (diff) | |
download | gdb-31b2323cf7e7b8c52d556031036689cda7c101a2.zip gdb-31b2323cf7e7b8c52d556031036689cda7c101a2.tar.gz gdb-31b2323cf7e7b8c52d556031036689cda7c101a2.tar.bz2 |
2006-12-27 H.J. Lu <hongjiu.lu@intel.com>
* config/tc-i386.c (disp_expressions): Use MAX_MEMORY_OPERANDS
for array size instead of 2.
(im_expressions): Use MAX_IMMEDIATE_OPERANDS for for array size
instead of 2.
(i386_immediate): Update immediate operand overflow error
message.
(i386_displacement): Check displacement operand overflow.
Diffstat (limited to 'gas')
-rw-r--r-- | gas/ChangeLog | 10 | ||||
-rw-r--r-- | gas/config/tc-i386.c | 15 |
2 files changed, 22 insertions, 3 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog index 13eb348..c545ce1 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,5 +1,15 @@ 2006-12-27 H.J. Lu <hongjiu.lu@intel.com> + * config/tc-i386.c (disp_expressions): Use MAX_MEMORY_OPERANDS + for array size instead of 2. + (im_expressions): Use MAX_IMMEDIATE_OPERANDS for for array size + instead of 2. + (i386_immediate): Update immediate operand overflow error + message. + (i386_displacement): Check displacement operand overflow. + +2006-12-27 H.J. Lu <hongjiu.lu@intel.com> + * config/tc-i386.c: Document tc-i386.c, not i386.c. 2006-12-27 Kazu Hirata <kazu@codesourcery.com> diff --git a/gas/config/tc-i386.c b/gas/config/tc-i386.c index fa69534..856e953 100644 --- a/gas/config/tc-i386.c +++ b/gas/config/tc-i386.c @@ -272,8 +272,9 @@ static i386_insn i; /* Possible templates for current insn. */ static const templates *current_templates; -/* Per instruction expressionS buffers: 2 displacements & 2 immediate max. */ -static expressionS disp_expressions[2], im_expressions[2]; +/* Per instruction expressionS buffers: max displacements & immediates. */ +static expressionS disp_expressions[MAX_MEMORY_OPERANDS]; +static expressionS im_expressions[MAX_IMMEDIATE_OPERANDS]; /* Current operand we are working on. */ static int this_operand; @@ -4504,7 +4505,8 @@ i386_immediate (char *imm_start) if (i.imm_operands == MAX_IMMEDIATE_OPERANDS) { - as_bad (_("only 1 or 2 immediate operands are allowed")); + as_bad (_("at most %d immediate operands are allowed"), + MAX_IMMEDIATE_OPERANDS); return 0; } @@ -4645,6 +4647,13 @@ i386_displacement (disp_start, disp_end) int bigdisp, override; unsigned int types = Disp; + if (i.disp_operands == MAX_MEMORY_OPERANDS) + { + as_bad (_("at most %d displacement operands are allowed"), + MAX_MEMORY_OPERANDS); + return 0; + } + if ((i.types[this_operand] & JumpAbsolute) || !(current_templates->start->opcode_modifier & (Jump | JumpDword))) { |