- Ada 2012
- Ada 2005 / 95 / 83
- Embedded Development
- Formal Methods
- Open Source
- Safety-Critical Development
- Static Analysis
Apr 30th, 2004
New restriction Simple_Barriers
This restriction forbids the use of Boolean expressions in entry barriers other than static Boolean expressions or a Boolean component of the enclosing protected object. This supersedes the restriction Boolean_Entry_Barriers. The new form is the one intended to be standardized in the new revision of Ada. The form Boolean_Entry_Barriers is retained as a synonym for back compatibility with older versions of GNAT.
AI-305 Simple_Barriers restriction
This restriction forbids entry barrier condition expressions other than boolean objects declared in the protected type which contains the entry.
Apr 28th, 2004
Tasking support debugging Tru64 core file
The debugger has been enhanced to provide better tasking support on Tru64 when inspecting a core file. The debugger is now able to print the list of tasks, and to switch from task to task. To take advantage of this feature, the core file must have been opened using read-write access, which is achieved by using the following command: "set write on". Beware that this will allow the debugger to write inside the core file, and therefore potentially change its contents. It is therefore recommended that the core file be backed up before being opened by the debugger.
Apr 27th, 2004
New warning for null pointer dereference
Some new cases where a potentially null pointer is dereferenced are now detected and reported.
Apr 26th, 2004
Optimization of local indirect calls
If a value of a remote access-to-subprogram type designates a subprogram on the local partition, and pragma All_Calls_Remote does not apply to the enclosing library unit, dereferences of that value are now optimized as local calls instead of going through the Partition Communication System.
Apr 25th, 2004
New restriction No_Dynamic_Attachment
This restriction ensures that there is no call to any of the operations defined in package Ada.Interrupts. This supersedes the older restriction No_Dynamic_Interrupts. The new form is the form intended to be standardized in the new revision of Ada. The form No_Dynamic_Interrupts previously implemented in GNAT is retained as a synonym for back compatibility.
This restriction ensures that there is no call to any of the operations defined in package Ada.Interrupts. This is the same as No_Dynamic_Interrupts, which is retained but considered obsolescent.
Better debugging for reference variables
The value of a given variable is sometimes stored via a reference. When asking the debugger to print the value of such variables, the debugger has been enhanced to print the actual value without prepending its type and address. If necessary, the type information is available via the "ptype" command, while the address of the variable can be obtained by using the "'Address" attribute.
GNAAMP checks size of local environment
On the AAMP target only, the compiler now checks that the local data size of a subprogram does not exceed the maximum allowed size of 32767 words.
AI-254 Anonymous access to subprogram types
Anonymous access to subprogram types increase flexibility of manipulating an access to a subprogram and in particular allow an access to a subprogram at any level to be passed as an actual parameter to a protected or non-protected subprogram
Apr 20th, 2004
New parameter format for pragma Eliminate
Homonym_Number is removed, because it does not ensure the correct homonym elimination. Instead, the new Source_Location parameter is added. The gnatelim tool automatically generates pragmas with this new parameter.
Apr 17th, 2004
New gnatmake switch -eL (follow links)
By default, the Program Manager, when looking for source files will not check if a file is a symbolic link. In some circumstances, the same source file may be accessed via more than one path name, some of them being symbolic links, and this may lead to errors. A new gnatmake switch -eL instructs the Project Manager to check and follow all symbolic links, to avoid such errors.
Apr 16th, 2004
Better error msg for illegal indirect call
If a call to a dereference of an access-to-subprogram value is made with actual parameters of the wrong type, the error message now indicates the name of the access-to-subprogram type if the -gnatf (full error messages) flag is in effect.
Apr 10th, 2004
Restrictions displayed by gnatls -v
When gnatls is invoked in verbose mode (with -v), the restrictions are displayed for sources that are compiled with pragma Restrictions, with their values for those restrictions that have values.
Lower bounds of 1 from Current_Exception
The functions in GNAT.Current_Exception always return a lower bound of one for returned strings. Previously the lower bound from Exception_Name could be greater than 1.
Better error msg for comma between with/use
If a comma is used instead of a semicolon between WITH and USE clauses, a clear error message is now given instead of a missing identifier message.
Improved warnings on constant pointers
Some new cases where a pointer is declared without the 'constant' keyword but never modified are now detected, and trigger a warning when -gnatwk (warn on constant variables) is in effect.
Pass -mxxx and -fxxx switches to gnatlink
When gnatmake is invoked with -mxxx (e.g., -m64) or -fxxx (e.g., -ftest-coverage), these switches are passed not only to the compiler, but also to gnatlink, because compiling the binder generated files with these GCC switches may be necessary.