From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.5-pre1 (2020-06-20) on ip-172-31-74-118.ec2.internal X-Spam-Level: X-Spam-Status: No, score=-1.9 required=3.0 tests=BAYES_00 autolearn=ham autolearn_force=no version=3.4.5-pre1 Path: eternal-september.org!reader02.eternal-september.org!news.swapon.de!fu-berlin.de!uni-berlin.de!individual.net!not-for-mail From: Niklas Holsti Newsgroups: comp.lang.ada Subject: Re: Record initialisation question Date: Sun, 10 Jan 2021 21:30:01 +0200 Organization: Tidorum Ltd Message-ID: References: <5ff9779d$0$24281$426a74cc@news.free.fr> <5ffb311f$0$16185$426a74cc@news.free.fr> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 8bit X-Trace: individual.net J0QAK3OxNMmvOpc/SxGsIw5UGy38nrcblNeofWtNlcpEqVwlgT Cancel-Lock: sha1:4zswCFlUdmX5/1IePn7uem4P5QM= User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:78.0) Gecko/20100101 Thunderbird/78.5.0 In-Reply-To: <5ffb311f$0$16185$426a74cc@news.free.fr> Content-Language: en-US Xref: reader02.eternal-september.org comp.lang.ada:61093 List-Id: On 2021-01-10 18:53, DrPi wrote: > Le 09/01/2021 à 16:44, Niklas Holsti a écrit : ... >> >> Do you expect the compiler/linker to generate the full value of the >> Dcd object into the program image at compilation and link time? > That's it. > >> Have you ensured that the construction of the Dcd object requires no >> elaboration code? Most Flash memories cannot be written in the same >> way as RAM, so even if that .txt section is not write-protected, >> normal RAM-oriented elaboration code would not be able to write into >> Flash. > I'm aware of this (I'm an electronics guy). > I'll add a "pragma No_Elaboration_Code_All;" when I'm ready. Better add it now, because if you add it later, the compiler may then complain that it cannot implement the Dcd aggregate without elaboration code, and you will have to work around that somehow. A good while ago, a colleague had a problem where a large constant array aggregate would require elaboration code if written in named form (Index => Value, Index => Value, ...), and it was necessary to write it in positional form (Value, Value, ...) to get rid of the elaboration code. It can be tricky, so it is better to be warned early of any problems.