diff options
author | Vincent Celier <celier@adacore.com> | 2005-07-04 15:28:39 +0200 |
---|---|---|
committer | Arnaud Charlet <charlet@gcc.gnu.org> | 2005-07-04 15:28:39 +0200 |
commit | df9567735369e6366063808644f318c2ff79665a (patch) | |
tree | 225dcf0a73f36e94043f1f0f435ff2a3189bd7a5 /gcc | |
parent | f4657cf513a883777da75a8668b3526684f46047 (diff) | |
download | gcc-df9567735369e6366063808644f318c2ff79665a.zip gcc-df9567735369e6366063808644f318c2ff79665a.tar.gz gcc-df9567735369e6366063808644f318c2ff79665a.tar.bz2 |
mlib-prj.adb (Auto_Initialize): New constant String
2005-07-04 Vincent Celier <celier@adacore.com>
* mlib-prj.adb (Auto_Initialize): New constant String
(SALs_Use_Constructors): New Boolean function
(Build_Library): Call gnatbind with Auto_Initialize switch when
SALs_Use_Constructors returns True.
* mlib-tgt.ads: Minor reformatting
* mlib-utl.ads: Minor reformatting
* opt.ads: (Use_Pragma_Linker_Constructor): New Boolean flag
From-SVN: r101582
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ada/mlib-prj.adb | 22 | ||||
-rw-r--r-- | gcc/ada/mlib-tgt.ads | 9 | ||||
-rw-r--r-- | gcc/ada/mlib-utl.ads | 19 | ||||
-rw-r--r-- | gcc/ada/opt.ads | 4 |
4 files changed, 39 insertions, 15 deletions
diff --git a/gcc/ada/mlib-prj.adb b/gcc/ada/mlib-prj.adb index 36a504e..464821c 100644 --- a/gcc/ada/mlib-prj.adb +++ b/gcc/ada/mlib-prj.adb @@ -96,6 +96,8 @@ package body MLib.Prj is Compile_Switch_String : aliased String := "-c"; Compile_Switch : constant String_Access := Compile_Switch_String'Access; + Auto_Initialize : constant String := "-a"; + -- List of objects to put inside the library Object_Files : Argument_List_Access; @@ -241,6 +243,10 @@ package body MLib.Prj is -- Make sure that all the above tables are empty -- (Objects, Foreign_Objects, Ali_Files, Options). + function SALs_Use_Constructors return Boolean; + -- Indicate if Stand-Alone Libraries are automatically initialized using + -- the constructor mechanism. + ------------------ -- Add_Argument -- ------------------ @@ -811,6 +817,10 @@ package body MLib.Prj is (B_Start & Get_Name_String (Data.Library_Name) & ".adb"); Add_Argument ("-L" & Get_Name_String (Data.Library_Name)); + if Data.Lib_Auto_Init and then SALs_Use_Constructors then + Add_Argument (Auto_Initialize); + end if; + -- Check if Binder'Default_Switches ("Ada") is defined. If it is, -- add these switches to call gnatbind. @@ -2021,4 +2031,16 @@ package body MLib.Prj is Library_Projs.Init; end Reset_Tables; + --------------------------- + -- SALs_Use_Constructors -- + --------------------------- + + function SALs_Use_Constructors return Boolean is + function C_SALs_Init_Using_Constructors return Integer; + pragma Import (C, C_SALs_Init_Using_Constructors, + "__gnat_sals_init_using_constructors"); + begin + return C_SALs_Init_Using_Constructors /= 0; + end SALs_Use_Constructors; + end MLib.Prj; diff --git a/gcc/ada/mlib-tgt.ads b/gcc/ada/mlib-tgt.ads index cc7c549..4e8cd24 100644 --- a/gcc/ada/mlib-tgt.ads +++ b/gcc/ada/mlib-tgt.ads @@ -27,7 +27,7 @@ -- This package provides a set of target dependent routines to build -- static, dynamic and shared libraries. --- There are several versions for the body of this package. +-- There are several versions for the body of this package -- In the default version, libraries are not supported, so function -- Support_For_Libraries return None. @@ -61,11 +61,12 @@ package MLib.Tgt is -- A list of options to invoke the Archive_Builder, usually "cr" for "ar" function Archive_Indexer return String; - -- Returns the name of the program, if any, that generates an index - -- to the contents of an archive, usually "ranlib". + -- Returns the name of the program, if any, that generates an index to the + -- contents of an archive, usually "ranlib". If there is no archive indexer + -- to be used, returns an empty string. function Archive_Indexer_Options return String_List_Access; - -- A list of options to invoke the Archive_Indexer, usually empty. + -- A list of options to invoke the Archive_Indexer, usually empty function Dynamic_Option return String; -- gcc option to create a dynamic library. diff --git a/gcc/ada/mlib-utl.ads b/gcc/ada/mlib-utl.ads index 1de6999..bbc895d 100644 --- a/gcc/ada/mlib-utl.ads +++ b/gcc/ada/mlib-utl.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 2001-2004, Ada Core Technologies, Inc -- +-- Copyright (C) 2001-2005, Ada Core Technologies, Inc -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -29,9 +29,6 @@ package MLib.Utl is - No_Argument_List : constant Argument_List := (1 .. 0 => null); - -- Comment needed ??? - procedure Delete_File (Filename : in String); -- Delete the file Filename -- Why is this different from the standard OS_Lib routine??? @@ -43,18 +40,18 @@ package MLib.Utl is Options_2 : Argument_List; Driver_Name : Name_Id := No_Name); -- Driver_Name indicates the "driver" to invoke; by default, the "driver" - -- is gcc. - -- This procedure invokes the driver to create a shared library. + -- is gcc. This procedure invokes the driver to create a shared library. -- Options are passed to gcc before the objects, Options_2 after. - -- Output_File is the name of the library file to create. - -- Objects are the names of the object files to put in the library. + -- Output_File is the name of the library file to create. Objects are the + -- names of the object files to put in the library. procedure Ar (Output_File : String; Objects : Argument_List); - -- Run ar to move all the binaries inside the archive. - -- If ranlib is on the path, run it also. - -- Arguments need documenting ??? + -- Run ar to move all the binaries inside the archive. If ranlib is on the + -- path, run it also. Output_File is the path name of the archive to + -- create. Objects is the list of the path names of the object files to be + -- put in the archive. function Lib_Directory return String; -- Return the directory containing libgnat diff --git a/gcc/ada/opt.ads b/gcc/ada/opt.ads index 64a86d2..a4de938 100644 --- a/gcc/ada/opt.ads +++ b/gcc/ada/opt.ads @@ -1012,6 +1012,10 @@ package Opt is -- Set to True if -h (-gnath for the compiler) switch encountered -- requesting usage information + Use_Pragma_Linker_Constructor : Boolean := False; + -- GNATBIND + -- True if pragma Linker_Constructor applies to adainit + Use_VADS_Size : Boolean := False; -- GNAT -- Set to True if a valid pragma Use_VADS_Size is processed |