-- Mcode back-end for ortho - Internal debugging. -- Copyright (C) 2006 Tristan Gingold -- -- GHDL is free software; you can redistribute it and/or modify it under -- the terms of the GNU General Public License as published by the Free -- Software Foundation; either version 2, or (at your option) any later -- version. -- -- GHDL is distributed in the hope that it will be useful, but WITHOUT ANY -- WARRANTY; without even the implied warranty of MERCHANTABILITY or -- FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -- for more details. -- -- You should have received a copy of the GNU General Public License -- along with GCC; see the file COPYING. If not, write to the Free -- Software Foundation, 59 Temple Place - Suite 330, Boston, MA -- 02111-1307, USA. with Ortho_Code.Flags; package body Ortho_Code.Debug is procedure Disp_Mode (M : Mode_Type) is use Ada.Text_IO; begin case M is when Mode_U8 => Put ("U8 "); when Mode_U16 => Put ("U16"); when Mode_U32 => Put ("U32"); when Mode_U64 => Put ("U64"); when Mode_I8 => Put ("I8 "); when Mode_I16 => Put ("I16"); when Mode_I32 => Put ("I32"); when Mode_I64 => Put ("I64"); when Mode_X1 => Put ("xxx"); when Mode_Nil => Put ("Nil"); when Mode_F32 => Put ("F32"); when Mode_F64 => Put ("F64"); when Mode_B2 => Put ("B2 "); when Mode_Blk => Put ("Blk"); when Mode_P32 => Put ("P32"); when Mode_P64 => Put ("P64"); end case; end Disp_Mode; procedure Set_Debug_Be_Flag (C : Character) is use Ada.Text_IO; begin case C is when 'a' => Flag_Debug_Asm := True; when 'b' => Flag_Debug_Body := True; when 'B' => Flag_Debug_Body2 := True; when 'c' => Flag_Debug_Code := True; when 'C' => Flag_Debug_Code2 := True; when 'd' => Flag_Debug_Dump := True; when 'h' => Flag_Debug_Hex := True; when 'H' => Flag_Debug_Hli := True; when 'i' => Flag_Debug_Insn := True; when 's' => Flag_Debug_Stat := True; when 'k' => Flag_Debug_Keep := True; when others => Put_Line (Standard_Error, "unknown debug be flag '" & C & "'"); end case; end Set_Debug_Be_Flag; procedure Set_Be_Flag (Str : String) is use Ada.Text_IO; subtype Str_Type is String (1 .. Str'Length); S : Str_Type renames Str; begin if S'Length > 11 and then S (1 .. 11) = "--be-debug=" then for I in 12 .. S'Last loop Set_Debug_Be_Flag (S (I)); end loop; elsif S'Length > 10 and then S (1 .. 10) = "--be-dump=" then for I in 11 .. S'Last loop case S (I) is when 'c' => Flag_Dump_Code := True; when others => Put_Line (Standard_Error, "unknown back-end dump flag '" & S (I) & "'"); end case; end loop; elsif S'Length > 10 and then S (1 .. 10) = "--be-disp=" then for I in 11 .. S'Last loop case S (I) is when 'c' => Flag_Disp_Code := True; Flags.Flag_Type_Name := True; when others => Put_Line (Standard_Error, "unknown back-end disp flag '" & S (I) & "'"); end case; end loop; elsif S'Length > 9 and then S (1 .. 9) = "--be-opt=" then for I in 10 .. S'Last loop case S (I) is when 'O' => Flags.Flag_Optimize := True; when 'b' => Flags.Flag_Opt_BB := True; when others => Put_Line (Standard_Error, "unknown back-end opt flag '" & S (I) & "'"); end case; end loop; else Put_Line (Standard_Error, "unknown back-end option " & Str); end if; end Set_Be_Flag; end Ortho_Code.Debug;