aboutsummaryrefslogtreecommitdiff
path: root/gcc/ada
diff options
context:
space:
mode:
authorVincent Celier <celier@adacore.com>2008-07-31 12:27:30 +0200
committerArnaud Charlet <charlet@gcc.gnu.org>2008-07-31 12:27:30 +0200
commit23ed6584d682ee5036850fdeb52cb7c22b8e3a0b (patch)
treee9758081a02cda29f7ebff489474605652e2ae90 /gcc/ada
parentb666e5681569d47b0d75b7bc5fecdcd513da4b88 (diff)
downloadgcc-23ed6584d682ee5036850fdeb52cb7c22b8e3a0b.zip
gcc-23ed6584d682ee5036850fdeb52cb7c22b8e3a0b.tar.gz
gcc-23ed6584d682ee5036850fdeb52cb7c22b8e3a0b.tar.bz2
prj-nmsc.adb (Check_Library_Attributes): Check if Linker'Switches or Linker'Default_Switches are declared.
2008-07-31 Vincent Celier <celier@adacore.com> * prj-nmsc.adb (Check_Library_Attributes): Check if Linker'Switches or Linker'Default_Switches are declared. Warn if they are declared. From-SVN: r138385
Diffstat (limited to 'gcc/ada')
-rw-r--r--gcc/ada/prj-nmsc.adb40
1 files changed, 40 insertions, 0 deletions
diff --git a/gcc/ada/prj-nmsc.adb b/gcc/ada/prj-nmsc.adb
index f3b40b3..4e8384f 100644
--- a/gcc/ada/prj-nmsc.adb
+++ b/gcc/ada/prj-nmsc.adb
@@ -4104,6 +4104,46 @@ package body Prj.Nmsc is
end if;
end if;
+ -- Check if Linker'Switches or Linker'Default_Switches are declared.
+ -- Warn if they are declared, as it is a common error to think that
+ -- library are "linked" with Linker switches.
+
+ if Data.Library then
+ declare
+ Linker_Package_Id : constant Package_Id :=
+ Util.Value_Of (Name_Linker, Data.Decl.Packages, In_Tree);
+ Linker_Package : Package_Element;
+ Switches : Array_Element_Id := No_Array_Element;
+
+ begin
+ if Linker_Package_Id /= No_Package then
+ Linker_Package := In_Tree.Packages.Table (Linker_Package_Id);
+
+ Switches :=
+ Value_Of
+ (Name => Name_Switches,
+ In_Arrays => Linker_Package.Decl.Arrays,
+ In_Tree => In_Tree);
+
+ if Switches = No_Array_Element then
+ Switches :=
+ Value_Of
+ (Name => Name_Default_Switches,
+ In_Arrays => Linker_Package.Decl.Arrays,
+ In_Tree => In_Tree);
+ end if;
+
+ if Switches /= No_Array_Element then
+ Error_Msg
+ (Project, In_Tree,
+ "?Linker switches not taken into account in library " &
+ "projects",
+ No_Location);
+ end if;
+ end if;
+ end;
+ end if;
+
if Data.Extends /= No_Project then
In_Tree.Projects.Table (Data.Extends).Library := False;
end if;