summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gas/ChangeLog7
-rw-r--r--gas/cgen.c5
-rw-r--r--gas/cgen.h2
3 files changed, 13 insertions, 1 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog
index 1bcd103dd2..b056c701de 100644
--- a/gas/ChangeLog
+++ b/gas/ChangeLog
@@ -1,3 +1,10 @@
+2001-12-17 Nick Clifton <nickc@cambridge.redhat.com>
+
+ * cgen.c: Add prototype for queue_fixup.
+ (gas_cgen_parse_operand): Move initilisastion of errmsg to avoid
+ possible longjmp corruption.
+ * cgen.h: Add prototype for gas_cgen_md_operand.
+
2001-12-15 Alan Modra <amodra@bigpond.net.au>
* config/obj-elf.c (obj_elf_init_stab_section): References are
diff --git a/gas/cgen.c b/gas/cgen.c
index ce2f276da4..75138a4503 100644
--- a/gas/cgen.c
+++ b/gas/cgen.c
@@ -29,6 +29,8 @@ Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#include "cgen.h"
#include "dwarf2dbg.h"
+static void queue_fixup PARAMS ((int, int, expressionS *));
+
/* Opcode table descriptor, must be set by md_begin. */
CGEN_CPU_DESC gas_cgen_cpu_desc;
@@ -322,7 +324,7 @@ gas_cgen_parse_operand (cd, want, strP, opindex, opinfo, resultP, valueP)
static char *hold;
static enum cgen_parse_operand_result *resultP_1;
#endif
- const char *errmsg = NULL;
+ const char *errmsg;
expressionS exp;
if (want == CGEN_PARSE_OPERAND_INIT)
@@ -348,6 +350,7 @@ gas_cgen_parse_operand (cd, want, strP, opindex, opinfo, resultP, valueP)
expr_jmp_buf_p = 1;
expression (&exp);
expr_jmp_buf_p = 0;
+ errmsg = NULL;
*strP = input_line_pointer;
input_line_pointer = hold;
diff --git a/gas/cgen.h b/gas/cgen.h
index 94ff670a1b..97cd38d61e 100644
--- a/gas/cgen.h
+++ b/gas/cgen.h
@@ -96,4 +96,6 @@ md_cgen_record_fixup_exp PARAMS ((fragS *, int, const CGEN_INSN *, int,
const CGEN_OPERAND *, int,
expressionS *));
+extern void gas_cgen_md_operand PARAMS ((expressionS *));
+
#endif /* GAS_CGEN_H */