From: "Jeffrey R. Carter" <spam.jrcarter.not@spam.not.acm.org>
Subject: Re: gcc-7 breaks unsized C array bindings
Date: Sun, 27 Aug 2017 09:57:07 +0200
Date: 2017-08-27T09:57:07+02:00 [thread overview]
Message-ID: <onttof$u32$1@dont-email.me> (raw)
In-Reply-To: <d3d91481-51e4-4746-be5f-84f882d4b596@googlegroups.com>
On 08/27/2017 09:16 AM, Shark8 wrote:
> On Friday, August 25, 2017 at 2:03:08 AM UTC-6, ytomino wrote:
>>
>> Ada binding:
>>
>> unsized_C_array : array (Interfaces.C.size_t) of Interfaces.C.int
>> with Import, Convention => C, External_Name => "unsized_C_array";
>
> This creates an array of exactly 0..size_t'last elements -- where size_t'last is at least Integer'Pred(2**16) -- this is quite obviously /NOT/ what you want, and the source of your Storage_Error (as each unsized_C_array takes up so much space).
No, because of Import, it should expect the object to be created by something
else and should simply make this another name for it. If it is allocating space
for this object, then that should be a compiler error.
I've done more interfacing with C than I would like, but I've never encountered
this construct, so I've been reluctant to comment. A lot will depend on how the
construct is used in the Ada. Is it simply passed to C functions, or are
components actually accessed by indices?
--
Jeff Carter
"No one is to stone anyone until I blow this whistle,
do you understand? Even--and I want to make this
absolutely clear--even if they do say, 'Jehovah.'"
Monty Python's Life of Brian
74
next prev parent reply other threads:[~2017-08-27 7:57 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-08-25 8:03 gcc-7 breaks unsized C array bindings ytomino
2017-08-27 7:16 ` Shark8
2017-08-27 7:57 ` Jeffrey R. Carter [this message]
2017-08-30 21:27 ` 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