aboutsummaryrefslogtreecommitdiffstats
path: root/src/grt/grt-disp_rti.adb
diff options
context:
space:
mode:
Diffstat (limited to 'src/grt/grt-disp_rti.adb')
-rw-r--r--src/grt/grt-disp_rti.adb54
1 files changed, 39 insertions, 15 deletions
diff --git a/src/grt/grt-disp_rti.adb b/src/grt/grt-disp_rti.adb
index 57f6ae146..ad1798f99 100644
--- a/src/grt/grt-disp_rti.adb
+++ b/src/grt/grt-disp_rti.adb
@@ -427,6 +427,8 @@ package body Grt.Disp_Rti is
Put ("ghdl_rtik_psl_assert");
when Ghdl_Rtik_Psl_Cover =>
Put ("ghdl_rtik_psl_cover");
+ when Ghdl_Rtik_Psl_Endpoint =>
+ Put ("ghdl_rtik_psl_endpoint");
when others =>
Put ("ghdl_rtik_#");
@@ -773,13 +775,7 @@ package body Grt.Disp_Rti is
end loop;
end Disp_For_Generate;
- procedure Disp_Object (Obj : Ghdl_Rtin_Object_Acc;
- Is_Sig : Boolean;
- Ctxt : Rti_Context;
- Indent : Natural)
- is
- Addr : Address;
- Obj_Type : Ghdl_Rti_Access;
+ procedure Disp_Obj_Header (Obj : Ghdl_Rtin_Object_Acc; Indent : Natural) is
begin
Disp_Indent (Indent);
Disp_Kind (Obj.Common.Kind);
@@ -789,6 +785,18 @@ package body Grt.Disp_Rti is
Put ("; ");
Disp_Name (Obj.Name);
Put (": ");
+ end Disp_Obj_Header;
+
+ procedure Disp_Object (Obj : Ghdl_Rtin_Object_Acc;
+ Is_Sig : Boolean;
+ Ctxt : Rti_Context;
+ Indent : Natural)
+ is
+ Addr : Address;
+ Obj_Type : Ghdl_Rti_Access;
+ begin
+ Disp_Obj_Header (Obj, Indent);
+
Addr := Loc_To_Addr (Obj.Common.Depth, Obj.Loc, Ctxt);
Obj_Type := Obj.Obj_Type;
Disp_Subtype_Indication (Obj_Type, Ctxt, Addr);
@@ -811,19 +819,32 @@ package body Grt.Disp_Rti is
is
Addr : Address;
begin
- Disp_Indent (Indent);
- Disp_Kind (Obj.Common.Kind);
- Disp_Depth (Obj.Common.Depth);
- Put (", ");
- Disp_Linecol (Obj.Linecol);
- Put ("; ");
- Disp_Name (Obj.Name);
- Put (": count = ");
+ Disp_Obj_Header (Obj, Indent);
+ Put ("count = ");
Addr := Loc_To_Addr (Obj.Common.Depth, Obj.Loc, Ctxt);
Put_U32 (stdout, Ghdl_U32 (To_Ghdl_Index_Ptr (Addr).all));
New_Line;
end Disp_Psl_Directive;
+ procedure Disp_Psl_Endpoint_Directive (Obj : Ghdl_Rtin_Object_Acc;
+ Ctxt : Rti_Context;
+ Indent : Natural)
+ is
+ Addr : Address;
+ C : Character;
+ begin
+ Disp_Obj_Header (Obj, Indent);
+ Put ("endpoint = ");
+ Addr := Loc_To_Addr (Obj.Common.Depth, Obj.Loc, Ctxt);
+ if To_Ghdl_Value_Ptr (Addr).B1 then
+ C := 'T';
+ else
+ C := 'F';
+ end if;
+ Put (stdout, C);
+ New_Line;
+ end Disp_Psl_Endpoint_Directive;
+
procedure Disp_Attribute (Obj : Ghdl_Rtin_Object_Acc;
Ctxt : Rti_Context;
Indent : Natural)
@@ -1180,6 +1201,9 @@ package body Grt.Disp_Rti is
when Ghdl_Rtik_Psl_Cover
| Ghdl_Rtik_Psl_Assert =>
Disp_Psl_Directive (To_Ghdl_Rtin_Object_Acc (Rti), Ctxt, Indent);
+ when Ghdl_Rtik_Psl_Endpoint =>
+ Disp_Psl_Endpoint_Directive
+ (To_Ghdl_Rtin_Object_Acc (Rti), Ctxt, Indent);
when others =>
Disp_Indent (Indent);
Disp_Kind (Rti.Kind);