From patchwork Sat Mar 28 21:45:49 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Mike Frysinger X-Patchwork-Id: 5873 Received: (qmail 54002 invoked by alias); 28 Mar 2015 21:45:59 -0000 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org Delivered-To: mailing list gdb-patches@sourceware.org Received: (qmail 53951 invoked by uid 89); 28 Mar 2015 21:45:58 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-1.8 required=5.0 tests=AWL, BAYES_00, SPF_PASS, T_RP_MATCHES_RCVD autolearn=ham version=3.3.2 X-HELO: smtp.gentoo.org Received: from smtp.gentoo.org (HELO smtp.gentoo.org) (140.211.166.183) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES256-GCM-SHA384 encrypted) ESMTPS; Sat, 28 Mar 2015 21:45:57 +0000 Received: from localhost.localdomain (localhost [127.0.0.1]) by smtp.gentoo.org (Postfix) with ESMTP id 068C6340A13 for ; Sat, 28 Mar 2015 21:45:54 +0000 (UTC) From: Mike Frysinger To: gdb-patches@sourceware.org Subject: [PATCH 2/5] sim: sh: clean up gencode Date: Sat, 28 Mar 2015 17:45:49 -0400 Message-Id: <1427579152-7275-2-git-send-email-vapier@gentoo.org> In-Reply-To: <1427579152-7275-1-git-send-email-vapier@gentoo.org> References: <1427579152-7275-1-git-send-email-vapier@gentoo.org> X-IsSubscribed: yes 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. Committed. --- sim/sh/ChangeLog | 22 ++++++++++++ sim/sh/Makefile.in | 3 +- sim/sh/gencode.c | 104 +++++++++++++++++++---------------------------------- 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 + * 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 + * 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 #include +#include +#include +#include #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 #,", "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 (); }