[multiple changes]
2014-07-17 Gary Dismukes <dismukes@adacore.com> * exp_disp.adb: Minor reformatting. * exp_disp.adb: Minor code reorganization. 2014-07-17 Thomas Quinot <quinot@adacore.com> * gnat_rm.texi, freeze.adb (Check_Component_Storage_Order): Do not require an explicit SSO attribute definition clause on a composite type just because one of its components has one. 2014-07-17 Robert Dewar <dewar@adacore.com> * sem_attr.adb (Analyze_Attribute, case Loop_Entry): Rewrite attribute out of existence if the enclosing pragma is ignored. * sem_util.adb: Minor reformatting. 2014-07-17 Ed Schonberg <schonberg@adacore.com> * exp_aggr.adb (Expand_Array_Aggregate): Handle properly an array aggregate expanded into assignments when it appears as a local declaration in an inlined body. 2014-07-17 Doug Rupp <rupp@adacore.com> * init.c [__ANDROID__]: Modify for ZCX. * exp_aggr.adb: Minor reformatting * sigtramp-armvxw.c, sigtramp-ppcvxw.c: Update comments. 2014-07-17 Robert Dewar <dewar@adacore.com> * a-strunb-shared.ads, a-stwiun-shared.ads, a-stzunb-shared.ads, exp_ch7.adb, g-pehage.ads, g-socket.ads, gnat_ugn.texi, gnat_ugx.texi, scng.adb: Remove incorrect usage "allow to" and "allows to". 2014-07-17 Robert Dewar <dewar@adacore.com> * exp_dist.adb: Minor reformatting. From-SVN: r212737
This commit is contained in:
parent
6ccdd97705
commit
6782b1ef34
|
@ -1,3 +1,42 @@
|
|||
2014-07-17 Gary Dismukes <dismukes@adacore.com>
|
||||
|
||||
* exp_disp.adb: Minor reformatting.
|
||||
* exp_disp.adb: Minor code reorganization.
|
||||
|
||||
2014-07-17 Thomas Quinot <quinot@adacore.com>
|
||||
|
||||
* gnat_rm.texi, freeze.adb (Check_Component_Storage_Order): Do not
|
||||
require an explicit SSO attribute definition clause on a composite type
|
||||
just because one of its components has one.
|
||||
|
||||
2014-07-17 Robert Dewar <dewar@adacore.com>
|
||||
|
||||
* sem_attr.adb (Analyze_Attribute, case Loop_Entry): Rewrite
|
||||
attribute out of existence if the enclosing pragma is ignored.
|
||||
* sem_util.adb: Minor reformatting.
|
||||
|
||||
2014-07-17 Ed Schonberg <schonberg@adacore.com>
|
||||
|
||||
* exp_aggr.adb (Expand_Array_Aggregate): Handle properly an
|
||||
array aggregate expanded into assignments when it appears as a
|
||||
local declaration in an inlined body.
|
||||
|
||||
2014-07-17 Doug Rupp <rupp@adacore.com>
|
||||
|
||||
* init.c [__ANDROID__]: Modify for ZCX.
|
||||
* exp_aggr.adb: Minor reformatting
|
||||
* sigtramp-armvxw.c, sigtramp-ppcvxw.c: Update comments.
|
||||
|
||||
2014-07-17 Robert Dewar <dewar@adacore.com>
|
||||
|
||||
* a-strunb-shared.ads, a-stwiun-shared.ads, a-stzunb-shared.ads,
|
||||
exp_ch7.adb, g-pehage.ads, g-socket.ads, gnat_ugn.texi, gnat_ugx.texi,
|
||||
scng.adb: Remove incorrect usage "allow to" and "allows to".
|
||||
|
||||
2014-07-17 Robert Dewar <dewar@adacore.com>
|
||||
|
||||
* exp_dist.adb: Minor reformatting.
|
||||
|
||||
2014-07-17 Bob Duff <duff@adacore.com>
|
||||
|
||||
* gnat_ugn.texi: Improve documentation of Unrestricted_Access.
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
-- --
|
||||
-- S p e c --
|
||||
-- --
|
||||
-- Copyright (C) 1992-2012, Free Software Foundation, Inc. --
|
||||
-- Copyright (C) 1992-2014, Free Software Foundation, Inc. --
|
||||
-- --
|
||||
-- This specification is derived from the Ada Reference Manual for use with --
|
||||
-- GNAT. The copyright notice above, and the license provisions that follow --
|
||||
|
@ -64,9 +64,9 @@
|
|||
-- preallocated memory can used later by Append/Insert operations
|
||||
-- without reallocation.
|
||||
|
||||
-- Reference counting uses GCC builtin atomic operations, which allows to
|
||||
-- safely share internal data between Ada tasks. Nevertheless, this doesn't
|
||||
-- make objects of Unbounded_String thread-safe: each instance can't be
|
||||
-- Reference counting uses GCC builtin atomic operations, which allows safe
|
||||
-- sharing of internal data between Ada tasks. Nevertheless, this does not
|
||||
-- make objects of Unbounded_String thread-safe: an instance cannot be
|
||||
-- accessed by several tasks simultaneously.
|
||||
|
||||
with Ada.Strings.Maps;
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
-- --
|
||||
-- S p e c --
|
||||
-- --
|
||||
-- Copyright (C) 1992-2012, Free Software Foundation, Inc. --
|
||||
-- Copyright (C) 1992-2014, Free Software Foundation, Inc. --
|
||||
-- --
|
||||
-- This specification is derived from the Ada Reference Manual for use with --
|
||||
-- GNAT. The copyright notice above, and the license provisions that follow --
|
||||
|
@ -471,10 +471,10 @@ private
|
|||
-- preallocated memory can used later by Append/Insert operations
|
||||
-- without reallocation.
|
||||
|
||||
-- Reference counting uses GCC builtin atomic operations, which allows to
|
||||
-- safely share internal data between Ada tasks. Nevertheless, this not
|
||||
-- make objects of Unbounded_Wide_String thread-safe, so each instance
|
||||
-- can't be accessed by several tasks simultaneously.
|
||||
-- Reference counting uses GCC builtin atomic operations, which allows safe
|
||||
-- sharing of internal data between Ada tasks. Nevertheless, this does not
|
||||
-- make objects of Unbounded_String thread-safe: an instance cannot be
|
||||
-- accessed by several tasks simultaneously.
|
||||
|
||||
pragma Stream_Convert (Unbounded_Wide_String, To_Unbounded, To_Wide_String);
|
||||
-- Provide stream routines without dragging in Ada.Streams
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
-- --
|
||||
-- S p e c --
|
||||
-- --
|
||||
-- Copyright (C) 1992-2013, Free Software Foundation, Inc. --
|
||||
-- Copyright (C) 1992-2014, Free Software Foundation, Inc. --
|
||||
-- --
|
||||
-- This specification is derived from the Ada Reference Manual for use with --
|
||||
-- GNAT. The copyright notice above, and the license provisions that follow --
|
||||
|
@ -485,10 +485,10 @@ private
|
|||
-- preallocated memory can used later by Append/Insert operations
|
||||
-- without reallocation.
|
||||
|
||||
-- Reference counting uses GCC builtin atomic operations, which allows to
|
||||
-- safely share internal data between Ada tasks. Nevertheless, this not
|
||||
-- make objects of Unbounded_Wide_Wide_String thread-safe, so each instance
|
||||
-- can't be accessed by several tasks simultaneously.
|
||||
-- Reference counting uses GCC builtin atomic operations, which allows safe
|
||||
-- sharing of internal data between Ada tasks. Nevertheless, this does not
|
||||
-- make objects of Unbounded_String thread-safe: an instance cannot be
|
||||
-- accessed by several tasks simultaneously.
|
||||
|
||||
pragma Stream_Convert
|
||||
(Unbounded_Wide_Wide_String, To_Unbounded, To_Wide_Wide_String);
|
||||
|
|
|
@ -5235,7 +5235,17 @@ package body Exp_Aggr is
|
|||
Scalar_Comp => Is_Scalar_Type (Ctyp));
|
||||
end;
|
||||
|
||||
if Comes_From_Source (Tmp) then
|
||||
-- If the aggregate is the expression in a declaration, the expanded
|
||||
-- code must be inserted after it. The defining entity might not come
|
||||
-- from source if this is part of an inlined body, but the declaration
|
||||
-- itself will.
|
||||
|
||||
if Comes_From_Source (Tmp)
|
||||
or else
|
||||
(Nkind (Parent (N)) = N_Object_Declaration
|
||||
and then Comes_From_Source (Parent (N))
|
||||
and then Tmp = Defining_Entity (Parent (N)))
|
||||
then
|
||||
declare
|
||||
Node_After : constant Node_Id := Next (Parent_Node);
|
||||
|
||||
|
|
|
@ -215,7 +215,7 @@ package body Exp_Ch7 is
|
|||
-- A classwide type can always potentially have controlled components
|
||||
-- but the record controller of the corresponding actual type may not
|
||||
-- be known at compile time so the dispatch table contains a special
|
||||
-- field that allows to compute the offset of the record controller
|
||||
-- field that allows computation of the offset of the record controller
|
||||
-- dynamically. See s-finimp.Deep_Tag_Attach and a-tags.RC_Offset.
|
||||
|
||||
-- Here is a simple example of the expansion of a controlled block :
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -1162,18 +1162,15 @@ package body Exp_Dist is
|
|||
|
||||
return
|
||||
Make_Procedure_Call_Statement (Loc,
|
||||
Name =>
|
||||
New_Occurrence_Of
|
||||
(RTE (RE_NVList_Add_Item), Loc),
|
||||
Name =>
|
||||
New_Occurrence_Of (RTE (RE_NVList_Add_Item), Loc),
|
||||
Parameter_Associations => New_List (
|
||||
New_Occurrence_Of (NVList, Loc),
|
||||
Make_Function_Call (Loc,
|
||||
Name =>
|
||||
New_Occurrence_Of
|
||||
(RTE (RE_To_PolyORB_String), Loc),
|
||||
Name =>
|
||||
New_Occurrence_Of (RTE (RE_To_PolyORB_String), Loc),
|
||||
Parameter_Associations => New_List (
|
||||
Make_String_Literal (Loc,
|
||||
Strval => Parameter_Name_String))),
|
||||
Make_String_Literal (Loc, Strval => Parameter_Name_String))),
|
||||
New_Occurrence_Of (Any, Loc),
|
||||
Parameter_Mode));
|
||||
end Add_Parameter_To_NVList;
|
||||
|
|
|
@ -1131,25 +1131,16 @@ package body Freeze is
|
|||
Attribute_Scalar_Storage_Order);
|
||||
Comp_ADC_Present := Present (Comp_ADC);
|
||||
|
||||
-- Case of enclosing type not having explicit SSO: component cannot
|
||||
-- have it either.
|
||||
-- Case of record or array component: check storage order compatibility
|
||||
|
||||
if No (ADC) then
|
||||
if Comp_ADC_Present then
|
||||
Error_Msg_N
|
||||
("composite type must have explicit scalar storage order",
|
||||
Err_Node);
|
||||
end if;
|
||||
|
||||
-- Case of enclosing type having explicit SSO: check compatible
|
||||
-- attribute on Comp_Type if composite.
|
||||
|
||||
elsif Is_Record_Type (Comp_Type) or else Is_Array_Type (Comp_Type) then
|
||||
if Is_Record_Type (Comp_Type) or else Is_Array_Type (Comp_Type) then
|
||||
Comp_SSO_Differs :=
|
||||
Reverse_Storage_Order (Encl_Type)
|
||||
/=
|
||||
Reverse_Storage_Order (Comp_Type);
|
||||
|
||||
-- Parent and extension must have same storage order
|
||||
|
||||
if Present (Comp) and then Chars (Comp) = Name_uParent then
|
||||
if Comp_SSO_Differs then
|
||||
Error_Msg_N
|
||||
|
@ -1157,10 +1148,16 @@ package body Freeze is
|
|||
& "parent", Err_Node);
|
||||
end if;
|
||||
|
||||
elsif No (Comp_ADC) then
|
||||
-- If enclosing composite has explicit SSO then nested composite must
|
||||
-- have explicit SSO as well.
|
||||
|
||||
elsif Present (ADC) and then No (Comp_ADC) then
|
||||
Error_Msg_N ("nested composite must have explicit scalar "
|
||||
& "storage order", Err_Node);
|
||||
|
||||
-- If component and composite SSO differs, check that component
|
||||
-- falls on byte boundaries and isn't packed.
|
||||
|
||||
elsif Comp_SSO_Differs then
|
||||
|
||||
-- Component SSO differs from enclosing composite:
|
||||
|
@ -1182,10 +1179,10 @@ package body Freeze is
|
|||
end if;
|
||||
end if;
|
||||
|
||||
-- Enclosing type has explicit SSO, non-composite component must not
|
||||
-- Enclosing type has explicit SSO: non-composite component must not
|
||||
-- be aliased.
|
||||
|
||||
elsif Component_Aliased then
|
||||
elsif Present (ADC) and then Component_Aliased then
|
||||
Error_Msg_N
|
||||
("aliased component not permitted for type with "
|
||||
& "explicit Scalar_Storage_Order", Err_Node);
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
-- --
|
||||
-- S p e c --
|
||||
-- --
|
||||
-- Copyright (C) 2002-2010, AdaCore --
|
||||
-- Copyright (C) 2002-2014, AdaCore --
|
||||
-- --
|
||||
-- GNAT is free software; you can redistribute it and/or modify it under --
|
||||
-- terms of the GNU General Public License as published by the Free Soft- --
|
||||
|
@ -121,8 +121,8 @@ package GNAT.Perfect_Hash_Generators is
|
|||
-- Raised after Tries unsuccessful runs
|
||||
|
||||
procedure Compute (Position : String := Default_Position);
|
||||
-- Compute the hash function. Position allows to define selection of
|
||||
-- character positions used in the word hash function. Positions can be
|
||||
-- Compute the hash function. Position allows the definition of selection
|
||||
-- of character positions used in the word hash function. Positions can be
|
||||
-- separated by commas and ranges like x-y may be used. Character '$'
|
||||
-- represents the final character of a word. With an empty position, the
|
||||
-- generator automatically produces positions to reduce the memory usage.
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
-- --
|
||||
-- S p e c --
|
||||
-- --
|
||||
-- Copyright (C) 2001-2013, AdaCore --
|
||||
-- Copyright (C) 2001-2014, AdaCore --
|
||||
-- --
|
||||
-- GNAT is free software; you can redistribute it and/or modify it under --
|
||||
-- terms of the GNU General Public License as published by the Free Soft- --
|
||||
|
@ -759,8 +759,8 @@ package GNAT.Sockets is
|
|||
end case;
|
||||
end record;
|
||||
|
||||
-- A request flag allows to specify the type of message transmissions or
|
||||
-- receptions. A request flag can be combination of zero or more
|
||||
-- A request flag allows specification of the type of message transmissions
|
||||
-- or receptions. A request flag can be combination of zero or more
|
||||
-- predefined request flags.
|
||||
|
||||
type Request_Flag_Type is private;
|
||||
|
@ -904,7 +904,7 @@ package GNAT.Sockets is
|
|||
-- Item'First - 1 when the socket has been closed by peer. This is not
|
||||
-- an error, and no exception is raised in this case unless Item'First
|
||||
-- is Stream_Element_Offset'First, in which case Constraint_Error is
|
||||
-- raised. Flags allows to control the reception. Raise Socket_Error on
|
||||
-- raised. Flags allows control of the reception. Raise Socket_Error on
|
||||
-- error.
|
||||
|
||||
procedure Receive_Socket
|
||||
|
@ -916,7 +916,7 @@ package GNAT.Sockets is
|
|||
-- Receive message from Socket. If Socket is not connection-oriented, the
|
||||
-- source address From of the message is filled in. Last is the index
|
||||
-- value such that Item (Last) is the last character assigned. Flags
|
||||
-- allows to control the reception. Raises Socket_Error on error.
|
||||
-- allows control of the reception. Raises Socket_Error on error.
|
||||
|
||||
procedure Receive_Vector
|
||||
(Socket : Socket_Type;
|
||||
|
@ -958,7 +958,7 @@ package GNAT.Sockets is
|
|||
Last : out Ada.Streams.Stream_Element_Offset;
|
||||
Flags : Request_Flag_Type := No_Request_Flag);
|
||||
-- Transmit a message over a socket. Upon return, Last is set to the index
|
||||
-- within Item of the last element transmitted. Flags allows to control
|
||||
-- within Item of the last element transmitted. Flags allows control of
|
||||
-- the transmission. Raises Socket_Error on any detected error condition.
|
||||
|
||||
procedure Send_Socket
|
||||
|
@ -968,7 +968,7 @@ package GNAT.Sockets is
|
|||
To : Sock_Addr_Type;
|
||||
Flags : Request_Flag_Type := No_Request_Flag);
|
||||
-- Transmit a message over a datagram socket. The destination address is
|
||||
-- To. Flags allows to control the transmission. Raises Socket_Error on
|
||||
-- To. Flags allows control of the transmission. Raises Socket_Error on
|
||||
-- error.
|
||||
|
||||
procedure Send_Vector
|
||||
|
@ -1027,8 +1027,8 @@ package GNAT.Sockets is
|
|||
-- subprogram when the stream is not needed anymore.
|
||||
|
||||
type Socket_Set_Type is limited private;
|
||||
-- This type allows to manipulate sets of sockets. It allows to wait for
|
||||
-- events on multiple endpoints at one time. This type has default
|
||||
-- This type allows manipulation of sets of sockets. It allows waiting
|
||||
-- for events on multiple endpoints at one time. This type has default
|
||||
-- initialization, and the default value is the empty set.
|
||||
--
|
||||
-- Note: This type used to contain a pointer to dynamically allocated
|
||||
|
@ -1072,8 +1072,8 @@ package GNAT.Sockets is
|
|||
-- Check_Selector provides the very same behaviour. The only difference is
|
||||
-- that it does not watch for exception events. Note that on some platforms
|
||||
-- it is kept process blocking on purpose. The timeout parameter allows the
|
||||
-- user to have the behaviour he wants. Abort_Selector allows to safely
|
||||
-- abort a blocked Check_Selector call. A special socket is opened by
|
||||
-- user to have the behaviour he wants. Abort_Selector allows the safe
|
||||
-- abort of a blocked Check_Selector call. A special socket is opened by
|
||||
-- Create_Selector and included in each call to Check_Selector.
|
||||
--
|
||||
-- Abort_Selector causes an event to occur on this descriptor in order to
|
||||
|
|
|
@ -9303,9 +9303,8 @@ that make up scalar components are ordered within S:
|
|||
-- the former is used.
|
||||
@end smallexample
|
||||
|
||||
Other properties are
|
||||
as for standard representation attribute @code{Bit_Order}, as defined by
|
||||
Ada RM 13.5.3(4). The default is @code{System.Default_Bit_Order}.
|
||||
Other properties are as for standard representation attribute @code{Bit_Order},
|
||||
as defined by Ada RM 13.5.3(4). The default is @code{System.Default_Bit_Order}.
|
||||
|
||||
For a record type @var{S}, if @code{@var{S}'Scalar_Storage_Order} is
|
||||
specified explicitly, it shall be equal to @code{@var{S}'Bit_Order}. Note:
|
||||
|
@ -9316,18 +9315,15 @@ specified explicitly and set to the same value.
|
|||
For a record extension, the derived type shall have the same scalar storage
|
||||
order as the parent type.
|
||||
|
||||
If a component of @var{S} has itself a record or array type, then it shall also
|
||||
have a @code{Scalar_Storage_Order} attribute definition clause. In addition,
|
||||
if the component is a packed array, or does not start on a byte boundary, then
|
||||
the scalar storage order specified for S and for the nested component type shall
|
||||
be identical.
|
||||
If a component of @var{S} is of a record or array type, then that type shall
|
||||
also have a @code{Scalar_Storage_Order} attribute definition clause.
|
||||
|
||||
If @var{S} appears as the type of a record or array component, the enclosing
|
||||
record or array shall also have a @code{Scalar_Storage_Order} attribute
|
||||
definition clause.
|
||||
A component of a record or array type that is a packed array, or that
|
||||
does not start on a byte boundary, must have the same scalar storage order
|
||||
as the enclosing record or array type.
|
||||
|
||||
No component of a type that has a @code{Scalar_Storage_Order} attribute
|
||||
definition may be aliased.
|
||||
No component of a type that has an explicit @code{Scalar_Storage_Order}
|
||||
attribute definition may be aliased.
|
||||
|
||||
A confirming @code{Scalar_Storage_Order} attribute definition clause (i.e.
|
||||
with a value equal to @code{System.Default_Bit_Order}) has no effect.
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
|
||||
\input texinfo @c -*-texinfo-*-
|
||||
@c %**start of header
|
||||
|
||||
|
@ -18765,11 +18766,11 @@ leak.
|
|||
|
||||
@noindent
|
||||
@code{gnatmem} makes use of the output created by the special version of
|
||||
allocation and deallocation routines that record call information. This
|
||||
allows to obtain accurate dynamic memory usage history at a minimal cost to
|
||||
the execution speed. Note however, that @code{gnatmem} is not supported on
|
||||
all platforms (currently, it is supported on AIX, HP-UX, GNU/Linux,
|
||||
Solaris and Windows NT/2000/XP (x86).
|
||||
allocation and deallocation routines that record call information. This allows
|
||||
it to obtain accurate dynamic memory usage history at a minimal cost to the
|
||||
execution speed. Note however, that @code{gnatmem} is not supported on all
|
||||
platforms (currently, it is supported on AIX, HP-UX, GNU/Linux, Solaris and
|
||||
Windows NT/2000/XP (x86).
|
||||
|
||||
@noindent
|
||||
The @code{gnatmem} command has the form
|
||||
|
@ -18894,8 +18895,8 @@ Do the @code{gnatmem} processing starting from @file{file}, rather than
|
|||
@item -m n
|
||||
@cindex @option{-m} (@code{gnatmem})
|
||||
This switch causes @code{gnatmem} to mask the allocation roots that have less
|
||||
than n leaks. The default value is 1. Specifying the value of 0 will allow to
|
||||
examine even the roots that didn't result in leaks.
|
||||
than n leaks. The default value is 1. Specifying the value of 0 will allow
|
||||
examination of even the roots that did not result in leaks.
|
||||
|
||||
@item -s order
|
||||
@cindex @option{-s} (@code{gnatmem})
|
||||
|
@ -21636,9 +21637,9 @@ breakpoint condition (before the @code{if}).
|
|||
@item task @var{taskno}
|
||||
@cindex Task switching
|
||||
|
||||
This command allows to switch to the task referred by @var{taskno}. In
|
||||
particular, This allows to browse the backtrace of the specified
|
||||
task. It is advised to switch back to the original task before
|
||||
This command allows switching to the task referred by @var{taskno}. In
|
||||
particular, this allows browsing of the backtrace of the specified
|
||||
task. It is advisable to switch back to the original task before
|
||||
continuing execution otherwise the scheduling of the program may be
|
||||
perturbed.
|
||||
@end table
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
* *
|
||||
* C Implementation File *
|
||||
* *
|
||||
* Copyright (C) 1992-2013, Free Software Foundation, Inc. *
|
||||
* Copyright (C) 1992-2014, Free Software Foundation, Inc. *
|
||||
* *
|
||||
* GNAT is free software; you can redistribute it and/or modify it under *
|
||||
* terms of the GNU General Public License as published by the Free Soft- *
|
||||
|
@ -1922,7 +1922,7 @@ __gnat_error_handler (int sig, siginfo_t *si, void *sc)
|
|||
#include "sigtramp.h"
|
||||
|
||||
__gnat_sigtramp (sig, (void *)si, (void *)sc,
|
||||
(sighandler_t *)&__gnat_map_signal);
|
||||
(__sigtramphandler_t *)&__gnat_map_signal);
|
||||
|
||||
#else
|
||||
__gnat_map_signal (sig, si, sc);
|
||||
|
@ -2372,12 +2372,23 @@ __gnat_install_handler (void)
|
|||
/*******************/
|
||||
|
||||
#include <signal.h>
|
||||
#include <stdlib.h>
|
||||
#include "sigtramp.h"
|
||||
|
||||
#define HAVE_GNAT_ADJUST_CONTEXT_FOR_RAISE
|
||||
|
||||
void
|
||||
__gnat_adjust_context_for_raise (int signo ATTRIBUTE_UNUSED, void *ucontext)
|
||||
{
|
||||
mcontext_t *mcontext = &((ucontext_t *) ucontext)->uc_mcontext;
|
||||
|
||||
/* ARM Bump has to be an even number because of odd/even architecture. */
|
||||
((mcontext_t *) mcontext)->arm_pc += 2;
|
||||
}
|
||||
|
||||
static void
|
||||
__gnat_error_handler (int sig,
|
||||
siginfo_t *si ATTRIBUTE_UNUSED,
|
||||
void *ucontext ATTRIBUTE_UNUSED)
|
||||
__gnat_map_signal (int sig,
|
||||
siginfo_t *si ATTRIBUTE_UNUSED,
|
||||
void *ucontext ATTRIBUTE_UNUSED)
|
||||
{
|
||||
struct Exception_Data *exception;
|
||||
const char *msg;
|
||||
|
@ -2407,6 +2418,17 @@ __gnat_error_handler (int sig,
|
|||
Raise_From_Signal_Handler (exception, msg);
|
||||
}
|
||||
|
||||
static void
|
||||
__gnat_error_handler (int sig,
|
||||
siginfo_t *si ATTRIBUTE_UNUSED,
|
||||
void *ucontext ATTRIBUTE_UNUSED)
|
||||
{
|
||||
__gnat_adjust_context_for_raise (sig, ucontext);
|
||||
|
||||
__gnat_sigtramp (sig, (void *) si, (void *) ucontext,
|
||||
(__sigtramphandler_t *)&__gnat_map_signal);
|
||||
}
|
||||
|
||||
/* This must be in keeping with System.OS_Interface.Alternate_Stack_Size. */
|
||||
char __gnat_alternate_stack[16 * 1024];
|
||||
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
-- --
|
||||
-- B o d y --
|
||||
-- --
|
||||
-- Copyright (C) 1992-2013, Free Software Foundation, Inc. --
|
||||
-- Copyright (C) 1992-2014, Free Software Foundation, Inc. --
|
||||
-- --
|
||||
-- GNAT is free software; you can redistribute it and/or modify it under --
|
||||
-- terms of the GNU General Public License as published by the Free Soft- --
|
||||
|
@ -67,7 +67,7 @@ package body Scng is
|
|||
procedure Accumulate_Token_Checksum;
|
||||
pragma Inline (Accumulate_Token_Checksum);
|
||||
-- Called after each numeric literal and identifier/keyword. For keywords,
|
||||
-- the token used is Tok_Identifier. This allows to detect additional
|
||||
-- the token used is Tok_Identifier. This allows detection of additional
|
||||
-- spaces added in sources when using the builder switch -m.
|
||||
|
||||
procedure Accumulate_Token_Checksum_GNAT_6_3;
|
||||
|
|
|
@ -3904,10 +3904,10 @@ package body Sem_Attr is
|
|||
Context : constant Node_Id := Parent (N);
|
||||
Attr : Node_Id;
|
||||
Enclosing_Loop : Node_Id;
|
||||
In_Loop_Assertion : Boolean := False;
|
||||
Loop_Id : Entity_Id := Empty;
|
||||
Scop : Entity_Id;
|
||||
Stmt : Node_Id;
|
||||
Enclosing_Pragma : Node_Id := Empty;
|
||||
|
||||
-- Start of processing for Loop_Entry
|
||||
|
||||
|
@ -4025,7 +4025,7 @@ package body Sem_Attr is
|
|||
Name_Assert_And_Cut,
|
||||
Name_Assume)
|
||||
then
|
||||
In_Loop_Assertion := True;
|
||||
Enclosing_Pragma := Original_Node (Stmt);
|
||||
|
||||
-- Locate the enclosing loop (if any). Note that Ada 2012 array
|
||||
-- iteration may be expanded into several nested loops, we are
|
||||
|
@ -4060,12 +4060,11 @@ package body Sem_Attr is
|
|||
-- purpose if they appear in an appropriate location in a loop,
|
||||
-- which was already checked by the top level pragma circuit).
|
||||
|
||||
if not In_Loop_Assertion then
|
||||
Error_Attr
|
||||
("attribute % must appear within appropriate pragma", N);
|
||||
if No (Enclosing_Pragma) then
|
||||
Error_Attr ("attribute% must appear within appropriate pragma", N);
|
||||
end if;
|
||||
|
||||
-- A Loop_Entry that applies to a given loop statement shall not
|
||||
-- A Loop_Entry that applies to a given loop statement must not
|
||||
-- appear within a body of accept statement, if this construct is
|
||||
-- itself enclosed by the given loop statement.
|
||||
|
||||
|
@ -4074,10 +4073,8 @@ package body Sem_Attr is
|
|||
|
||||
if Ekind (Scop) = E_Loop and then Scop = Loop_Id then
|
||||
exit;
|
||||
|
||||
elsif Ekind_In (Scop, E_Block, E_Loop, E_Return_Statement) then
|
||||
null;
|
||||
|
||||
else
|
||||
Error_Attr
|
||||
("attribute % cannot appear in body or accept statement", N);
|
||||
|
@ -4101,14 +4098,28 @@ package body Sem_Attr is
|
|||
null;
|
||||
|
||||
elsif Present (Enclosing_Loop)
|
||||
and then Entity (Identifier (Enclosing_Loop)) /= Loop_Id
|
||||
and then Entity (Identifier (Enclosing_Loop)) /= Loop_Id
|
||||
then
|
||||
Error_Attr_P ("prefix of attribute % that applies to "
|
||||
& "outer loop must denote an entity");
|
||||
Error_Attr_P
|
||||
("prefix of attribute % that applies to "
|
||||
& "outer loop must denote an entity");
|
||||
|
||||
elsif Is_Potentially_Unevaluated (P) then
|
||||
Error_Attr_P ("prefix of attribute % that is potentially "
|
||||
& "unevaluated must denote an entity");
|
||||
Error_Attr_P
|
||||
("prefix of attribute % that is potentially "
|
||||
& "unevaluated must denote an entity");
|
||||
end if;
|
||||
|
||||
-- Finally, if the Loop_Entry attribute appears within a pragma
|
||||
-- that is ignored, we replace P'Loop_Entity by P to avoid useless
|
||||
-- generation of the loop entity variable. Note that in this case
|
||||
-- the expression won't be executed anyway, and this substitution
|
||||
-- keeps types happy!
|
||||
|
||||
-- We should really do this in the expander, but it's easier here
|
||||
|
||||
if Is_Ignored (Enclosing_Pragma) then
|
||||
Rewrite (N, Relocate_Node (P));
|
||||
end if;
|
||||
end Loop_Entry;
|
||||
|
||||
|
|
|
@ -14669,6 +14669,7 @@ package body Sem_Util is
|
|||
|
||||
return Name;
|
||||
end Original_Aspect_Name;
|
||||
|
||||
--------------------------------------
|
||||
-- Original_Corresponding_Operation --
|
||||
--------------------------------------
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
* *
|
||||
* Asm Implementation File *
|
||||
* *
|
||||
* Copyright (C) 2013, Free Software Foundation, Inc. *
|
||||
* Copyright (C) 2014, Free Software Foundation, Inc. *
|
||||
* *
|
||||
* GNAT is free software; you can redistribute it and/or modify it under *
|
||||
* terms of the GNU General Public License as published by the Free Soft- *
|
||||
|
@ -49,7 +49,7 @@
|
|||
sequences. The general idea is to establish CFA as sigcontext->sc_pregs
|
||||
and state where to find the registers as offsets from there.
|
||||
|
||||
As of today, we support a single stub, providing CFI info for common
|
||||
As of today, we support a stub providing CFI info for common
|
||||
registers (GPRs, LR, ...). We might need variants with support for floating
|
||||
point or altivec registers as well at some point.
|
||||
|
||||
|
@ -75,7 +75,7 @@
|
|||
|
||||
extern void __gnat_sigtramp_common
|
||||
(int signo, void *siginfo, void *sigcontext,
|
||||
sighandler_t * handler, void * sc_pregs);
|
||||
__sigtramphandler_t * handler, void * sc_pregs);
|
||||
|
||||
|
||||
/* -------------------------------------
|
||||
|
@ -85,11 +85,11 @@ extern void __gnat_sigtramp_common
|
|||
We enforce optimization to minimize the overhead of the extra layer. */
|
||||
|
||||
void __gnat_sigtramp (int signo, void *si, void *sc,
|
||||
sighandler_t * handler)
|
||||
__sigtramphandler_t * handler)
|
||||
__attribute__((optimize(2)));
|
||||
|
||||
void __gnat_sigtramp (int signo, void *si, void *sc,
|
||||
sighandler_t * handler)
|
||||
__sigtramphandler_t * handler)
|
||||
{
|
||||
struct sigcontext * sctx = (struct sigcontext *) sc;
|
||||
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
* *
|
||||
* Asm Implementation File *
|
||||
* *
|
||||
* Copyright (C) 2011-2013, Free Software Foundation, Inc. *
|
||||
* Copyright (C) 2011-2014, Free Software Foundation, Inc. *
|
||||
* *
|
||||
* GNAT is free software; you can redistribute it and/or modify it under *
|
||||
* terms of the GNU General Public License as published by the Free Soft- *
|
||||
|
@ -49,7 +49,7 @@
|
|||
sequences. The general idea is to establish CFA as sigcontext->sc_pregs
|
||||
and state where to find the registers as offsets from there.
|
||||
|
||||
As of today, we support a single stub, providing CFI info for common
|
||||
As of today, we support a stub providing CFI info for common
|
||||
registers (GPRs, LR, ...). We might need variants with support for floating
|
||||
point or altivec registers as well at some point.
|
||||
|
||||
|
@ -75,7 +75,7 @@
|
|||
|
||||
extern void __gnat_sigtramp_common
|
||||
(int signo, void *siginfo, void *sigcontext,
|
||||
sighandler_t * handler, void * sc_pregs);
|
||||
__sigtramphandler_t * handler, void * sc_pregs);
|
||||
|
||||
|
||||
/* -------------------------------------
|
||||
|
@ -85,11 +85,11 @@ extern void __gnat_sigtramp_common
|
|||
We enforce optimization to minimize the overhead of the extra layer. */
|
||||
|
||||
void __gnat_sigtramp (int signo, void *si, void *sc,
|
||||
sighandler_t * handler)
|
||||
__sigtramphandler_t * handler)
|
||||
__attribute__((optimize(2)));
|
||||
|
||||
void __gnat_sigtramp (int signo, void *si, void *sc,
|
||||
sighandler_t * handler)
|
||||
__sigtramphandler_t * handler)
|
||||
{
|
||||
struct sigcontext * sctx = (struct sigcontext *) sc;
|
||||
|
||||
|
|
Loading…
Reference in New Issue