aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Frysinger <vapier@gentoo.org>2015-03-28 14:09:11 -0400
committerMike Frysinger <vapier@gentoo.org>2015-03-28 17:45:30 -0400
commited4d32c28adc5f00ee9bc0e4ac785eeff5e1dc74 (patch)
treee1c9528e7a707c4953bbe311ca33e4c26de9390f
parent6d89786cb31dcf9b1a4e5b6c7b88c15102e9381a (diff)
downloadgdb-ed4d32c28adc5f00ee9bc0e4ac785eeff5e1dc74.zip
gdb-ed4d32c28adc5f00ee9bc0e4ac785eeff5e1dc74.tar.gz
gdb-ed4d32c28adc5f00ee9bc0e4ac785eeff5e1dc74.tar.bz2
sim: sh: clean up gencode
The build line was missing the normal BUILD_xxx flags. Once we added that, we get warnings that weren't shown before. As we fix those, we notice that the -d option segfaults because it tries to write readonly memory. Fix that too as part of the const/prototype clean up.
-rw-r--r--sim/sh/ChangeLog22
-rw-r--r--sim/sh/Makefile.in3
-rw-r--r--sim/sh/gencode.c104
3 files changed, 61 insertions, 68 deletions
diff --git a/sim/sh/ChangeLog b/sim/sh/ChangeLog
index 810049e..3e0fff1 100644
--- a/sim/sh/ChangeLog
+++ b/sim/sh/ChangeLog
@@ -1,5 +1,27 @@
2015-03-28 Mike Frysinger <vapier@gentoo.org>
+ * Makefile.in (gencode): Add $(BUILD_CFLAGS), $(BUILD_LDFLAGS),
+ and $(WARN_CFLAGS).
+ * gencode.c: Include ctype.h, stdlib.h, string.h, and unistd.h.
+ (struct op): Mark members const.
+ (tab): Mark static.
+ (nibble_type_list): Mark const.
+ (arg_type_list): Mark const.
+ (make_enum_list): Delete unused func.
+ (qfunc, expand_opcode, dumptable, expand_ppi_code): Convert old
+ style prototype and mark args const.
+ (sorttab, gengastab, conflict_warn, filltable, expand_ppi_movxy,
+ gensim, ppi_filltable): Convert old style prototype.
+ (gensim_caselist): Convert old style prototype. Mark local
+ variables s and r const.
+ (gendefines): Convert old style prototype. Mark s const. Move
+ tolower call into printf statement.
+ (ppi_gensim): Convert old style prototype. Mark local variable
+ s const.
+ (main): Convert old style prototype. Change printf %d to %zu.
+
+2015-03-28 Mike Frysinger <vapier@gentoo.org>
+
* config.in, configure: Regenerate.
* configure.ac: Call SIM_AC_OPTION_ENDIAN, SIM_AC_OPTION_ALIGNMENT,
SIM_AC_OPTION_HOSTENDIAN, SIM_AC_OPTION_ENVIRONMENT,
diff --git a/sim/sh/Makefile.in b/sim/sh/Makefile.in
index 61422ab..0594a6e 100644
--- a/sim/sh/Makefile.in
+++ b/sim/sh/Makefile.in
@@ -41,7 +41,8 @@ ppi.c: gencode
./gencode -p >ppi.c
gencode: gencode.c
- $(CC_FOR_BUILD) -o gencode $(srcdir)/gencode.c
+ $(CC_FOR_BUILD) $(BUILD_CFLAGS) $(BUILD_LDFLAGS) $(WARN_CFLAGS) \
+ -o gencode $(srcdir)/gencode.c
sh-clean:
rm -f gencode code.c table.c
diff --git a/sim/sh/gencode.c b/sim/sh/gencode.c
index bc65604..0fb1b87 100644
--- a/sim/sh/gencode.c
+++ b/sim/sh/gencode.c
@@ -30,22 +30,26 @@
*/
+#include <ctype.h>
#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
#define MAX_NR_STUFF 42
typedef struct
{
- char *defs;
- char *refs;
- char *name;
- char *code;
- char *stuff[MAX_NR_STUFF];
+ const char *defs;
+ const char *refs;
+ const char *name;
+ const char *code;
+ const char * const stuff[MAX_NR_STUFF];
int index;
} op;
-op tab[] =
+static op tab[] =
{
{ "n", "", "add #<imm>,<REG_N>", "0111nnnni8*1....",
@@ -2462,7 +2466,8 @@ op ppi_tab[] =
};
/* Tables of things to put into enums for sh-opc.h */
-static char *nibble_type_list[] =
+static
+const char * const nibble_type_list[] =
{
"HEX_0",
"HEX_1",
@@ -2497,7 +2502,7 @@ static char *nibble_type_list[] =
0
};
static
-char *arg_type_list[] =
+const char * const arg_type_list[] =
{
"A_END",
"A_BDISP12",
@@ -2530,27 +2535,11 @@ char *arg_type_list[] =
0,
};
-static void
-make_enum_list (name, s)
- char *name;
- char **s;
-{
- int i = 1;
- printf ("typedef enum {\n");
- while (*s)
- {
- printf ("\t%s,\n", *s);
- s++;
- i++;
- }
- printf ("} %s;\n", name);
-}
-
static int
-qfunc (a, b)
- op *a;
- op *b;
+qfunc (const void *va, const void *vb)
{
+ const op *a = va;
+ const op *b = vb;
char bufa[9];
char bufb[9];
int diff;
@@ -2569,7 +2558,7 @@ qfunc (a, b)
}
static void
-sorttab ()
+sorttab (void)
{
op *p = tab;
int len = 0;
@@ -2583,7 +2572,7 @@ sorttab ()
}
static void
-gengastab ()
+gengastab (void)
{
op *p;
sorttab ();
@@ -2598,9 +2587,7 @@ static unsigned short table[1 << 16];
static int warn_conflicts = 0;
static void
-conflict_warn (val, i)
- int val;
- int i;
+conflict_warn (int val, int i)
{
int ix, key;
int j = table[val];
@@ -2651,10 +2638,7 @@ conflict_warn (val, i)
right entries in 'table' with the opcode index. */
static void
-expand_opcode (val, i, s)
- int val;
- int i;
- char *s;
+expand_opcode (int val, int i, const char *s)
{
if (*s == 0)
{
@@ -2779,10 +2763,7 @@ expand_opcode (val, i, s)
statement entry. */
static void
-dumptable (name, size, start)
- char *name;
- int size;
- int start;
+dumptable (const char *name, int size, int start)
{
int lump = 256;
int online = 16;
@@ -2817,8 +2798,7 @@ dumptable (name, size, start)
static void
-filltable (p)
- op *p;
+filltable (op *p)
{
static int index = 1;
@@ -2835,7 +2815,7 @@ filltable (p)
processing insns (ppi) for code 0xf800 (ppi nopx nopy). Copy the
latter tag to represent all combinations of ppi with ddt. */
static void
-expand_ppi_movxy ()
+expand_ppi_movxy (void)
{
int i;
@@ -2845,8 +2825,7 @@ expand_ppi_movxy ()
}
static void
-gensim_caselist (p)
- op *p;
+gensim_caselist (op *p)
{
for (; p->name; p++)
{
@@ -2854,8 +2833,7 @@ gensim_caselist (p)
int sextbit = -1;
int needm = 0;
int needn = 0;
-
- char *s = p->code;
+ const char *s = p->code;
printf (" /* %s %s */\n", p->name, p->code);
printf (" case %d: \n", p->index);
@@ -3038,7 +3016,7 @@ gensim_caselist (p)
{
/* Do the refs. */
- char *r;
+ const char *r;
for (r = p->refs; *r; r++)
{
if (*r == 'f') printf (" CREF (15);\n");
@@ -3080,7 +3058,7 @@ gensim_caselist (p)
{
/* Do the defs. */
- char *r;
+ const char *r;
for (r = p->defs; *r; r++)
{
if (*r == 'f') printf (" CDEF (15);\n");
@@ -3114,7 +3092,7 @@ gensim_caselist (p)
}
static void
-gensim ()
+gensim (void)
{
printf ("{\n");
printf ("/* REG_xy = [r4, r5, r0, r1]. */\n");
@@ -3143,19 +3121,17 @@ gensim ()
}
static void
-gendefines ()
+gendefines (void)
{
op *p;
filltable (tab);
for (p = tab; p->name; p++)
{
- char *s = p->name;
+ const char *s = p->name;
printf ("#define OPC_");
while (*s) {
- if (isupper (*s))
- *s = tolower (*s);
if (isalpha (*s))
- printf ("%c", *s);
+ printf ("%c", tolower (*s));
if (*s == ' ')
printf ("_");
if (*s == '@')
@@ -3175,10 +3151,7 @@ static int ppi_index;
NOTE: tail recursion optimization removed for simplicity. */
static void
-expand_ppi_code (val, i, s)
- int val;
- int i;
- char *s;
+expand_ppi_code (int val, int i, const char *s)
{
int j;
@@ -3223,7 +3196,7 @@ expand_ppi_code (val, i, s)
}
static void
-ppi_filltable ()
+ppi_filltable (void)
{
op *p;
ppi_index = 1;
@@ -3236,7 +3209,7 @@ ppi_filltable ()
}
static void
-ppi_gensim ()
+ppi_gensim (void)
{
op *p = ppi_tab;
@@ -3294,8 +3267,7 @@ ppi_gensim ()
int shift, j;
int cond = 0;
int havedecl = 0;
-
- char *s = p->code;
+ const char *s = p->code;
printf (" /* %s %s */\n", p->name, p->code);
printf (" case %d: \n", p->index);
@@ -3406,9 +3378,7 @@ ppi_gensim ()
}
int
-main (ac, av)
- int ac;
- char **av;
+main (int ac, char *av[])
{
/* Verify the table before anything else. */
{
@@ -3418,7 +3388,7 @@ main (ac, av)
/* Check that the code field contains 16 bits. */
if (strlen (p->code) != 16)
{
- fprintf (stderr, "Code `%s' length wrong (%d) for `%s'\n",
+ fprintf (stderr, "Code `%s' length wrong (%zu) for `%s'\n",
p->code, strlen (p->code), p->name);
abort ();
}