diff options
author | Ben Reynwar <ben@reynwar.net> | 2020-05-19 22:35:27 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-05-20 07:35:27 +0200 |
commit | 4ae38ebfb077263cc24d63e84707322af39d0b0b (patch) | |
tree | d78e73c7b9eedf7417e3b5a77bd2839dab4b56db | |
parent | 0e39a575da602ee833996c6ac30adc7c9069622e (diff) | |
download | ghdl-4ae38ebfb077263cc24d63e84707322af39d0b0b.tar.gz ghdl-4ae38ebfb077263cc24d63e84707322af39d0b0b.tar.bz2 ghdl-4ae38ebfb077263cc24d63e84707322af39d0b0b.zip |
ghwdump should handle zero-length signals (#1327)
* Adding a test for issue #1326 to check that ghwdump doesn't crash with a zero-length signal.
* Remove an assertion from ghwlib that prevents zero-length signals.
-rw-r--r-- | src/grt/ghwlib.c | 2 | ||||
-rw-r--r-- | testsuite/gna/issue1326/mytestbench.vhdl | 17 | ||||
-rwxr-xr-x | testsuite/gna/issue1326/testsuite.sh | 18 |
3 files changed, 36 insertions, 1 deletions
diff --git a/src/grt/ghwlib.c b/src/grt/ghwlib.c index 0e3a07568..8d1fd8ddf 100644 --- a/src/grt/ghwlib.c +++ b/src/grt/ghwlib.c @@ -1313,7 +1313,7 @@ ghw_disp_hie (struct ghw_handler *h, struct ghw_hie *top) ghw_disp_subtype_indication (h, hie->u.sig.type); printf (":"); k = 0; - assert (sigs[0] != GHW_NO_SIG); + while (1) { /* First signal of the range. */ diff --git a/testsuite/gna/issue1326/mytestbench.vhdl b/testsuite/gna/issue1326/mytestbench.vhdl new file mode 100644 index 000000000..3dbda0d6d --- /dev/null +++ b/testsuite/gna/issue1326/mytestbench.vhdl @@ -0,0 +1,17 @@ +library ieee ; + +entity mytestbench is +end mytestbench; + +architecture arch of mytestbench is + signal zero_length_array : bit_vector(-1 downto 0); +begin + + -- Just here so we get a meaningful dump. + main_process: process + begin + wait for 10 ns; + wait; + end process; + +end arch; diff --git a/testsuite/gna/issue1326/testsuite.sh b/testsuite/gna/issue1326/testsuite.sh new file mode 100755 index 000000000..e6b3262c8 --- /dev/null +++ b/testsuite/gna/issue1326/testsuite.sh @@ -0,0 +1,18 @@ +#! /bin/sh + +. ../../testenv.sh + +analyze mytestbench.vhdl +elab mytestbench + +simulate mytestbench --wave=dump.ghw | tee mytestbench.out + +gcc ../../../src/grt/ghwdump.c ../../../src/grt/ghwlib.c -I../../../src/grt/ -o ghwdump + +# We're just checking that ghwdump doesn't crash on a zero length signal. +./ghwdump -ths dump.ghw > dump.txt + +rm -f mytestbench.out ghwdump dump.txt dump.ghw +clean + +echo "Test passed" |