From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on polar.synack.me X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,FREEMAIL_FROM autolearn=ham autolearn_force=no version=3.4.4 X-Google-Language: ENGLISH,ASCII-7-bit X-Google-Thread: 103376,d842554064cfae31 X-Google-Attributes: gid103376,public X-Google-ArrivalTime: 2002-12-12 10:25:13 PST Path: archiver1.google.com!postnews1.google.com!not-for-mail From: prichtmyer@yahoo.com (Peter Richtmyer) Newsgroups: comp.lang.ada Subject: Re: Non byte-aligned components in GNAT rejected Date: 12 Dec 2002 10:25:13 -0800 Organization: http://groups.google.com/ Message-ID: <1b585154.0212121025.5956cad1@posting.google.com> References: <254c16a.0212111032.451cab61@posting.google.com> NNTP-Posting-Host: 164.223.72.6 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 8bit X-Trace: posting.google.com 1039717513 14720 127.0.0.1 (12 Dec 2002 18:25:13 GMT) X-Complaints-To: groups-abuse@google.com NNTP-Posting-Date: 12 Dec 2002 18:25:13 GMT Xref: archiver1.google.com comp.lang.ada:31756 Date: 2002-12-12T18:25:13+00:00 List-Id: mcq95@earthlink.net (Marc A. Criley) wrote in message news:<254c16a.0212111032.451cab61@posting.google.com>... > (This is one of those situations where I wish I had the scratch to be an ACT > supported customer.) > This is one of those (rare) situations where I am diappointed in Gnat. Rational had no problems with the package. > > GNAT 3.14p on W2K is rejecting one of my rep specs, stating that "large > component must be on byte boundary". > Using Gnat 3.15p I had the same error you did. I found a work-around that might be acceptable to you: package NBA is type VMF_Character is new Character range Character'Val(0) .. Character'Val(127); for VMF_Character'Size use 7; type Unit_Name_Type is array (1..64) of VMF_Character; for Unit_Name_Type'Component_Size use 7; for Unit_Name_Type'Size use 448; type un_t is -- new record -- new un : Unit_Name_Type; -- new end record; -- new -- for un_t'size use 448; -- bad results! type Unit_Group_Type is record B : Boolean; -- Unit_Name : Unit_Name_Type; -- deleted Unit_Name : un_t; -- new end record; for Unit_Group_Type use record B at 0 range 0 .. 0; Unit_Name at 0 range 1 .. 448; -- This is OK now end record; end NBA; As you can see, the Unit_Name is still one variable, using th same type definition, but is now a record within the record. One odd thing, if you compile with the line that has the "bad results!" comment, you will get the same old Gnat error! Seems like strange behavior to me. good luck, Peter