[Ada] GNAT.Compiler_Version and LTO
gcc/ada/ * bindgen.adb (Gen_Output_File_Ada): Generate a new constant GNAT_Version_Address. * libgnat/g-comver.adb (GNAT_Version_Address): New; (GNAT_Version): Use GNAT_Version_Address to disable LTO warning.
This commit is contained in:
parent
07537fe632
commit
4153c75471
|
@ -2388,7 +2388,11 @@ package body Bindgen is
|
|||
Gnat_Version_String &
|
||||
""" & ASCII.NUL;");
|
||||
WBI (" pragma Export (C, GNAT_Version, ""__gnat_version"");");
|
||||
|
||||
WBI ("");
|
||||
WBI (" GNAT_Version_Address : constant System.Address := " &
|
||||
"GNAT_Version'Address;");
|
||||
WBI (" pragma Export (C, GNAT_Version_Address, " &
|
||||
"""__gnat_version_address"");");
|
||||
WBI ("");
|
||||
Set_String (" Ada_Main_Program_Name : constant String := """);
|
||||
Get_Name_String (Units.Table (First_Unit_Entry).Uname);
|
||||
|
|
|
@ -33,6 +33,8 @@
|
|||
-- GNAT compiler used to compile the program. It relies on the generated
|
||||
-- constant in the binder generated package that records this information.
|
||||
|
||||
with System;
|
||||
|
||||
package body GNAT.Compiler_Version is
|
||||
|
||||
Ver_Len_Max : constant := 256;
|
||||
|
@ -43,8 +45,15 @@ package body GNAT.Compiler_Version is
|
|||
-- This is logically a reference to Gnatvsn.Ver_Prefix but we cannot
|
||||
-- import this directly since run-time units cannot WITH compiler units.
|
||||
|
||||
GNAT_Version_Address : constant System.Address;
|
||||
pragma Import (C, GNAT_Version_Address, "__gnat_version_address");
|
||||
|
||||
GNAT_Version : constant String (1 .. Ver_Len_Max + Ver_Prefix'Length);
|
||||
pragma Import (C, GNAT_Version, "__gnat_version");
|
||||
pragma Import (Ada, GNAT_Version);
|
||||
for GNAT_Version'Address use GNAT_Version_Address;
|
||||
-- Use a level of indirection via __gnat_version_address to avoid LTO
|
||||
-- type mismtch warnings between two string objects of potentially
|
||||
-- different size.
|
||||
|
||||
-------------
|
||||
-- Version --
|
||||
|
|
Loading…
Reference in New Issue