This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Ada] enhance symbol processing of SALs


Tested on i686-linux, committed on trunk

This is an enhancement to the symbol processing of Stand-Alone Libraries.
A new symbol policy Direct is defined. In this policy, the reference
symbol file must be defined and is copied to the symbol file, then
passed as is to the underlying linker. This part is currently only
relevant to VMS. In addition, a new restriction is added: when both
the symbol file and the reference symbol file exist, they cannot be
the same file. The test for that is to declare attributes
Library_Symbol_File and Library_Reference_Symbol_File designating the
same file in a stand-alone library project file: this should fail.

Declaring attribute Locally_Removed_Files in non extending projects is
now allowed, provided the listed removed files would be sources of the
project if the attribute was not specified.

The following projects, in the same directory containing sources pkg.ads
and main.adb should build correctly:

prj1.gpr:
project Prj1 is
   for Locally_Removed_Files use ("main.adb");
end Prj1;

prj2.gpr:
with "prj1.gpr";
project Prj2 is
   for Source_Files use ("main.adb");
   for Main use ("main.adb");
end Prj2;

Children of packages A, G, I and S, in the standard GNAT naming schemes
have a different file name on VMS and on other platforms. For example,
on VMS, file name of spec of package A.Child is a__child.ads, while on
other platforms it is a~child.ads. As it is not possible to know on
which platform we are running before processing the project files, this
patch ensures that both forms are recognized.
The test for this is to have a source a__child.ads in a project file
containing the spec of package A.Child: it should be found and compiled
normally.

2007-06-06  Vincent Celier  <celier@adacore.com>

	* gnatsym.adb: Update Copyright notice
	(Parse_Cmd_Line): Accept new switch -D
	(Gnatsym): In Direct policy (switch -D) copy reference file to symbol
	 file.

	* prj.ads (Policy): New policy Direct
	(Yes_No_Unknown): New enumeration type
	(Project_Data): New component Libgnarl_Needed

	* prj-nmsc.adb (Check_For_Source): When recording a source file make
	use the untouched pathname casing.
	(Get_Directories): Ensure that the Display_Exec_Directory is using the
	proper casing on non case-sensitive platforms like Windows.
	(Get_Unit): Accept file names x__... and x~... (where x = a, g, i or s)
	on all platforms, as it is not possible to know which one is allowed
	before processing the project files.
	(Check_Stand_Alone_Library): Check that Library_Reference_Symbol_File is
	specified when symbol policy is Direct. Check that when there is a
	symbol file defined (either by default or with attribute
	Library_Symbol_File) it is not the same as the reference symbol file.
	(Check_Stand_Alone_Library): Recognize new symbol policy Direct.
	(Look_For_Sources): Allow Locally_Removed_Files to be declare in non
	extending projects.
	(Record_Ada_Source): Record a source that has been locally removed in an
	imported project.

	* symbols.ads (Policy): New policy Direct

	* symbols-vms.adb (Initialize): Take new policy Direct in case
	statement

Attachment: difs
Description: Text document


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]