X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=gdb%2Ftestsuite%2Fgdb.reverse%2Finsn-reverse.c;h=b3881d44251cd168cc4ac81808f13396f92efadd;hb=9c027c2f6c5cdb3db0b8c72c06b691c5ba502279;hp=08d382d080b49bbca06246159db452aa10012607;hpb=c524d11e50729ac1a14ac1e749d9a5c459881391;p=deliverable%2Fbinutils-gdb.git diff --git a/gdb/testsuite/gdb.reverse/insn-reverse.c b/gdb/testsuite/gdb.reverse/insn-reverse.c index 08d382d080..b3881d4425 100644 --- a/gdb/testsuite/gdb.reverse/insn-reverse.c +++ b/gdb/testsuite/gdb.reverse/insn-reverse.c @@ -15,6 +15,9 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . */ +#include +#include + typedef void (*testcase_ftype) (void); /* The arch-specific files need to implement both the initialize function @@ -45,16 +48,48 @@ initialize (void) array is defined together with them. */ static int n_testcases = (sizeof (testcases) / sizeof (testcase_ftype)); +static void +usage (void) +{ + printf ("usage: insn-reverse <0-%d>\n", n_testcases - 1); +} + +static int test_nr; + +static void +parse_args (int argc, char **argv) +{ + if (argc != 2) + { + usage (); + exit (1); + } + + char *tail; + test_nr = strtol (argv[1], &tail, 10); + if (*tail != '\0') + { + usage (); + exit (1); + } + + int in_range_p = 0 <= test_nr && test_nr < n_testcases; + if (!in_range_p) + { + usage (); + exit (1); + } +} + int -main () +main (int argc, char **argv) { - int i = 0; + parse_args (argc, argv); /* Initialize any required arch-specific bits. */ initialize (); - for (i = 0; i < n_testcases; i++) - testcases[i] (); + testcases[test_nr] (); return 0; }