gdb: Add support for dumping to verilog hex format.

Message ID ac8db75957e27b34d78e2f0b692b5072a9809a37.1429740646.git.andrew.burgess@embecosm.com
State Dropped
Headers

Commit Message

Andrew Burgess April 22, 2015, 10:24 p.m. UTC
  This patch extends the 'dump' command to generate output in the
verilog hex format supported by bfd.

OK to apply?

Thanks,
Andrew

---
Extend the gdb 'dump' command to allow creating output in verilog hex
format.

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/ChangeLog       | 10 ++++++++++
 gdb/NEWS            |  2 ++
 gdb/cli/cli-dump.c  | 38 ++++++++++++++++++++++++++++++++++++++
 gdb/doc/ChangeLog   |  5 +++++
 gdb/doc/gdb.texinfo |  2 ++
 5 files changed, 57 insertions(+)
  

Comments

Pedro Alves April 22, 2015, 10:33 p.m. UTC | #1
Hi Andrew,

On 04/22/2015 11:24 PM, Andrew Burgess wrote:
> This patch extends the 'dump' command to generate output in the
> verilog hex format supported by bfd.
> 
> OK to apply?

Sounds like gdb.base/dump.exp should be extended to cover this?

Thanks,
Pedro Alves
  
Eli Zaretskii April 23, 2015, 6:17 a.m. UTC | #2
> From: Andrew Burgess <andrew.burgess@embecosm.com>
> Cc: Andrew Burgess <andrew.burgess@embecosm.com>
> Date: Wed, 22 Apr 2015 23:24:59 +0100
> 
> diff --git a/gdb/NEWS b/gdb/NEWS
> index 62cbdcb..6ad68ac 100644
> --- a/gdb/NEWS
> +++ b/gdb/NEWS
> @@ -42,6 +42,8 @@
>    (no "set sysroot" or "file" commands are required).  See "New remote
>    packets" below.
>  
> +* The "dump" command now supports verilog hex format.

This part is OK.

>  static void
> +verilog_dump_command (char *cmd, int from_tty)
> +{
> +  printf_unfiltered ("\"dump verilog\" must be followed by a subcommand.\n");

Shouldn't this message be in _()?

> diff --git a/gdb/doc/gdb.texinfo b/gdb/doc/gdb.texinfo
> index 0410702..4b78fb4 100644
> --- a/gdb/doc/gdb.texinfo
> +++ b/gdb/doc/gdb.texinfo
> @@ -10890,6 +10890,8 @@ Intel hex format.
>  Motorola S-record format.
>  @item tekhex
>  Tektronix Hex format.
> +@item verilog
> +Verilog Hex format.
>  @end table
>  
>  @value{GDBN} uses the same definitions of these formats as the

OK for this part.

Thanks.
  

Patch

diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index f5ea395..410f1b7 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,13 @@ 
+2015-04-22  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* 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".
+
 2015-04-22  Jon Turney  <jon.turney@dronecode.org.uk>
 
 	* windows-nat.c (handle_output_debug_string): Don't change
diff --git a/gdb/NEWS b/gdb/NEWS
index 62cbdcb..6ad68ac 100644
--- a/gdb/NEWS
+++ b/gdb/NEWS
@@ -42,6 +42,8 @@ 
   (no "set sysroot" or "file" commands are required).  See "New remote
   packets" below.
 
+* The "dump" command now supports verilog hex format.
+
 * Python Scripting
 
   ** gdb.Objfile objects have a new attribute "username",
diff --git a/gdb/cli/cli-dump.c b/gdb/cli/cli-dump.c
index 0f9485f..2af56e5 100644
--- a/gdb/cli/cli-dump.c
+++ b/gdb/cli/cli-dump.c
@@ -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;
@@ -335,6 +336,18 @@  dump_ihex_value (char *args, int from_tty)
 }
 
 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)
 {
   dump_memory_to_file (args, FOPEN_WB, "tekhex");
@@ -636,6 +649,13 @@  ihex_dump_command (char *cmd, int from_tty)
 }
 
 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)
 {
   printf_unfiltered ("\"dump tekhex\" must be followed by a subcommand.\n");
@@ -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\
diff --git a/gdb/doc/ChangeLog b/gdb/doc/ChangeLog
index 2335bc1..aa93751 100644
--- a/gdb/doc/ChangeLog
+++ b/gdb/doc/ChangeLog
@@ -1,3 +1,8 @@ 
+2015-04-22  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* gdb.texinfo (Dump/Restore Files): Add detail about verilog dump
+	format.
+
 2015-04-17  Gary Benson <gbenson@redhat.com>
 
 	* gdb.texinfo (Connecting to a Remote Target): Mention that
diff --git a/gdb/doc/gdb.texinfo b/gdb/doc/gdb.texinfo
index 0410702..4b78fb4 100644
--- a/gdb/doc/gdb.texinfo
+++ b/gdb/doc/gdb.texinfo
@@ -10890,6 +10890,8 @@  Intel hex format.
 Motorola S-record format.
 @item tekhex
 Tektronix Hex format.
+@item verilog
+Verilog Hex format.
 @end table
 
 @value{GDBN} uses the same definitions of these formats as the