From patchwork Wed Apr 22 23:04:31 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andrew Burgess X-Patchwork-Id: 6397 Received: (qmail 8555 invoked by alias); 22 Apr 2015 23:04:39 -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 8542 invoked by uid 89); 22 Apr 2015 23:04:38 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-1.7 required=5.0 tests=AWL, BAYES_00, KAM_LAZY_DOMAIN_SECURITY, RCVD_IN_DNSWL_LOW autolearn=no version=3.3.2 X-HELO: mail-wg0-f48.google.com Received: from mail-wg0-f48.google.com (HELO mail-wg0-f48.google.com) (74.125.82.48) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES128-GCM-SHA256 encrypted) ESMTPS; Wed, 22 Apr 2015 23:04:37 +0000 Received: by wgen6 with SMTP id n6so1022887wge.3 for ; Wed, 22 Apr 2015 16:04:33 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-type:content-disposition:in-reply-to :user-agent; bh=spzFJcQC+6vF8QhRibwyJvLquSK6SRY8PkNfF3PGMZc=; b=PSV4G+FGJawsxjVYzPH0PQTzimpZbeXeo0Qom0IzRUg5YRjB43bD83UnSc4zRYn1qh /KQ3m0k128XmJ/e9TMlhBdoavsP0GL3eyg30pvugfuzbhRhokfAoqZMJtIOLvDDnwVAL eGT7991Z7kJZ74QIMtz3lwY222HxZ+lNE7xen2QJp3eo4Cl3z8vG9aEkPR/As/xpoDFa e+YA6qgKKRNL5rEWRaa/Ko9rFWxmIBWfpsl2wpa1BMrT9HDygycapnmit8toNsPJFx9+ bKLEddXzcnfYyNPzdn6diyb5c/LEGdKLnRcs3uO5VEWFiF4b7e3EJHP9gOS+XL8YHm8b koSA== X-Gm-Message-State: ALoCoQk4cCNp87eNBcwVxYXgoO2woD/PVF4fOfsxKUl2KCUQ04S6Bf6VznenpkWRwZx8KeOgLwOc X-Received: by 10.194.121.136 with SMTP id lk8mr53119675wjb.49.1429743873817; Wed, 22 Apr 2015 16:04:33 -0700 (PDT) Received: from localhost (host86-133-100-115.range86-133.btcentralplus.com. [86.133.100.115]) by mx.google.com with ESMTPSA id k2sm9718508wix.4.2015.04.22.16.04.32 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 22 Apr 2015 16:04:33 -0700 (PDT) Date: Thu, 23 Apr 2015 00:04:31 +0100 From: Andrew Burgess To: Pedro Alves Cc: gdb-patches@sourceware.org Subject: Re: [PATCH] gdb: Add support for dumping to verilog hex format. Message-ID: <20150422230431.GF2422@embecosm.com> References: <553821B2.1080704@redhat.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <553821B2.1080704@redhat.com> X-Editor: GNU Emacs [ http://www.gnu.org/software/emacs ] User-Agent: Mutt/1.5.23 (2014-03-12) X-IsSubscribed: yes * Pedro Alves [2015-04-22 23:33:22 +0100]: > 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? Of course, sorry. New version, including tests. Given that bfd (currently) only supports writing to verilog format, and not reading, then the tests (obviously) only cover 'dump' and not 'restore'. Within dump.exp I reordered the 'all_files' list a little in order to make it easier to insert new files. Everything else should be straight forward. Thanks, Andrew --- 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. --- gdb/ChangeLog | 10 ++++++++++ gdb/NEWS | 2 ++ gdb/cli/cli-dump.c | 38 ++++++++++++++++++++++++++++++++++++++ gdb/doc/ChangeLog | 5 +++++ gdb/doc/gdb.texinfo | 2 ++ gdb/testsuite/ChangeLog | 5 +++++ gdb/testsuite/gdb.base/dump.exp | 24 ++++++++++++++++++++---- 7 files changed, 82 insertions(+), 4 deletions(-) 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 + + * 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 * 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 + + * gdb.texinfo (Dump/Restore Files): Add detail about verilog dump + format. + 2015-04-17 Gary Benson * 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 diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index 04ec209..8c26ed6 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2015-04-22 Andrew Burgess + + * gdb.base/dump.exp: Add *.verilog files to all_files list. Add + new tests for verilog output. + 2015-04-21 Pierre Muller PR pascal/17815 diff --git a/gdb/testsuite/gdb.base/dump.exp b/gdb/testsuite/gdb.base/dump.exp index 9685549..21aca35 100644 --- a/gdb/testsuite/gdb.base/dump.exp +++ b/gdb/testsuite/gdb.base/dump.exp @@ -66,10 +66,14 @@ if {${data_address} > ${max_32bit_address}} then { set filenames {} set all_files { intarr1.bin intarr1b.bin intarr1.ihex - intarr1.srec intarr1.tekhex intarr2.bin intarr2b.bin intarr2.ihex - intarr2.srec intarr2.tekhex intstr1.bin intstr1b.bin intstr1.ihex - intstr1.srec intstr1.tekhex intstr2.bin intstr2b.bin intstr2.ihex - intstr2.srec intstr2.tekhex intarr3.srec + intarr1.srec intarr1.tekhex intarr1.verilog + intarr2.bin intarr2b.bin intarr2.ihex + intarr2.srec intarr2.tekhex intarr2.verilog + intstr1.bin intstr1b.bin intstr1.ihex + intstr1.srec intstr1.tekhex intstr1.verilog + intstr2.bin intstr2b.bin intstr2.ihex + intstr2.srec intstr2.tekhex intstr2.verilog + intarr3.srec } # This loop sets variables dynamically -- each name listed in @@ -147,6 +151,12 @@ make_dump_file "dump tekhex val [set intarr1.tekhex] intarray" \ make_dump_file "dump tekhex val [set intstr1.tekhex] intstruct" \ "dump struct as value, tekhex" +make_dump_file "dump verilog val [set intarr1.verilog] intarray" \ + "dump array as value, intel hex" + +make_dump_file "dump verilog val [set intstr1.verilog] intstruct" \ + "dump struct as value, intel hex" + proc capture_value { expression args } { global gdb_prompt global expect_out @@ -242,6 +252,12 @@ make_dump_file "dump tekhex mem [set intarr2.tekhex] $array_start $array_end" \ make_dump_file "dump tekhex mem [set intstr2.tekhex] $struct_start $struct_end" \ "dump struct as memory, tekhex" +make_dump_file "dump verilog mem [set intarr2.verilog] $array_start $array_end" \ + "dump array as memory, verilog" + +make_dump_file "dump verilog mem [set intstr2.verilog] $struct_start $struct_end" \ + "dump struct as memory, verilog" + # test complex expressions make_dump_file \ "dump srec mem [set intarr3.srec] &intarray \(char *\) &intarray + sizeof intarray" \