aboutsummaryrefslogtreecommitdiff
path: root/gcc/ada/switch-c.adb
diff options
context:
space:
mode:
authorEric Botcazou <ebotcazou@adacore.com>2018-05-29 09:36:51 +0000
committerPierre-Marie de Rodat <pmderodat@gcc.gnu.org>2018-05-29 09:36:51 +0000
commit1e7629b8a2f2b05194ab8bc3878f6f841666a289 (patch)
tree1efd669ea62ee925e3ed67e0fff0b0193d000568 /gcc/ada/switch-c.adb
parent7883c42e3ffab6c1a87e22637384cf2c80193055 (diff)
downloadgcc-1e7629b8a2f2b05194ab8bc3878f6f841666a289.zip
gcc-1e7629b8a2f2b05194ab8bc3878f6f841666a289.tar.gz
gcc-1e7629b8a2f2b05194ab8bc3878f6f841666a289.tar.bz2
[Ada] Implement machine parsable format for -gnatR output
This adds a new variant to the -gnatR switch, namely -gnatRj, which causes the compiler to output representation information to a file in the JSON data interchange format. It can be combined with -gnatR0/1/2/3/m (but is incompatible with -gnaRe and -gnatRs). The information output in this mode is a superset of that output in the traditional -gnatR mode, but is otherwise equivalent for the common part. 2018-05-29 Eric Botcazou <ebotcazou@adacore.com> gcc/ada/ * doc/gnat_ugn/building_executable_programs_with_gnat.rst (Alphabetical List of All Switches): Document -gnatRj. (Debugging Control): Likewise. * gnat_ugn.texi: Regenerate. * opt.ads (List_Representation_Info_To_JSON): New boolean variable. * osint-c.adb (Create_Repinfo_File): Use the .json instead of .rep extension if List_Representation_Info_To_JSON is true. * repinfo.ads: Document the JSON output format. * repinfo.adb (List_Location): New procedure. (List_Array_Info): Add support for JSON output. (List_Entities): Likewise. (Unop): Likewise. (Binop): Likewise. (Print_Expr): Likewise. (List_Linker_Section): Likewise. (List_Mechanisms): Likewise. (List_Name): Likewise. (List_Object_Info): Likewise. (List_Record_Info): Likewise. (List_Component_Layout): Likewise. Add Indent parameter. (List_Structural_Record_Layout): New procedure. (List_Attr): Add support for JSON output. (List_Type_Info): Likewise. (Write_Unknown_Val): Likewise. * switch-c.adb (Scan_Front_End_Switches) <R>: Deal with 'j'. * usage.adb (Usage): List -gnatRj. From-SVN: r260868
Diffstat (limited to 'gcc/ada/switch-c.adb')
-rw-r--r--gcc/ada/switch-c.adb11
1 files changed, 11 insertions, 0 deletions
diff --git a/gcc/ada/switch-c.adb b/gcc/ada/switch-c.adb
index 183d0ef..be8fb61 100644
--- a/gcc/ada/switch-c.adb
+++ b/gcc/ada/switch-c.adb
@@ -1211,6 +1211,9 @@ package body Switch.C is
when 's' =>
List_Representation_Info_To_File := True;
+ when 'j' =>
+ List_Representation_Info_To_JSON := True;
+
when 'm' =>
List_Representation_Info_Mechanisms := True;
@@ -1224,6 +1227,14 @@ package body Switch.C is
Ptr := Ptr + 1;
end loop;
+ if List_Representation_Info_To_JSON then
+ if List_Representation_Info_To_File then
+ Osint.Fail ("-gnatRs is incompatible with -gnatRj");
+ elsif List_Representation_Info_Extended then
+ Osint.Fail ("-gnatRe is incompatible with -gnatRj");
+ end if;
+ end if;
+
-- -gnats (syntax check only)
when 's' =>