gdb: Add support for dumping to verilog hex format.

Extend the gdb 'dump' command to allow creating output in verilog hex
format.  Add some tests to cover new functionality.  As bfd does not
currently support reading in verilog hex formats the tests only cover
the 'dump' command, not the 'restore' command.

gdb/ChangeLog:

	* cli/cli-dump.c (verilog_cmdlist): New variable.
	(dump_verilog_memory): New function.
	(dump_verilog_value): New function.
	(verilog_dump_command): New function.
	(_initialize_cli_dump): Add new commands to support verilog dump
	format.
	* NEWS: Add entry for "dump verilog".

gdb/doc/ChangeLog:

	* gdb.texinfo (Dump/Restore Files): Add detail about verilog dump
	format.

gdb/testsuite/ChangeLog:

	* gdb.base/dump.exp: Add *.verilog files to all_files list.  Add
	new tests for verilog output.
This commit is contained in:
Andrew Burgess 2015-04-22 22:52:36 +01:00
parent dcbd20eb14
commit cf75d6c37e
7 changed files with 85 additions and 7 deletions

View file

@ -150,6 +150,7 @@ static struct cmd_list_element *dump_cmdlist;
static struct cmd_list_element *append_cmdlist;
static struct cmd_list_element *srec_cmdlist;
static struct cmd_list_element *ihex_cmdlist;
static struct cmd_list_element *verilog_cmdlist;
static struct cmd_list_element *tekhex_cmdlist;
static struct cmd_list_element *binary_dump_cmdlist;
static struct cmd_list_element *binary_append_cmdlist;
@ -334,6 +335,18 @@ dump_ihex_value (char *args, int from_tty)
dump_value_to_file (args, FOPEN_WB, "ihex");
}
static void
dump_verilog_memory (char *args, int from_tty)
{
dump_memory_to_file (args, FOPEN_WB, "verilog");
}
static void
dump_verilog_value (char *args, int from_tty)
{
dump_value_to_file (args, FOPEN_WB, "verilog");
}
static void
dump_tekhex_memory (char *args, int from_tty)
{
@ -635,6 +648,13 @@ ihex_dump_command (char *cmd, int from_tty)
help_list (ihex_cmdlist, "dump ihex ", all_commands, gdb_stdout);
}
static void
verilog_dump_command (char *cmd, int from_tty)
{
printf_unfiltered (_("\"dump verilog\" must be followed by a subcommand.\n"));
help_list (verilog_cmdlist, "dump verilog ", all_commands, gdb_stdout);
}
static void
tekhex_dump_command (char *cmd, int from_tty)
{
@ -697,6 +717,12 @@ the specified FILE in raw target ordered bytes.");
0 /*allow-unknown*/,
&dump_cmdlist);
add_prefix_cmd ("verilog", all_commands, verilog_dump_command,
_("Write target code/data to a verilog hex file."),
&verilog_cmdlist, "dump verilog ",
0 /*allow-unknown*/,
&dump_cmdlist);
add_prefix_cmd ("tekhex", all_commands, tekhex_dump_command,
_("Write target code/data to a tekhex file."),
&tekhex_cmdlist, "dump tekhex ",
@ -739,6 +765,18 @@ Arguments are FILE EXPRESSION. Writes the value of EXPRESSION\n\
to the specified FILE in intel hex format."),
&ihex_cmdlist);
add_cmd ("memory", all_commands, dump_verilog_memory, _("\
Write contents of memory to a verilog hex file.\n\
Arguments are FILE START STOP. Writes the contents of memory within\n\
the range [START .. STOP) to the specified FILE in verilog hex format."),
&verilog_cmdlist);
add_cmd ("value", all_commands, dump_verilog_value, _("\
Write the value of an expression to a verilog hex file.\n\
Arguments are FILE EXPRESSION. Writes the value of EXPRESSION\n\
to the specified FILE in verilog hex format."),
&verilog_cmdlist);
add_cmd ("memory", all_commands, dump_tekhex_memory, _("\
Write contents of memory to a tekhex file.\n\
Arguments are FILE START STOP. Writes the contents of memory\n\