comp.lang.ada
 help / color / mirror / Atom feed
From: Georg Bauhaus <rm-host.bauhaus@maps.futureapps.de>
Subject: Re: How do I disable elaboration code on this
Date: Sun, 10 Apr 2011 22:47:42 +0200
Date: 2011-04-10T22:47:43+02:00	[thread overview]
Message-ID: <4da2176e$0$6977$9b4e6d93@newsspool4.arcor-online.net> (raw)
In-Reply-To: <a439f669-3936-4c1c-8e76-2bb3bb63fce7@y31g2000vbp.googlegroups.com>

On 4/10/11 7:20 PM, Lucretia wrote:
>> I think what you need here is
>>
>> Vector : constant Vectors;
>> pragma Import (Ada, Vector);
>> for Vector'Address use Addr;
>>
>> since you don't want Vector to be initialized.
>>
>> Vector will not be initialized because you have pragma Import for it.
>
> Nope, this didn't work. Checked the RM. Seems that if I use pragma
> Import (Ada, Vector) then the compiler assumes that this is an
> external (possibly in ASM) that is already initialised and therefore
> cannot be initialized to my ISR subprograms.

Don't know whether the following just silences the compiler
or whether it solves the elaboration code issue. (The issue
seems to appear with variables that have an address clause
specified.  There code below seems to result in two _init
procedures, one for CbW and one for Vectors; the assembly listing
shows a number of moves related to Vectors).

The idea was to replace Cb with a limited record CbW
that has a Cb component. The component is default initialized
to point to Dummy.

pragma Restrictions (No_Elaboration_Code);

with System;

package ISR is
    procedure Dummy;
    pragma Convention (C, Dummy);

private
    type Cb is not null access procedure;
    pragma Convention (C, Cb);

    type CbW is limited record
       C : Cb := Dummy'Access;
    end record;
    type Vectors is array (1 .. 4) of CbW;
    pragma Convention (C, Vectors);

    Addr : constant System.Address := System'To_Address
         (16#0000_0000#);

    Vector : Vectors;
    pragma Import (Ada, Vector);
    for Vector'Address use Addr;
end ISR;
package body ISR is
    procedure Dummy is
    begin
       null;
    end Dummy;
end ISR;




  parent reply	other threads:[~2011-04-10 20:47 UTC|newest]

Thread overview: 38+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-04-09 13:58 How do I disable elaboration code on this Lucretia
2011-04-09 16:57 ` Jeffrey Carter
2011-04-09 17:01   ` Simon Wright
2011-04-09 17:44     ` Ludovic Brenta
2011-04-09 19:19       ` Simon Wright
2011-04-09 19:32         ` Jeffrey Carter
2011-04-10  9:06           ` Lucretia
2011-04-10  9:31             ` Simon Wright
2011-04-09 19:35         ` Ludovic Brenta
2011-04-09 22:05           ` Simon Wright
2011-04-10  5:39             ` Simon Wright
2011-04-10 17:20   ` Lucretia
2011-04-10 20:12     ` Jeffrey Carter
2011-04-10 20:47     ` Georg Bauhaus [this message]
2011-04-10 21:19       ` Lucretia
2011-04-11  5:08         ` Lucretia
2011-04-11  6:28           ` Simon Wright
2011-04-11  8:54             ` Lucretia
2011-04-11 10:10               ` Simon Wright
2011-04-11 11:59                 ` Simon Clubley
2011-04-11 18:30                   ` Simon Wright
2011-04-11 19:12                     ` Simon Wright
2011-04-11 19:50                       ` Simon Wright
2011-04-11 21:40                       ` Lucretia
2011-04-11 23:12                         ` Lucretia
2011-04-11 23:16                           ` Lucretia
2011-04-11 23:31                           ` Lucretia
2011-04-12  5:22                             ` Simon Wright
2011-04-12 17:07                             ` Simon Clubley
2011-04-13 16:53                       ` Simon Wright
2011-04-15  8:38                       ` Simon Wright
2011-04-11 23:08                   ` Lucretia
2011-04-12 11:50                     ` Simon Clubley
2011-04-12 16:48                       ` Lucretia
2011-04-11 11:19               ` Georg Bauhaus
2011-04-11 13:50                 ` Simon Wright
2011-04-14 19:19               ` Florian Weimer
2011-04-10 16:34 ` Rolf
replies disabled

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