Commit 84c4181d by Arnaud Charlet

[multiple changes]

2012-02-22  Ed Schonberg  <schonberg@adacore.com>

	* freeze.adb (Freeze_Entity): Do not perform type layout within
	a generic unit.

2012-02-22  Eric Botcazou  <ebotcazou@adacore.com>

	* init.c (__gnat_error_handler) [Linux]: Map SIGBUS to
	Storage_Error.

2012-02-22  Ed Schonberg  <schonberg@adacore.com>

	* exp_ch5.adb (Expand_N_Assignment_Statement): Reject an
	assignment to a classwide type whose type is limited, as
	can happen in an instantiation in programs that run afoul or
	AI05-0087.

From-SVN: r184471
parent bbd6a014
2012-02-22 Ed Schonberg <schonberg@adacore.com>
* freeze.adb (Freeze_Entity): Do not perform type layout within
a generic unit.
2012-02-22 Eric Botcazou <ebotcazou@adacore.com>
* init.c (__gnat_error_handler) [Linux]: Map SIGBUS to
Storage_Error.
2012-02-22 Ed Schonberg <schonberg@adacore.com>
* exp_ch5.adb (Expand_N_Assignment_Statement): Reject an
assignment to a classwide type whose type is limited, as
can happen in an instantiation in programs that run afoul or
AI05-0087.
2012-02-17 Ed Schonberg <schonberg@adacore.com>
* exp_ch6.adb (Legal_Copy): If layout is not
......
......@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
-- Copyright (C) 1992-2011, Free Software Foundation, Inc. --
-- Copyright (C) 1992-2012, 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- --
......@@ -28,6 +28,7 @@ with Atree; use Atree;
with Checks; use Checks;
with Debug; use Debug;
with Einfo; use Einfo;
with Errout; use Errout;
with Exp_Aggr; use Exp_Aggr;
with Exp_Ch6; use Exp_Ch6;
with Exp_Ch7; use Exp_Ch7;
......@@ -2086,6 +2087,18 @@ package body Exp_Ch5 is
and then
not Restriction_Active (No_Dispatching_Calls))
then
if Is_Limited_Type (Typ) then
-- This can happen in an instance when the formal is an
-- extension of a limited interface, and the actual is
-- limited. This is an error according to AI05-0087, but
-- is not caught at the point of instantiation in earlier
-- versions.
Error_Msg_N ("assignment not available on limited type", N);
return;
end if;
-- Fetch the primitive op _assign and proper type to call it.
-- Because of possible conflicts between private and full view,
-- fetch the proper type directly from the operation profile.
......
......@@ -4407,10 +4407,12 @@ package body Freeze is
-- the size and alignment values. This processing is not required for
-- generic types, since generic types do not play any part in code
-- generation, and so the size and alignment values for such types
-- are irrelevant.
-- are irrelevant. Ditto for types declared within a generic unit,
-- which may have components that depend on generic parameters, and
-- that will be recreated in an instance.
if Is_Generic_Type (E) then
return Result;
if Inside_A_Generic then
null;
-- Otherwise we call the layout procedure
......
......@@ -6,7 +6,7 @@
* *
* C Implementation File *
* *
* Copyright (C) 1992-2011, Free Software Foundation, Inc. *
* Copyright (C) 1992-2012, 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- *
......@@ -661,8 +661,8 @@ __gnat_error_handler (int sig, siginfo_t *si ATTRIBUTE_UNUSED, void *ucontext)
break;
case SIGBUS:
exception = &constraint_error;
msg = "SIGBUS";
exception = &storage_error;
msg = "SIGBUS: possible stack overflow";
break;
case SIGFPE:
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment