Index: prj-nmsc.adb
===================================================================
--- prj-nmsc.adb	(revision 178448)
+++ prj-nmsc.adb	(working copy)
@@ -82,8 +82,7 @@
       Hash       => Hash,
       Equal      => "=");
    --  File name information found in string list attribute (Source_Files or
-   --  Source_List_File). Except is set to True if source is a naming exception
-   --  in the project. Used to check that all referenced files were indeed
+   --  Source_List_File). Used to check that all referenced files were indeed
    --  found on the disk.
 
    type Unit_Exception is record
@@ -4302,6 +4301,12 @@
    is
       Shared : constant Shared_Project_Tree_Data_Access := Data.Tree.Shared;
 
+      Lib_Name            : constant Prj.Variable_Value :=
+                              Prj.Util.Value_Of
+                               (Snames.Name_Library_Name,
+                                Project.Decl.Attributes,
+                                Shared);
+
       Lib_Interfaces      : constant Prj.Variable_Value :=
                               Prj.Util.Value_Of
                                 (Snames.Name_Library_Interface,
@@ -4353,7 +4358,45 @@
       --  Library_Interface is defined.
 
       if not Lib_Interfaces.Default then
+
+         --  The name of a stand-alone library needs to have the syntax of an
+         --  Ada identifier.
+
          declare
+            Name : constant String := Get_Name_String (Project.Library_Name);
+            OK   : Boolean := Is_Letter (Name (Name'First));
+            Underline : Boolean := False;
+         begin
+            for J in Name'First + 1 .. Name'Last loop
+               exit when not OK;
+
+               if Is_Alphanumeric (Name (J)) then
+                  Underline := False;
+
+               elsif Name (J) = '_' then
+                  if Underline then
+                     OK := False;
+                  else
+                     Underline := True;
+                  end if;
+
+               else
+                  OK := False;
+               end if;
+            end loop;
+
+            OK := OK and then not Underline;
+
+            if not OK then
+               Error_Msg
+                 (Data.Flags,
+                  "Incorrect library name for a Stand-Alone Library",
+                  Lib_Name.Location, Project);
+               return;
+            end if;
+         end;
+
+         declare
             Interfaces     : String_List_Id := Lib_Interfaces.Values;
             Interface_ALIs : String_List_Id := Nil_String;
             Unit           : Name_Id;
Index: projects.texi
===================================================================
--- projects.texi	(revision 178446)
+++ projects.texi	(working copy)
@@ -1,6 +1,7 @@
 @set gprconfig GPRconfig
 
 @c ------ projects.texi
+@c Copyright (C) 2002-2011, Free Software Foundation, Inc.
 @c This file is shared between the GNAT user's guide and gprbuild. It is not
 @c compilable on its own, you should instead compile the other two manuals.
 @c For that reason, there is no toplevel @menu
@@ -1525,10 +1526,11 @@
 @item @b{Library_Name}:
 @cindex @code{Library_Name}
   This attribute is the name of the library to be built. There is no
-  restriction on the name of a library imposed by the project manager;
-  however, there may be system specific restrictions on the name.
-  In general, it is recommended to stick to alphanumeric characters
-  (and possibly underscores) to help portability.
+  restriction on the name of a library imposed by the project manager, except
+  for stand-alone libraries whose names must follow the syntax of Ada
+  identifiers; however, there may be system specific restrictions on the name.
+  In general, it is recommended to stick to alphanumeric characters (and
+  possibly single underscores) to help portability.
 
 @item @b{Library_Dir}:
 @cindex @code{Library_Dir}
@@ -1749,6 +1751,9 @@
 Ada: they provide a means for minimizing relinking & redeployment of complex
 systems when localized changes are made.
 
+The name of a stand-alone library, specified with attribute
+@code{Library_Name}, must have the syntax of an Ada identifier.
+
 The most prominent characteristic of a stand-alone library is that it offers a
 distinction between interface units and implementation units. Only the former
 are visible to units outside the library. A stand-alone library project is thus
