int main (int argc, char **argv) { int o; int save_trace; bfd *prog; #ifdef HAVE_networking char *console_port_s = 0; #endif setbuf (stdout, 0); in_gdb = 0; while ((o = getopt (argc, argv, "tc:vdm:C")) != -1) switch (o) { case 't': trace++; break; case 'c': #ifdef HAVE_networking console_port_s = optarg; #else fprintf (stderr, "Nework console not available in this build.\n"); #endif break; case 'C': #ifdef HAVE_TERMIOS_H m32c_use_raw_console = 1; #else fprintf (stderr, "Raw console not available in this build.\n"); #endif break; case 'v': verbose++; break; case 'd': m32c_disassemble++; break; case 'm': if (strcmp (optarg, "r8c") == 0 || strcmp (optarg, "m16c") == 0) default_machine = bfd_mach_m16c; else if (strcmp (optarg, "m32cm") == 0 || strcmp (optarg, "m32c") == 0) default_machine = bfd_mach_m32c; else { fprintf (stderr, "Invalid machine: %s\n", optarg); exit (1); } break; case '?': fprintf (stderr, "usage: run [-v] [-C] [-c port] [-t] [-d] [-m r8c|m16c|m32cm|m32c]" " program\n"); exit (1); } prog = bfd_openr (argv[optind], 0); if (!prog) { fprintf (stderr, "Can't read %s\n", argv[optind]); exit (1); } if (!bfd_check_format (prog, bfd_object)) { fprintf (stderr, "%s not a m32c program\n", argv[optind]); exit (1); } save_trace = trace; trace = 0; m32c_load (prog); trace = save_trace; #ifdef HAVE_networking if (console_port_s) setup_tcp_console (console_port_s); #endif sim_disasm_init (prog); while (1) { int rc; if (trace) printf ("\n"); if (m32c_disassemble) sim_disasm_one (); enable_counting = verbose; cycles++; rc = decode_opcode (); enable_counting = 0; if (M32C_HIT_BREAK (rc)) done (1); else if (M32C_EXITED (rc)) done (M32C_EXIT_STATUS (rc)); else assert (M32C_STEPPED (rc)); trace_register_changes (); #ifdef TIMER_A update_timer_a (); #endif } }
int main (int argc, char **argv) { int o; int save_trace; bfd *prog; int rc; xmalloc_set_program_name (argv[0]); while ((o = getopt (argc, argv, "tvdr:D:")) != -1) { switch (o) { case 't': trace ++; break; case 'v': verbose ++; break; case 'd': disassemble ++; break; case 'r': mem_ram_size (atoi (optarg)); break; case 'D': dump_counts_filename = optarg; break; case '?': { fprintf (stderr, "usage: run [options] program [arguments]\n"); fprintf (stderr, "\t-v\t\t- increase verbosity.\n" "\t-t\t\t- trace.\n" "\t-d\t\t- disassemble.\n" "\t-r <bytes>\t- ram size.\n" "\t-D <filename>\t- dump cycle count histogram\n"); exit (1); } } } prog = bfd_openr (argv[optind], 0); if (!prog) { fprintf (stderr, "Can't read %s\n", argv[optind]); exit (1); } if (!bfd_check_format (prog, bfd_object)) { fprintf (stderr, "%s not a rl78 program\n", argv[optind]); exit (1); } init_cpu (); rl78_in_gdb = 0; save_trace = trace; trace = 0; rl78_load (prog, 0, argv[0]); trace = save_trace; sim_disasm_init (prog); rc = setjmp (decode_jmp_buf); if (rc == 0) { if (!trace && !disassemble) { /* This will longjmp to the above if an exception happens. */ for (;;) decode_opcode (); } else while (1) { if (trace) printf ("\n"); if (disassemble) sim_disasm_one (); rc = decode_opcode (); if (trace) trace_register_changes (); } } if (RL78_HIT_BREAK (rc)) done (1); else if (RL78_EXITED (rc)) done (RL78_EXIT_STATUS (rc)); else if (RL78_STOPPED (rc)) { if (verbose) printf ("Stopped on signal %d\n", RL78_STOP_SIG (rc)); exit (1); } done (0); exit (0); }
int main (int argc, char **argv) { int o; int save_trace; bfd *prog; int rc; /* By default, we exit when an execution error occurs. */ execution_error_init_standalone (); while ((o = getopt_long (argc, argv, "tvdeEwi", sim_options, NULL)) != -1) { if (o == 'E') /* Stop processing the command line. This is so that any remaining words on the command line that look like arguments will be passed on to the program being simulated. */ break; if (o >= OPT_ACT) { int e, a; o -= OPT_ACT; e = o / SIM_ERRACTION_NUM_ACTIONS; a = o % SIM_ERRACTION_NUM_ACTIONS; execution_error_set_action (e, a); } else switch (o) { case 't': trace++; break; case 'v': verbose++; break; case 'd': disassemble++; break; case 'e': execution_error_init_standalone (); break; case 'w': execution_error_warn_all (); break; case 'i': execution_error_ignore_all (); break; case '?': { int i; fprintf (stderr, "usage: run [options] program [arguments]\n"); fprintf (stderr, "\t-v\t- increase verbosity.\n" "\t-t\t- trace.\n" "\t-d\t- disassemble.\n" "\t-E\t- stop processing sim args\n" "\t-e\t- exit on all execution errors.\n" "\t-w\t- warn (do not exit) on all execution errors.\n" "\t-i\t- ignore all execution errors.\n"); for (i=0; sim_options[i].name; i++) fprintf (stderr, "\t--%s\n", sim_options[i].name); exit (1); } } } prog = bfd_openr (argv[optind], 0); if (!prog) { fprintf (stderr, "Can't read %s\n", argv[optind]); exit (1); } if (!bfd_check_format (prog, bfd_object)) { fprintf (stderr, "%s not a rx program\n", argv[optind]); exit (1); } init_regs (); rx_in_gdb = 0; save_trace = trace; trace = 0; rx_load (prog, NULL); trace = save_trace; sim_disasm_init (prog); enable_counting = verbose; rc = setjmp (decode_jmp_buf); if (rc == 0) { if (!trace && !disassemble) { /* This will longjmp to the above if an exception happens. */ for (;;) decode_opcode (); } else while (1) { if (trace) printf ("\n"); if (disassemble) { enable_counting = 0; sim_disasm_one (); enable_counting = verbose; } rc = decode_opcode (); if (trace) trace_register_changes (); } } if (RX_HIT_BREAK (rc)) done (1); else if (RX_EXITED (rc)) done (RX_EXIT_STATUS (rc)); else if (RX_STOPPED (rc)) { if (verbose) printf("Stopped on signal %d\n", RX_STOP_SIG (rc)); exit(1); } done (0); exit (0); }
int main (int argc, char **argv) { int o; int save_trace; bfd *prog; while ((o = getopt (argc, argv, "tvdm:")) != -1) switch (o) { case 't': trace++; break; case 'v': verbose++; break; case 'd': disassemble++; break; case 'm': if (strcmp (optarg, "r8c") == 0 || strcmp (optarg, "m16c") == 0) default_machine = bfd_mach_m16c; else if (strcmp (optarg, "m32cm") == 0 || strcmp (optarg, "m32c") == 0) default_machine = bfd_mach_m32c; else { fprintf (stderr, "Invalid machine: %s\n", optarg); exit (1); } break; case '?': fprintf (stderr, "usage: run [-v] [-t] [-d] [-m r8c|m16c|m32cm|m32c]" " program\n"); exit (1); } prog = bfd_openr (argv[optind], 0); if (!prog) { fprintf (stderr, "Can't read %s\n", argv[optind]); exit (1); } if (!bfd_check_format (prog, bfd_object)) { fprintf (stderr, "%s not a m32c program\n", argv[optind]); exit (1); } save_trace = trace; trace = 0; m32c_load (prog); trace = save_trace; if (disassemble) sim_disasm_init (prog); while (1) { int rc; if (trace) printf ("\n"); if (disassemble) sim_disasm_one (); enable_counting = verbose; cycles++; rc = decode_opcode (); enable_counting = 0; if (M32C_HIT_BREAK (rc)) done (1); else if (M32C_EXITED (rc)) done (M32C_EXIT_STATUS (rc)); else assert (M32C_STEPPED (rc)); trace_register_changes (); } }