comp.lang.ada
 help / color / mirror / Atom feed
From: Robert A Duff <bobduff@shell01.TheWorld.com>
Subject: Re: Interfacing to C: big structures
Date: Tue, 26 Feb 2008 20:28:48 -0500
Date: 2008-02-26T20:28:48-05:00	[thread overview]
Message-ID: <wcck5krjigf.fsf@shell01.TheWorld.com> (raw)
In-Reply-To: 62iskrF23lre0U1@mid.individual.net

"Alex R. Mosteo" <amosteo@unizar.es> writes:

> I see. So, for example, let's say there's this C function:
>
> void init (struct S *s) {...};
>
> and you pass the Ada array address to it.
>
> It may crash/ill-behave, if the C code takes for granted that the s
> pointer is, say, 8-aligned, and some C generated code within "init"
> depends on this assumption.
>
> It may be slow, otherwise, if no such assumption exists.

Right.  The crash vs. slow issue is defined by the hardware,
in practise.  x86 machines tolerate unaligned refs (slowly)
whereas RISC machines tend to trap on unaligned refs.

> I'm missing some other possibilities?

No, I don't think you're missing anything.

> And, finally, is adding an alignment clause enough to solve this issue?
> If so, how do you query the alignment of a C datatype?

I'm not a C expert, but I don't think there's any easy way.

> (Could a conservative approach be to force the Ada side type to be
> max-aligned for the architecture?)

Yes.  Probably "for S'Alignment use Long_Float'Alignment" will work OK
on most machines.  Is there a cleaner way to do that?

- Bob



  reply	other threads:[~2008-02-27  1:28 UTC|newest]

Thread overview: 27+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-02-25 21:17 Interfacing to C: big structures Maciej Sobczak
2008-02-25 23:26 ` Randy Brukardt
2008-02-25 23:26 ` Randy Brukardt
2008-02-27 13:23   ` Maciej Sobczak
2008-02-25 23:26 ` Randy Brukardt
2008-02-25 23:43 ` Robert A Duff
2008-02-26 13:53   ` Stephen Leake
2008-02-26 21:12     ` Randy Brukardt
2008-02-26  2:36 ` Steve
2008-02-26 12:00 ` Alex R. Mosteo
2008-02-26 14:05   ` Robert A Duff
2008-02-26 15:19     ` Alex R. Mosteo
2008-02-26 15:33       ` Robert A Duff
2008-02-26 16:21         ` Alex R. Mosteo
2008-02-27  1:28           ` Robert A Duff [this message]
2008-03-10  1:38             ` David Thompson
2008-02-26 17:35   ` Adam Beneschan
2008-02-26 19:47     ` Simon Wright
2008-02-26 21:14       ` Randy Brukardt
2008-02-27  1:40         ` Robert A Duff
2008-02-27 17:12       ` Adam Beneschan
2008-02-27 20:37         ` Simon Wright
2008-02-28 11:30         ` Alex R. Mosteo
2008-02-28 15:53           ` Robert A Duff
2008-02-29 10:45             ` Alex R. Mosteo
2008-02-27  1:37     ` Robert A Duff
2008-02-27 13:49       ` Maciej Sobczak
replies disabled

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