comp.lang.ada
 help / color / mirror / Atom feed
From: awdorrin <awdorrin@gmail.com>
Subject: Re: GNAT 4.4.5 Record Bit_Order Endian issues
Date: Thu, 17 Jan 2013 10:04:13 -0800 (PST)
Date: 2013-01-17T10:04:13-08:00	[thread overview]
Message-ID: <0169b2ea-30b4-45d1-a4d4-c5841e54b9ad@googlegroups.com> (raw)
In-Reply-To: <20bda3de-b033-4b4e-8298-2ac47701b814@googlegroups.com>

So, now on Debian 7 with GNAT 4.6.

Current record definition starts with:

  for MY_RECORD_TYPE'Bit_Order use System.High_Order_First;
  for MY_RECORD_TYPE use
    record
      TRACK_ID_X                  at   0 range  0 .. 11;
      TRACK_ID_USE_COUNTR_X       at   0 range 12 .. 17;
      NORMAL_RAW_DATA_X           at   0 range 18 .. 18;
      TRACK_STATUS_X              at   0 range 19 .. 21;
      DEAD_RECKONING_FLG_X        at   0 range 22 .. 22;
      TRACK_CONVERGENCE_X         at   0 range 23 .. 23;
      BLOCKED_TRACK_FLAG_X        at   0 range 24 .. 24;
      TRACK_INRFRNCE_ALRT_X       at   0 range 25 .. 25;
      MNUVRING_TARGET_FLG_X       at   0 range 26 .. 26;
      DESGNATED_TRACK_FLG_X       at   0 range 27 .. 27;
      SPAREA                      at   0 range 28 .. 31;
   end record;

Within my code, I have something like:
  MY_TRK_REC.TRACK_ID_X := 1;
  MY_TRK_REC.TRACK_ID_USE_COUNTR_X :=1;

Examining things through GDB:

"p MY_TRK_REC.TRACK_ID_X'Address" returns 0xb5cd0cd2
"p MY_TRK_REC.SPAREA'Address" returns 0xb5cd0cd0

The record elements are being laid out backwards in memory, despite the use System.High_Order_First directive.

Looking at the rep-spec output from my compile I get:

for MY_RECORD_TYPE use record
   TRACK_ID_X            at   2 range  4 .. 15;
   TRACK_ID_USE_COUNTR_X at   1 range  6 .. 11;
   NORMAL_RAW_DATA_X     at   1 range  5 ..  5;
   TRACK_STATUS_X        at   1 range  2 ..  4;
   DEAD_RECKONING_FLG_X  at   1 range  1 ..  1;
   TRACK_CONVERGENCE_X   at   1 range  0 ..  0;
   BLOCKED_TRACK_FLAG_X  at   0 range  7 ..  7;
   TRACK_INRFRNCE_ALRT_X at   0 range  6 ..  6;
   MNUVRING_TARGET_FLG_X at   0 range  5 ..  5;
   DESGNATED_TRACK_FLG_X at   0 range  4 ..  4;
   SPAREA                at   0 range  0 ..  3;

So, despite my earlier post today, I'm back to believing that the GNAT4.6 implementation is buggy. (or not documented clearly)





  parent reply	other threads:[~2013-01-17 18:04 UTC|newest]

Thread overview: 39+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-01-14 17:43 GNAT 4.4.5 Record Bit_Order Endian issues awdorrin
2013-01-15  0:38 ` Randy Brukardt
2013-01-15  1:57 ` Adam Beneschan
2013-01-15 16:57 ` AdaMagica
2013-01-15 22:24 ` Stephen Leake
2013-01-16 10:44   ` Simon Wright
2013-01-16 19:00     ` AdaMagica
2013-01-16 21:34       ` Simon Wright
2013-01-16 23:14     ` Randy Brukardt
2013-01-17  3:49     ` Stephen Leake
2013-01-17 15:32       ` awdorrin
2013-01-18  9:49         ` Stephen Leake
2013-01-18 13:04           ` Robert A Duff
2013-01-19  1:43             ` Stephen Leake
2013-01-19 12:48               ` AdaMagica
2013-01-22  0:14                 ` Randy Brukardt
2013-01-17 17:28       ` Simon Wright
2013-01-18  9:56         ` Stephen Leake
2013-01-17 18:04 ` awdorrin [this message]
2013-01-17 19:50   ` awdorrin
2013-01-18  9:58     ` Stephen Leake
2013-01-17 20:58   ` Simon Wright
2013-01-17 21:29     ` awdorrin
2013-01-17 22:16       ` awdorrin
2013-01-18  6:15         ` J-P. Rosen
2013-01-18 15:28           ` Niklas Holsti
2013-01-18  9:37         ` Stephen Leake
2013-01-18 12:24         ` awdorrin
2013-01-18 15:11           ` awdorrin
2013-01-19  1:48             ` Stephen Leake
2013-01-18 17:19           ` Simon Wright
2013-01-22  9:49           ` quinot
2013-01-28 13:39             ` quinot
  -- strict thread matches above, loose matches on Subject: below --
2013-01-22  3:21 Stephen Leake
2013-01-22  5:14 ` Jeffrey Carter
2013-01-23  1:29   ` Stephen Leake
2013-01-22 22:40 ` Randy Brukardt
2013-01-23  1:38   ` Stephen Leake
2013-01-23 10:58     ` Simon Wright
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox