This patch fixes a bug where if a ghost unit is compiled with
ignored-ghost mode in a library project, then gprbuild will fail to find
the ALI file, because the compiler generates an empty object file, but
no ALI file.

Tested on x86_64-pc-linux-gnu, committed on trunk

2019-07-01  Bob Duff  <d...@adacore.com>

gcc/ada/

        * gnat1drv.adb (gnat1drv): Call Write_ALI if the main unit is
        ignored-ghost.
--- gcc/ada/gnat1drv.adb
+++ gcc/ada/gnat1drv.adb
@@ -1453,9 +1453,13 @@ begin
 
          --  Generate ALI file if specially requested, or for missing subunits,
          --  subunits or predefined generic. For ignored ghost code, the object
-         --  file IS generated, so Object should be True.
+         --  file IS generated, so Object should be True, and since the object
+         --  file is generated, we need to generate the ALI file. We never want
+         --  an object file without an ALI file.
 
-         if Opt.Force_ALI_Tree_File then
+         if Is_Ignored_Ghost_Unit (Main_Unit_Node)
+           or else Opt.Force_ALI_Tree_File
+         then
             Write_ALI (Object => Is_Ignored_Ghost_Unit (Main_Unit_Node));
          end if;
 

Reply via email to