mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-06-04 05:48:20 +08:00
Index: opcodes/ChangeLog
2001-06-13 Geoffrey Keating <geoffk@redhat.com> * cgen-asm.c (cgen_parse_keyword): When looking for the boundaries of a keyword, allow any special characters that are actually in one of the allowed keyword. * cgen-opc.c (cgen_keyword_add): Add any special characters to the nonalpha_chars field. Index: cgen/ChangeLog 2001-06-13 Geoffrey Keating <geoffk@redhat.com> * desc.scm (<keyword> 'gen-defn): Add extra zero into CGEN_KEYWORD_ENTRY initializers. Index: include/opcode/ChangeLog 2001-06-13 Geoffrey Keating <geoffk@redhat.com> * cgen.h (cgen_keyword): Add nonalpha_chars field.
This commit is contained in:
@ -1,3 +1,7 @@
|
|||||||
|
2001-06-14 Geoffrey Keating <geoffk@redhat.com>
|
||||||
|
|
||||||
|
* cgen.h (cgen_keyword): Add nonalpha_chars field.
|
||||||
|
|
||||||
2001-05-23 Thiemo Seufer <seufer@csv.ica.uni-stuttgart.de>
|
2001-05-23 Thiemo Seufer <seufer@csv.ica.uni-stuttgart.de>
|
||||||
|
|
||||||
* mips.h (CPU_R12000): Define.
|
* mips.h (CPU_R12000): Define.
|
||||||
|
@ -513,6 +513,11 @@ typedef struct cgen_keyword
|
|||||||
|
|
||||||
/* Pointer to null keyword "" entry if present. */
|
/* Pointer to null keyword "" entry if present. */
|
||||||
const CGEN_KEYWORD_ENTRY *null_entry;
|
const CGEN_KEYWORD_ENTRY *null_entry;
|
||||||
|
|
||||||
|
/* String containing non-alphanumeric characters used
|
||||||
|
in keywords.
|
||||||
|
At present, the highest number of entries used is 1. */
|
||||||
|
char nonalpha_chars[8];
|
||||||
} CGEN_KEYWORD;
|
} CGEN_KEYWORD;
|
||||||
|
|
||||||
/* Structure used for searching. */
|
/* Structure used for searching. */
|
||||||
|
@ -1,3 +1,11 @@
|
|||||||
|
2001-06-14 Geoffrey Keating <geoffk@redhat.com>
|
||||||
|
|
||||||
|
* cgen-asm.c (cgen_parse_keyword): When looking for the
|
||||||
|
boundaries of a keyword, allow any special characters
|
||||||
|
that are actually in one of the allowed keyword.
|
||||||
|
* cgen-opc.c (cgen_keyword_add): Add any special characters
|
||||||
|
to the nonalpha_chars field.
|
||||||
|
|
||||||
2001-06-12 Martin Schwidefsky <schwidefsky@de.ibm.com>
|
2001-06-12 Martin Schwidefsky <schwidefsky@de.ibm.com>
|
||||||
|
|
||||||
* s390-opc.c: Add lgh instruction.
|
* s390-opc.c: Add lgh instruction.
|
||||||
|
@ -207,17 +207,16 @@ cgen_parse_keyword (cd, strp, keyword_table, valuep)
|
|||||||
char buf[256];
|
char buf[256];
|
||||||
const char *p,*start;
|
const char *p,*start;
|
||||||
|
|
||||||
|
if (keyword_table->name_hash_table == NULL)
|
||||||
|
(void) cgen_keyword_search_init (keyword_table, NULL);
|
||||||
|
|
||||||
p = start = *strp;
|
p = start = *strp;
|
||||||
|
|
||||||
/* Allow any first character.
|
/* Allow letters, digits, and any special characters. */
|
||||||
Note that this allows recognizing ",a" for the annul flag in sparc
|
|
||||||
even though "," is subsequently not a valid keyword char. */
|
|
||||||
if (*p)
|
|
||||||
++p;
|
|
||||||
|
|
||||||
/* Now allow letters, digits, and _. */
|
|
||||||
while (((p - start) < (int) sizeof (buf))
|
while (((p - start) < (int) sizeof (buf))
|
||||||
&& (isalnum ((unsigned char) *p) || *p == '_'))
|
&& *p
|
||||||
|
&& (isalnum ((unsigned char) *p)
|
||||||
|
|| strchr (keyword_table->nonalpha_chars, *p)))
|
||||||
++p;
|
++p;
|
||||||
|
|
||||||
if (p - start >= (int) sizeof (buf))
|
if (p - start >= (int) sizeof (buf))
|
||||||
|
@ -118,6 +118,7 @@ cgen_keyword_add (kt, ke)
|
|||||||
CGEN_KEYWORD_ENTRY *ke;
|
CGEN_KEYWORD_ENTRY *ke;
|
||||||
{
|
{
|
||||||
unsigned int hash;
|
unsigned int hash;
|
||||||
|
size_t i;
|
||||||
|
|
||||||
if (kt->name_hash_table == NULL)
|
if (kt->name_hash_table == NULL)
|
||||||
build_keyword_hash_tables (kt);
|
build_keyword_hash_tables (kt);
|
||||||
@ -132,6 +133,21 @@ cgen_keyword_add (kt, ke)
|
|||||||
|
|
||||||
if (ke->name[0] == 0)
|
if (ke->name[0] == 0)
|
||||||
kt->null_entry = ke;
|
kt->null_entry = ke;
|
||||||
|
|
||||||
|
for (i = 0; i < strlen (ke->name); i++)
|
||||||
|
if (! isalnum ((unsigned char) ke->name[i])
|
||||||
|
&& ! strchr (kt->nonalpha_chars, ke->name[i]))
|
||||||
|
{
|
||||||
|
size_t idx = strlen (kt->nonalpha_chars);
|
||||||
|
|
||||||
|
/* If you hit this limit, please don't just
|
||||||
|
increase the size of the field, instead
|
||||||
|
look for a better algorithm. */
|
||||||
|
if (idx >= sizeof (kt->nonalpha_chars) - 1)
|
||||||
|
abort ();
|
||||||
|
kt->nonalpha_chars[idx] = ke->name[i];
|
||||||
|
kt->nonalpha_chars[idx+1] = 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* FIXME: Need function to return count of keywords. */
|
/* FIXME: Need function to return count of keywords. */
|
||||||
|
Reference in New Issue
Block a user