This error does not occur without the -fPIC option.
+===========================GNAT BUG DETECTED==============================+
| 3.4.2 (sparc-sun-solaris2.8) Constraint_Error SIGSEGV |
| Error detected at parm_tbl.ads:39:9 |
| Please submit a bug report; see http://gcc.gnu.org/bugs.html. |
| Include the entire contents of this bug box in the report. |
| Include the exact gcc or gnatmake command that you entered. |
| Also include sources listed below in gnatchop format |
| (concatenated together with no headers between files). |
+==========================================================================+
33 % gcc -c -I../source/ -fPIC ../source/parm_tbl.ads
36 % gcc -v
Reading specs from /data/local/bin/../lib/gcc/sparc-sun-solaris2.8/3.4.2/specs
Configured with: /data/buildgcc/gcc-3.4.2/configure --enable-languages=ada,c,c++
Thread model: posix
gcc version 3.4.2
with Global_Defs;
package Parm_Tbl is
CIDS : constant STRING := "$Id: parm_tbl.1.ada,v 1.3 04/21/2004 16:11:00 bill
Exp $";
PARAMETER_TABLE_SIZE : constant := 10_000;
subtype PARAMETER_TABLE_TYPE is
Global_Defs.WORD_ARRAY( 0 .. PARAMETER_TABLE_SIZE - 1 );
subtype PARAMETER_BYTES_TABLE_TYPE is
Global_Defs.BYTE_ARRAY( 0 .. PARAMETER_TABLE_TYPE'Last *
Global_Defs.BYTES_PER_WORD );
type FULL_PARAMETER_TABLE_TYPE is
record
Version : Global_Defs.WORD32;
Element : PARAMETER_TABLE_TYPE;
end record;
Full_Parameter_Table : FULL_PARAMETER_TABLE_TYPE;
Parameter_Table : PARAMETER_TABLE_TYPE;
for Parameter_Table'Address use Full_Parameter_Table.Element'Address;
Parameter_Byte_Table : PARAMETER_BYTES_TABLE_TYPE;
for Parameter_Byte_Table'Address use Parameter_Table'Address;
end Parm_Tbl;
with Interfaces;
with Ada.Numerics;
with System.Storage_Elements;
package Global_Defs is
Id : constant String :=
"$Id: global_defs.1.ada,v 1.6 11/17/2003 22:44:43 jeff Exp $";
--*****************************************************************
-- Type declarations
--*****************************************************************
-- Floating Point
subtype REAL32 is FLOAT;
subtype REAL is LONG_FLOAT;
-- Signed Integer
subtype INT16 is Interfaces.INTEGER_16;
subtype INT32 is Interfaces.INTEGER_32;
-- Unsigned Integer
BYTE_SIZE : constant := 8; -- in bits
WORD_SIZE : constant := 2 * BYTE_SIZE; -- in bits
WORD32_SIZE : constant := 4 * BYTE_SIZE; -- in bits
BYTES_PER_WORD32 : constant := WORD32_SIZE / BYTE_SIZE;
BYTES_PER_WORD : constant := WORD_SIZE / BYTE_SIZE;
WORDS_PER_WORD32 : constant := WORD32_SIZE / WORD_SIZE;
type BYTE is new Interfaces.UNSIGNED_8;
type WORD is new Interfaces.UNSIGNED_16;
type WORD32 is new Interfaces.UNSIGNED_32;
type BYTE_PTR is access BYTE;
type WORD_PTR is access WORD;
type WORD32_PTR is access WORD32;
type BYTE_ARRAY is array (NATURAL range <>) of BYTE;
pragma Pack (BYTE_ARRAY);
type WORD_ARRAY is array (NATURAL range <>) of WORD;
pragma Pack (WORD_ARRAY);
type WORD32_ARRAY is array (NATURAL range <>) of WORD32;
pragma Pack (WORD32_ARRAY);
-- Misc. enumeration types
type USABILITY_TYPE is (Good, Coarse, Bad);
for USABILITY_TYPE use (Good => 0, Coarse => 1, Bad => 2);
type STORAGE_BYTE_ARRAY is new System.Storage_Elements.STORAGE_ARRAY;
pragma Pack (STORAGE_BYTE_ARRAY);
type BIT32 is mod 2 ** 5;
type BIT32_ARRAY is array (BIT32'Range) of BOOLEAN;
pragma Pack (BIT32_ARRAY);
for BIT32_ARRAY'Size use WORD32_SIZE;
-- units
subtype RADIANS is REAL;
subtype RAD_CYCLE is REAL; -- radians/cycle
subtype RAD_CYCLE_RAD is REAL; -- radians/cycle/radian
subtype RAD_CYCLE_SQ is REAL; -- radians/cycle**2
subtype RAD_SEC is REAL; -- radians/second
subtype RAD_SEC_SQ is REAL; -- radians/second**2
subtype DEGREES is REAL;
subtype KGM_SQ is REAL; -- kilograms**2
subtype KILOMETERS is REAL;
subtype KM_SQ is REAL; -- kilometers**2
subtype KILOMETERS_PER_SECOND is REAL;
subtype KILOMETERS_PER_SECOND_SQ is REAL; -- km/sec**2
subtype METERS is REAL;
subtype NM is REAL; -- Newton x meters (measure of torque)
subtype NMS is REAL; -- Newtons x meters x seconds
subtype RPM is REAL; -- revolutions per minute
--*****************************************************************
--*****************************************************************
-- Constant definitions
--*****************************************************************
--*****************************************************************
PI : constant REAL := Ada.Numerics.PI;
TWO_PI : constant REAL := 2.0 * PI;
HALF_PI : constant REAL := PI / 2.0;
DEGREES_TO_RADIANS : constant REAL := PI / 180.0;
RADIANS_TO_DEGREES : constant REAL := 180.0 / PI;
METERS_TO_KM : constant REAL := 0.001;
KM_TO_METERS : constant REAL := 1000.0;
end Global_Defs;
--
Summary: GNAT -fPIC Bug
Product: gcc
Version: 3.4.2
Status: UNCONFIRMED
Severity: normal
Priority: P2
Component: ada
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: ddavenpo at ball dot com
CC: gcc-bugs at gcc dot gnu dot org
GCC build triplet: 3.4.2
GCC host triplet: sparc-sun-solaris2.8
GCC target triplet: sparc-sun-solaris2.8
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=19183