diff options
Diffstat (limited to 'gcc/ada/mlib-tgt-linux.adb')
-rw-r--r-- | gcc/ada/mlib-tgt-linux.adb | 119 |
1 files changed, 9 insertions, 110 deletions
diff --git a/gcc/ada/mlib-tgt-linux.adb b/gcc/ada/mlib-tgt-linux.adb index 848a11ca4e7..001e1a4609f 100644 --- a/gcc/ada/mlib-tgt-linux.adb +++ b/gcc/ada/mlib-tgt-linux.adb @@ -31,7 +31,6 @@ with MLib.Fil; with MLib.Utl; with Opt; with Output; use Output; -with System; package body MLib.Tgt.Specific is @@ -41,10 +40,7 @@ package body MLib.Tgt.Specific is procedure Build_Dynamic_Library (Ofiles : Argument_List; - Foreign : Argument_List; - Afiles : Argument_List; Options : Argument_List; - Options_2 : Argument_List; Interfaces : Argument_List; Lib_Filename : String; Lib_Dir : String; @@ -61,10 +57,7 @@ package body MLib.Tgt.Specific is procedure Build_Dynamic_Library (Ofiles : Argument_List; - Foreign : Argument_List; - Afiles : Argument_List; Options : Argument_List; - Options_2 : Argument_List; Interfaces : Argument_List; Lib_Filename : String; Lib_Dir : String; @@ -73,8 +66,6 @@ package body MLib.Tgt.Specific is Lib_Version : String := ""; Auto_Init : Boolean := False) is - pragma Unreferenced (Foreign); - pragma Unreferenced (Afiles); pragma Unreferenced (Interfaces); pragma Unreferenced (Symbol_Data); pragma Unreferenced (Auto_Init); @@ -101,56 +92,15 @@ package body MLib.Tgt.Specific is Objects => Ofiles, Options => Options, Driver_Name => Driver_Name, - Options_2 => Options_2); + Options_2 => No_Argument_List); else declare - Maj_Version : constant String := Lib_Version; - Last_Maj : Positive := Maj_Version'Last; - Last : Positive; - Ok_Maj : Boolean := False; + Maj_Version : constant String := + Major_Id_Name (Lib_File, Lib_Version); begin - while Last_Maj > Maj_Version'First loop - if Maj_Version (Last_Maj) in '0' .. '9' then - Last_Maj := Last_Maj - 1; - - else - Ok_Maj := Last_Maj /= Maj_Version'Last and then - Maj_Version (Last_Maj) = '.'; - - if Ok_Maj then - Last_Maj := Last_Maj - 1; - end if; - - exit; - end if; - end loop; - - if Ok_Maj then - Last := Last_Maj; - - while Last > Maj_Version'First loop - if Maj_Version (Last) in '0' .. '9' then - Last := Last - 1; - - else - Ok_Maj := Last /= Last_Maj and then - Maj_Version (Last) = '.'; - - if Ok_Maj then - Last := Last - 1; - - Ok_Maj := Maj_Version (1 .. Last) = Lib_File; - end if; - - exit; - end if; - end loop; - end if; - - if Ok_Maj then - Version_Arg := new String'("-Wl,-soname," & - Maj_Version (1 .. Last_Maj)); + if Maj_Version'Length /= 0 then + Version_Arg := new String'("-Wl,-soname," & Maj_Version); else Version_Arg := new String'("-Wl,-soname," & Lib_Version); @@ -162,7 +112,7 @@ package body MLib.Tgt.Specific is Objects => Ofiles, Options => Options & Version_Arg, Driver_Name => Driver_Name, - Options_2 => Options_2); + Options_2 => No_Argument_List); Symbolic_Link_Needed := Lib_Version /= Lib_Path; else @@ -171,65 +121,14 @@ package body MLib.Tgt.Specific is Objects => Ofiles, Options => Options & Version_Arg, Driver_Name => Driver_Name, - Options_2 => Options_2); + Options_2 => No_Argument_List); Symbolic_Link_Needed := Lib_Dir & Directory_Separator & Lib_Version /= Lib_Path; end if; if Symbolic_Link_Needed then - declare - Success : Boolean; - Oldpath : String (1 .. Lib_Version'Length + 1); - Newpath : String (1 .. Lib_Path'Length + 1); - - Result : Integer; - pragma Unreferenced (Result); - - function Symlink - (Oldpath : System.Address; - Newpath : System.Address) return Integer; - pragma Import (C, Symlink, "__gnat_symlink"); - - begin - Oldpath (1 .. Lib_Version'Length) := Lib_Version; - Oldpath (Oldpath'Last) := ASCII.NUL; - Newpath (1 .. Lib_Path'Length) := Lib_Path; - Newpath (Newpath'Last) := ASCII.NUL; - - Delete_File (Lib_Path, Success); - - Result := Symlink (Oldpath'Address, Newpath'Address); - end; - - if Ok_Maj then - declare - Success : Boolean; - Oldpath : String (1 .. Lib_Version'Length + 1); - Maj_Path : constant String := - Lib_Dir & Directory_Separator & - Maj_Version (1 .. Last_Maj); - Newpath : String (1 .. Maj_Path'Length + 1); - - Result : Integer; - pragma Unreferenced (Result); - - function Symlink - (Oldpath : System.Address; - Newpath : System.Address) return Integer; - pragma Import (C, Symlink, "__gnat_symlink"); - - begin - Oldpath (1 .. Lib_Version'Length) := Lib_Version; - Oldpath (Oldpath'Last) := ASCII.NUL; - Newpath (1 .. Maj_Path'Length) := Maj_Path; - Newpath (Newpath'Last) := ASCII.NUL; - - Delete_File (Maj_Path, Success); - - Result := Symlink (Oldpath'Address, Newpath'Address); - end; - end if; - + Create_Sym_Links + (Lib_Path, Lib_Version, Lib_Dir, Maj_Version); end if; end; end if; |