[multiple changes]

2011-10-16  Tristan Gingold  <gingold@adacore.com>

	* link.c (_AIX): Add support for GNU ld.        

2011-10-16  Fedor Rybin  <frybin@adacore.com>

	* gnat_ugn.texi: Fixing gnattest example names in the doc.
	Adding explanation to additional tests usage.

2011-10-16  Robert Dewar  <dewar@adacore.com>

	* exp_ch6.adb, sem_ch6.adb: Minor reformatting.

2011-10-16  Eric Botcazou  <ebotcazou@adacore.com>

	* a-convec.adb: Fix minor inconsistencies.

2011-10-16  Matthew Heaney  <heaney@adacore.com>

	* a-cusyqu.ads, a-cbsyqu.ads, a-cuprqu.ads, a-cbprqu.ads (package
	Implementation): Specify pragma Implementation_Defined.

From-SVN: r180056
This commit is contained in:
Arnaud Charlet 2011-10-16 14:12:11 +02:00
parent 6aa904c4c6
commit ea10ca9c75
10 changed files with 113 additions and 61 deletions

View File

@ -1,3 +1,25 @@
2011-10-16 Tristan Gingold <gingold@adacore.com>
* link.c (_AIX): Add support for GNU ld.
2011-10-16 Fedor Rybin <frybin@adacore.com>
* gnat_ugn.texi: Fixing gnattest example names in the doc.
Adding explanation to additional tests usage.
2011-10-16 Robert Dewar <dewar@adacore.com>
* exp_ch6.adb, sem_ch6.adb: Minor reformatting.
2011-10-16 Eric Botcazou <ebotcazou@adacore.com>
* a-convec.adb: Fix minor inconsistencies.
2011-10-16 Matthew Heaney <heaney@adacore.com>
* a-cusyqu.ads, a-cbsyqu.ads, a-cuprqu.ads, a-cbprqu.ads (package
Implementation): Specify pragma Implementation_Defined.
2011-10-15 Nicolas Roche <roche@adacore.com>
* gcc-interface/lang-specs.h: Ensure -mrtp switch is passed when using

View File

@ -54,12 +54,12 @@ generic
package Ada.Containers.Bounded_Priority_Queues is
pragma Preelaborate;
-- All identifiers in this unit are implementation defined
pragma Implementation_Defined;
package Implementation is
-- All identifiers in this unit are implementation defined
pragma Implementation_Defined;
type List_Type (Capacity : Count_Type) is tagged limited private;
procedure Enqueue

View File

@ -44,12 +44,12 @@ generic
package Ada.Containers.Bounded_Synchronized_Queues is
pragma Preelaborate;
-- All identifiers in this unit are implementation defined
pragma Implementation_Defined;
package Implementation is
-- All identifiers in this unit are implementation defined
pragma Implementation_Defined;
type List_Type (Capacity : Count_Type) is tagged limited private;
procedure Enqueue

View File

@ -802,7 +802,7 @@ package body Ada.Containers.Vectors is
if Is_Empty (Object.Container.all) then
return No_Element;
else
return Cursor'(Object.Container, Index_Type'First);
return (Object.Container, Index_Type'First);
end if;
end First;
@ -1517,7 +1517,7 @@ package body Ada.Containers.Vectors is
Insert (Container, Index, New_Item);
Position := Cursor'(Container'Unchecked_Access, Index);
Position := (Container'Unchecked_Access, Index);
end Insert;
procedure Insert
@ -1600,7 +1600,7 @@ package body Ada.Containers.Vectors is
Insert (Container, Index, New_Item, Count);
Position := Cursor'(Container'Unchecked_Access, Index);
Position := (Container'Unchecked_Access, Index);
end Insert;
procedure Insert
@ -2017,7 +2017,7 @@ package body Ada.Containers.Vectors is
Insert_Space (Container, Index, Count => Count);
Position := Cursor'(Container'Unchecked_Access, Index);
Position := (Container'Unchecked_Access, Index);
end Insert_Space;
--------------
@ -2093,7 +2093,7 @@ package body Ada.Containers.Vectors is
if Is_Empty (Object.Container.all) then
return No_Element;
else
return Cursor'(Object.Container, Object.Container.Last);
return (Object.Container, Object.Container.Last);
end if;
end Last;
@ -2406,7 +2406,7 @@ package body Ada.Containers.Vectors is
return Constant_Reference_Type
is
begin
if (Position) > Container.Last then
if Position > Container.Last then
raise Constraint_Error with "Index is out of range";
else
return (Element => Container.Elements.EA (Position)'Access);
@ -3009,7 +3009,7 @@ package body Ada.Containers.Vectors is
if Index not in Index_Type'First .. Container.Last then
return No_Element;
else
return Cursor'(Container'Unchecked_Access, Index);
return (Container'Unchecked_Access, Index);
end if;
end To_Cursor;

View File

@ -52,12 +52,12 @@ generic
package Ada.Containers.Unbounded_Priority_Queues is
pragma Preelaborate;
-- All identifiers in this unit are implementation defined
pragma Implementation_Defined;
package Implementation is
-- All identifiers in this unit are implementation defined
pragma Implementation_Defined;
type List_Type is tagged limited private;
procedure Enqueue

View File

@ -44,12 +44,12 @@ generic
package Ada.Containers.Unbounded_Synchronized_Queues is
pragma Preelaborate;
-- All identifiers in this unit are implementation defined
pragma Implementation_Defined;
package Implementation is
-- All identifiers in this unit are implementation defined
pragma Implementation_Defined;
type List_Type is tagged limited private;
procedure Enqueue

View File

@ -311,11 +311,11 @@ package body Exp_Ch6 is
Add_Extra_Actual_To_Call
(Function_Call, Alloc_Form_Formal, Alloc_Form_Actual);
-- Pass the Storage_Pool parameter. This parameter is omitted
-- Pass the Storage_Pool parameter. This parameter is omitted on
-- .NET/JVM/ZFP as those targets do not support pools.
if
VM_Target = No_VM and then RTE_Available (RE_Root_Storage_Pool_Ptr)
if VM_Target = No_VM
and then RTE_Available (RE_Root_Storage_Pool_Ptr)
then
Pool_Formal := Build_In_Place_Formal (Function_Id, BIP_Storage_Pool);
Analyze_And_Resolve (Pool_Actual, Etype (Pool_Formal));
@ -5246,8 +5246,8 @@ package body Exp_Ch6 is
-- pool parameter on .NET/JVM/ZFP because the parameter
-- is not created in the first place.
if VM_Target = No_VM and then
RTE_Available (RE_Root_Storage_Pool_Ptr)
if VM_Target = No_VM
and then RTE_Available (RE_Root_Storage_Pool_Ptr)
then
Pool_Decl :=
Make_Object_Renaming_Declaration (Loc,

View File

@ -17878,13 +17878,13 @@ Let's take a very simple example using the first @command{gnattest} example
located at
@smallexample
<install_prefix>/share/examples/gnattest/lib1
<install_prefix>/share/examples/gnattest/simple
@end smallexample
This project contains a simple package containing one subprogram. By running gnattest
@smallexample
$ gnattest --harness-dir=driver -Plib1.gpr
$ gnattest --harness-dir=driver -Psimple.gpr
@end smallexample
a test driver is created in dir "driver". It can be compiled and run:
@ -17896,18 +17896,18 @@ $ test_runner
@end smallexample
One failed test with diagnosis "test not implemented" is reported.
Since no special output option was specified the test package Lib1.Tests
Since no special output option was specified the test package Simple.Tests
is located in
@smallexample
<install_prefix>/share/examples/gnattest/lib1/src/tests
<install_prefix>/share/examples/gnattest/simple/src/tests
@end smallexample
For each package containing visible subprograms, a child test package is
generated. It contains one test routine per tested subprogram. Each
declaration of test subprogram has a comment specifying to which tested
subprogram it corresponds. All the test routines have separated bodies.
The test routine locates at lib1-tests-test_inc_5eaee3.adb has a single
The test routine locates at simple-tests-test_inc_5eaee3.adb has a single
statement - procedure Assert. It has two arguments: the boolean expression
which we want to check and the diagnosis message to display if the condition
is false.
@ -17945,11 +17945,11 @@ names and order of its parameters are the same, the old test routine will
fit in it's place and no test stub will be generated for this subprogram.
This can be demonstrated with the previous example. By uncommenting declaration
and body of function Dec in lib1.ads and lib1.adb, running
and body of function Dec in simple.ads and simple.adb, running
@command{gnattest} on the project and then running the test driver:
@smallexample
gnattest --harness-dir=driver -Plib1.gpr
gnattest --harness-dir=driver -Psimple.gpr
cd driver
gprbuild -Ptest_driver
test_runner
@ -18001,15 +18001,15 @@ are already written so no need to worry if the tool reports that 0 new stubs
were generated).
@smallexample
cd examples/lib2
gnattest --harness-dir=driver -Plib2.gpr
cd <install_prefix>/share/examples/gnattest/tagged_rec
gnattest --harness-dir=driver -Ptagged_rec.gpr
@end smallexample
Taking a closer look at the test type declared in the test package
Speed1.Controller_Tests is necessary. It is declared in
@smallexample
examples/lib2/src/tests
<install_prefix>/share/examples/gnattest/tagged_rec/src/tests
@end smallexample
Test types are direct or indirect descendants of
@ -18045,7 +18045,7 @@ shown by running the test driver generated for second example. As previously
mentioned, actual tests are already written for this example.
@smallexample
cd examples/lib2/driver
cd driver
gprbuild -Ptest_driver
test_runner
@end smallexample
@ -18084,7 +18084,7 @@ overridden parent tests against objects of the type which have overriding
primitives.
@smallexample
gnattest --harness-dir=driver --liskov -Plib2.gpr
gnattest --harness-dir=driver --liskov -Ptagged_rec.gpr
cd driver
gprbuild -Ptest_driver
test_runner
@ -18108,8 +18108,8 @@ either count for Nominal mode or do not for Robustness mode).
The third example demonstrates how it works:
@smallexample
cd examples/lib3
gnattest --harness-dir=driver -Plib3.gpr
cd <install_prefix>/share/examples/gnattest/contracts
gnattest --harness-dir=driver -Pcontracts.gpr
@end smallexample
Putting actual checks within the range of the contract does not cause any
@ -18144,10 +18144,37 @@ the same way.
@section Additional Tests
@noindent
@command{gnattest} can add already existing testing code to the driver along
with new stubs. This solves the legacy problem: no need to rewrite all the
tests. The only thing required is a project file that has all the desired
test units (and all their dependencies) as it's source files.
@command{gnattest} can add user written tests to the main suite of the test
driver. @command{gnattest} traverses given packages and searches for test
routines. All procedures with a single in out parameter of a type which is
a derivation of AUnit.Test_Fixtures.Test_Fixture declared in package
specifications are added to the suites and then are executed by test driver.
(Set_Up and Tear_Down are filtered out).
An example illustrates two ways of crating test harness for user written tests.
Directory additional contains a AUnit based test driver written by hand.
@smallexample
<install_prefix>/share/examples/gnattest/additional_tests/
@end smallexample
To create a test driver for already written tests use --harness-only option:
@smallexample
gnattest -Padditional/harness/harness.gpr --harness-dir=harness_only \
--harness-only
gnatmake -Pharness_only/test_driver.gpr
harness_only/test_runner
@end smallexample
Additional tests can also be executed together withgenerated tests:
@smallexample
gnattest -Psimple.gpr --additional-tests=additional/harness/harness.gpr \
--harness-dir=mixing
gnatmake -Pmixing/test_driver.gpr
mixing/test_runner
@end smallexample
@node Current Limitations
@section Current Limitations

View File

@ -152,18 +152,6 @@ const char *__gnat_object_library_extension = ".a";
unsigned char __gnat_separate_run_path_options = 0;
const char *__gnat_default_libgcc_subdir = "lib";
#elif defined (_AIX)
const char *__gnat_object_file_option = "-Wl,-f,";
const char *__gnat_run_path_option = "";
int __gnat_link_max = 15000;
const unsigned char __gnat_objlist_file_supported = 1;
char __gnat_shared_libgnat_default = STATIC;
char __gnat_shared_libgcc_default = STATIC;
unsigned char __gnat_using_gnu_linker = 0;
const char *__gnat_object_library_extension = ".a";
unsigned char __gnat_separate_run_path_options = 0;
const char *__gnat_default_libgcc_subdir = "lib";
#elif defined (__FreeBSD__)
const char *__gnat_object_file_option = "";
const char *__gnat_run_path_option = "-Wl,-rpath,";
@ -204,12 +192,27 @@ const char *__gnat_default_libgcc_subdir = "lib64";
const char *__gnat_default_libgcc_subdir = "lib";
#endif
#elif defined (_AIX)
/* On AIX, even when with GNU ld we use native linker switches. This is
particularly important for '-f' as it should be interpreted by collect2. */
const char *__gnat_object_file_option = "-Wl,-f,";
const char *__gnat_run_path_option = "";
char __gnat_shared_libgnat_default = STATIC;
char __gnat_shared_libgcc_default = STATIC;
int __gnat_link_max = 15000;
const unsigned char __gnat_objlist_file_supported = 1;
unsigned char __gnat_using_gnu_linker = 0;
const char *__gnat_object_library_extension = ".a";
unsigned char __gnat_separate_run_path_options = 0;
const char *__gnat_default_libgcc_subdir = "lib";
#elif (HAVE_GNU_LD)
/* These are the settings for all systems that use gnu ld. GNU style response
file is supported, the shared library default is STATIC. */
const char *__gnat_run_path_option = "";
const char *__gnat_object_file_option = "";
const char *__gnat_run_path_option = "";
char __gnat_shared_libgnat_default = STATIC;
char __gnat_shared_libgcc_default = STATIC;
int __gnat_link_max = 8192;

View File

@ -6490,8 +6490,8 @@ package body Sem_Ch6 is
-- use a user-defined pool. This formal is not added on
-- .NET/JVM/ZFP as those targets do not support pools.
if VM_Target = No_VM and then
RTE_Available (RE_Root_Storage_Pool_Ptr)
if VM_Target = No_VM
and then RTE_Available (RE_Root_Storage_Pool_Ptr)
then
Discard :=
Add_Extra_Formal