mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-09-13 10:29:26 +08:00
2007-09-06 H.J. Lu <hongjiu.lu@intel.com>
* i386-gen.c (table): New. (process_i386_opcodes): Report errno when faied to open i386-opc.tbl. Output opcodes to table. Close i386-opc.tbl before return. (process_i386_registers): Report errno when faied to open i386-reg.tbl. Output opcodes to table. Close i386-reg.tbl before return. (main): Open i386-tbl.h for output. * Makefile.am ($(srcdir)/i386-tbl.h): Remove " > $@". * Makefile.in: Regenerated.
This commit is contained in:
@ -1,3 +1,17 @@
|
|||||||
|
2007-09-06 H.J. Lu <hongjiu.lu@intel.com>
|
||||||
|
|
||||||
|
* i386-gen.c (table): New.
|
||||||
|
(process_i386_opcodes): Report errno when faied to open
|
||||||
|
i386-opc.tbl. Output opcodes to table. Close i386-opc.tbl
|
||||||
|
before return.
|
||||||
|
(process_i386_registers): Report errno when faied to open
|
||||||
|
i386-reg.tbl. Output opcodes to table. Close i386-reg.tbl
|
||||||
|
before return.
|
||||||
|
(main): Open i386-tbl.h for output.
|
||||||
|
|
||||||
|
* Makefile.am ($(srcdir)/i386-tbl.h): Remove " > $@".
|
||||||
|
* Makefile.in: Regenerated.
|
||||||
|
|
||||||
2007-09-06 H.J. Lu <hongjiu.lu@intel.com>
|
2007-09-06 H.J. Lu <hongjiu.lu@intel.com>
|
||||||
|
|
||||||
* i386-opc.tbl: Correct SVME instructions to allow 32bit register
|
* i386-opc.tbl: Correct SVME instructions to allow 32bit register
|
||||||
|
@ -576,7 +576,7 @@ i386-gen: i386-gen.o
|
|||||||
i386-gen.o: i386-gen.c i386-opc.h
|
i386-gen.o: i386-gen.c i386-opc.h
|
||||||
|
|
||||||
$(srcdir)/i386-tbl.h: @MAINT@ i386-gen i386-opc.tbl i386-reg.tbl
|
$(srcdir)/i386-tbl.h: @MAINT@ i386-gen i386-opc.tbl i386-reg.tbl
|
||||||
./i386-gen --srcdir $(srcdir) > $@
|
./i386-gen --srcdir $(srcdir)
|
||||||
|
|
||||||
ia64-gen: ia64-gen.o
|
ia64-gen: ia64-gen.o
|
||||||
$(LINK) ia64-gen.o $(LIBIBERTY)
|
$(LINK) ia64-gen.o $(LIBIBERTY)
|
||||||
|
@ -1127,7 +1127,7 @@ i386-gen: i386-gen.o
|
|||||||
i386-gen.o: i386-gen.c i386-opc.h
|
i386-gen.o: i386-gen.c i386-opc.h
|
||||||
|
|
||||||
$(srcdir)/i386-tbl.h: @MAINT@ i386-gen i386-opc.tbl i386-reg.tbl
|
$(srcdir)/i386-tbl.h: @MAINT@ i386-gen i386-opc.tbl i386-reg.tbl
|
||||||
./i386-gen --srcdir $(srcdir) > $@
|
./i386-gen --srcdir $(srcdir)
|
||||||
|
|
||||||
ia64-gen: ia64-gen.o
|
ia64-gen: ia64-gen.o
|
||||||
$(LINK) ia64-gen.o $(LIBIBERTY)
|
$(LINK) ia64-gen.o $(LIBIBERTY)
|
||||||
|
@ -33,6 +33,9 @@
|
|||||||
static const char *program_name = NULL;
|
static const char *program_name = NULL;
|
||||||
static int debug = 0;
|
static int debug = 0;
|
||||||
|
|
||||||
|
/* File of i386 opcode and register tables. */
|
||||||
|
static FILE *table;
|
||||||
|
|
||||||
static void
|
static void
|
||||||
fail (const char *message, ...)
|
fail (const char *message, ...)
|
||||||
{
|
{
|
||||||
@ -106,10 +109,11 @@ process_i386_opcodes (void)
|
|||||||
char *cpu_flags, *opcode_modifier, *operand_types [MAX_OPERANDS];
|
char *cpu_flags, *opcode_modifier, *operand_types [MAX_OPERANDS];
|
||||||
|
|
||||||
if (fp == NULL)
|
if (fp == NULL)
|
||||||
fail (_("can't find i386-opc.tbl for reading\n"));
|
fail (_("can't find i386-opc.tbl for reading, errno = %s\n"),
|
||||||
|
strerror (errno));
|
||||||
|
|
||||||
printf ("\n/* i386 opcode table. */\n\n");
|
fprintf (table, "\n/* i386 opcode table. */\n\n");
|
||||||
printf ("const template i386_optab[] =\n{\n");
|
fprintf (table, "const template i386_optab[] =\n{\n");
|
||||||
|
|
||||||
while (!feof (fp))
|
while (!feof (fp))
|
||||||
{
|
{
|
||||||
@ -129,7 +133,7 @@ process_i386_opcodes (void)
|
|||||||
switch (p[0])
|
switch (p[0])
|
||||||
{
|
{
|
||||||
case '#':
|
case '#':
|
||||||
printf ("%s\n", p);
|
fprintf (table, "%s\n", p);
|
||||||
case '\0':
|
case '\0':
|
||||||
continue;
|
continue;
|
||||||
break;
|
break;
|
||||||
@ -218,13 +222,13 @@ process_i386_opcodes (void)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
printf (" { \"%s\", %s, %s, %s, %s,\n",
|
fprintf (table, " { \"%s\", %s, %s, %s, %s,\n",
|
||||||
name, operands, base_opcode, extension_opcode,
|
name, operands, base_opcode, extension_opcode,
|
||||||
cpu_flags);
|
cpu_flags);
|
||||||
|
|
||||||
printf (" %s,\n", opcode_modifier);
|
fprintf (table, " %s,\n", opcode_modifier);
|
||||||
|
|
||||||
printf (" { ");
|
fprintf (table, " { ");
|
||||||
|
|
||||||
for (i = 0; i < ARRAY_SIZE (operand_types); i++)
|
for (i = 0; i < ARRAY_SIZE (operand_types); i++)
|
||||||
{
|
{
|
||||||
@ -232,20 +236,22 @@ process_i386_opcodes (void)
|
|||||||
|| *operand_types[i] == '0')
|
|| *operand_types[i] == '0')
|
||||||
{
|
{
|
||||||
if (i == 0)
|
if (i == 0)
|
||||||
printf ("0");
|
fprintf (table, "0");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (i != 0)
|
if (i != 0)
|
||||||
printf (",\n ");
|
fprintf (table, ",\n ");
|
||||||
|
|
||||||
printf ("%s", operand_types[i]);
|
fprintf (table, "%s", operand_types[i]);
|
||||||
}
|
}
|
||||||
printf (" } },\n");
|
fprintf (table, " } },\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
printf (" { NULL, 0, 0, 0, 0, 0, { 0 } }\n");
|
fclose (fp);
|
||||||
printf ("};\n");
|
|
||||||
|
fprintf (table, " { NULL, 0, 0, 0, 0, 0, { 0 } }\n");
|
||||||
|
fprintf (table, "};\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@ -257,10 +263,11 @@ process_i386_registers (void)
|
|||||||
char *reg_name, *reg_type, *reg_flags, *reg_num;
|
char *reg_name, *reg_type, *reg_flags, *reg_num;
|
||||||
|
|
||||||
if (fp == NULL)
|
if (fp == NULL)
|
||||||
fail (_("can't find i386-reg.tbl for reading\n"));
|
fail (_("can't find i386-reg.tbl for reading, errno = %s\n"),
|
||||||
|
strerror (errno));
|
||||||
|
|
||||||
printf ("\n/* i386 register table. */\n\n");
|
fprintf (table, "\n/* i386 register table. */\n\n");
|
||||||
printf ("const reg_entry i386_regtab[] =\n{\n");
|
fprintf (table, "const reg_entry i386_regtab[] =\n{\n");
|
||||||
|
|
||||||
while (!feof (fp))
|
while (!feof (fp))
|
||||||
{
|
{
|
||||||
@ -280,7 +287,7 @@ process_i386_registers (void)
|
|||||||
switch (p[0])
|
switch (p[0])
|
||||||
{
|
{
|
||||||
case '#':
|
case '#':
|
||||||
printf ("%s\n", p);
|
fprintf (table, "%s\n", p);
|
||||||
case '\0':
|
case '\0':
|
||||||
continue;
|
continue;
|
||||||
break;
|
break;
|
||||||
@ -311,13 +318,15 @@ process_i386_registers (void)
|
|||||||
/* Find reg_num. */
|
/* Find reg_num. */
|
||||||
reg_num = next_field (str, &str);
|
reg_num = next_field (str, &str);
|
||||||
|
|
||||||
printf (" { \"%s\", %s, %s, %s },\n",
|
fprintf (table, " { \"%s\", %s, %s, %s },\n",
|
||||||
reg_name, reg_type, reg_flags, reg_num);
|
reg_name, reg_type, reg_flags, reg_num);
|
||||||
}
|
}
|
||||||
|
|
||||||
printf ("};\n");
|
fclose (fp);
|
||||||
|
|
||||||
printf ("\nconst unsigned int i386_regtab_size = ARRAY_SIZE (i386_regtab);\n");
|
fprintf (table, "};\n");
|
||||||
|
|
||||||
|
fprintf (table, "\nconst unsigned int i386_regtab_size = ARRAY_SIZE (i386_regtab);\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Program options. */
|
/* Program options. */
|
||||||
@ -386,8 +395,12 @@ main (int argc, char **argv)
|
|||||||
fail (_("unable to change directory to \"%s\", errno = %s\n"),
|
fail (_("unable to change directory to \"%s\", errno = %s\n"),
|
||||||
srcdir, strerror (errno));
|
srcdir, strerror (errno));
|
||||||
|
|
||||||
printf ("/* This file is automatically generated by i386-gen. Do not edit! */\n");
|
table = fopen ("i386-tbl.h", "w");
|
||||||
printf ("/* Copyright 2007 Free Software Foundation, Inc.\n\
|
if (table == NULL)
|
||||||
|
fail (_("can't create i386-tbl.h, errno = %s\n"), strerror (errno));
|
||||||
|
|
||||||
|
fprintf (table, "/* This file is automatically generated by i386-gen. Do not edit! */\n\
|
||||||
|
/* Copyright 2007 Free Software Foundation, Inc.\n\
|
||||||
\n\
|
\n\
|
||||||
This file is part of the GNU opcodes library.\n\
|
This file is part of the GNU opcodes library.\n\
|
||||||
\n\
|
\n\
|
||||||
@ -409,5 +422,7 @@ main (int argc, char **argv)
|
|||||||
process_i386_opcodes ();
|
process_i386_opcodes ();
|
||||||
process_i386_registers ();
|
process_i386_registers ();
|
||||||
|
|
||||||
|
fclose (table);
|
||||||
|
|
||||||
exit (0);
|
exit (0);
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user