summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorTristan Gingold2015-11-30 06:44:09 +0100
committerTristan Gingold2015-11-30 20:10:26 +0100
commit1ce6fb9504a9f9451342e07af55a195e2f1dbda5 (patch)
treeac0de58765b071c23be038914458c52c2ca2167b /src
parent7379c1371f2a83edbdf125a20b7565be983932dc (diff)
downloadghdl-1ce6fb9504a9f9451342e07af55a195e2f1dbda5.tar.gz
ghdl-1ce6fb9504a9f9451342e07af55a195e2f1dbda5.tar.bz2
ghdl-1ce6fb9504a9f9451342e07af55a195e2f1dbda5.zip
ghdl_simul debugger: handle function call, consider entity declarations.
Diffstat (limited to 'src')
-rw-r--r--src/vhdl/canon.adb3
-rw-r--r--src/vhdl/canon.ads3
-rw-r--r--src/vhdl/simulate/debugger.adb28
3 files changed, 24 insertions, 10 deletions
diff --git a/src/vhdl/canon.adb b/src/vhdl/canon.adb
index e5cd488..9108ece 100644
--- a/src/vhdl/canon.adb
+++ b/src/vhdl/canon.adb
@@ -40,9 +40,6 @@ package body Canon is
procedure Canon_Concurrent_Stmts (Top : Iir_Design_Unit; Parent : Iir);
- -- Canon on expressions, mainly for function calls.
- procedure Canon_Expression (Expr: Iir);
-
-- Canonicalize an association list.
-- If ASSOCIATION_LIST is not null, then it is re-ordored and returned.
-- If ASSOCIATION_LIST is null then:
diff --git a/src/vhdl/canon.ads b/src/vhdl/canon.ads
index 574a318..8e56793 100644
--- a/src/vhdl/canon.ads
+++ b/src/vhdl/canon.ads
@@ -55,6 +55,9 @@ package Canon is
-- Canonicalize a subprogram call.
procedure Canon_Subprogram_Call (Call : Iir);
+ -- Canon on expressions, mainly for function calls.
+ procedure Canon_Expression (Expr: Iir);
+
-- Compute the sensivity list of EXPR and add it to SENSIVITY_LIST.
-- If IS_TARGET is true, the longuest static prefix of the signal name
-- is not added to the sensitivity list, but other static prefix (such
diff --git a/src/vhdl/simulate/debugger.adb b/src/vhdl/simulate/debugger.adb
index b3e7a90..83a241b 100644
--- a/src/vhdl/simulate/debugger.adb
+++ b/src/vhdl/simulate/debugger.adb
@@ -28,6 +28,7 @@ with Scanner;
with Tokens;
with Sem_Expr;
with Sem_Scopes;
+with Canon;
with Std_Names;
with Libraries;
with Std_Package;
@@ -1324,7 +1325,7 @@ package body Debugger is
when Iir_Kind_Entity_Declaration =>
-- Top of scopes.
- null;
+ Handler.all (N);
when Iir_Kind_Function_Body
| Iir_Kind_Procedure_Body =>
@@ -1530,6 +1531,7 @@ package body Debugger is
New_Line;
Annotate_Expand_Table;
+ Canon.Canon_Expression (Expr);
Mark (Marker, Expr_Pool);
@@ -1779,7 +1781,8 @@ package body Debugger is
P := E + 1;
end Parse_Command;
- procedure Help_Proc (Line : String) is
+ procedure Help_Proc (Line : String)
+ is
P : Natural;
Root : Menu_Entry_Acc := Menu_Top'access;
begin
@@ -1829,11 +1832,22 @@ package body Debugger is
Prompt : System.Address;
begin
-- Unless interractive, do not use the debugger.
- if Reason /= Reason_Internal_Debug then
- if not Flag_Interractive then
- return;
- end if;
- end if;
+ case Reason is
+ when Reason_Internal_Debug =>
+ null;
+ when Reason_Assert
+ | Reason_Error =>
+ if not Flag_Debugger then
+ return;
+ end if;
+ when Reason_Start
+ | Reason_Elab =>
+ if not Flag_Interractive then
+ return;
+ end if;
+ when Reason_Break =>
+ null;
+ end case;
Prompt := Prompt_Debug'Address;