From 53914c09e1f532e0c6fa509634303b3a017dbb97 Mon Sep 17 00:00:00 2001
From: Tristan Gingold <tgingold@free.fr>
Date: Wed, 13 May 2020 08:26:01 +0200
Subject: vhdl-configuration: handle overrides of slv.  Fix #1298

---
 src/vhdl/vhdl-configuration.adb | 16 +++++++++++++++-
 1 file changed, 15 insertions(+), 1 deletion(-)

diff --git a/src/vhdl/vhdl-configuration.adb b/src/vhdl/vhdl-configuration.adb
index 5f50a16aa..ad3fdc6a1 100644
--- a/src/vhdl/vhdl-configuration.adb
+++ b/src/vhdl/vhdl-configuration.adb
@@ -1158,7 +1158,20 @@ package body Vhdl.Configuration is
             end loop;
          end;
       else
-         Append_String8_String (Value.all);
+         declare
+            Eid : Name_Id;
+            Elit : Iir;
+         begin
+            for I in Value'Range loop
+               Eid := Get_Identifier (Value (I));
+               Elit := Find_Name_In_Flist (Elist, Eid);
+               if Elit = Null_Iir then
+                  Error_Msg_Elab ("incorrect character %i in string", +Eid);
+                  Elit := Get_Nth_Element (Elist, 0);
+               end if;
+               Append_String8 (Nat8 (Get_Enum_Pos (Elit)));
+            end loop;
+         end;
          Len := Value'Length;
       end if;
       Res := Create_Iir (Iir_Kind_String_Literal8);
@@ -1201,6 +1214,7 @@ package body Vhdl.Configuration is
       end case;
       if Res = Null_Iir then
          Error_Msg_Elab ("unhandled override for %n", +Gen);
+         return;
       end if;
 
       if Get_Is_Ref (Gen) then
-- 
cgit v1.2.3