aboutsummaryrefslogtreecommitdiff
path: root/gas
diff options
context:
space:
mode:
authorH.J. Lu <hjl.tools@gmail.com>2006-12-28 07:09:16 +0000
committerH.J. Lu <hjl.tools@gmail.com>2006-12-28 07:09:16 +0000
commit31b2323cf7e7b8c52d556031036689cda7c101a2 (patch)
tree0530c578ba95601d778063479d8971b1d7ab32dd /gas
parentd2d2ef9a94f7cbcffa912edfaecbeadd767390ce (diff)
downloadgdb-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/ChangeLog10
-rw-r--r--gas/config/tc-i386.c15
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)))
{