comp.lang.ada
 help / color / mirror / Atom feed
From: Simon Wright <simon@pushface.org>
Subject: Re: How do I disable elaboration code on this
Date: Mon, 11 Apr 2011 11:10:41 +0100
Date: 2011-04-11T11:10:41+01:00	[thread overview]
Message-ID: <m2mxjxrtcu.fsf@pushface.org> (raw)
In-Reply-To: 6bca8b26-152f-482c-95c0-1abf88b6b29b@a26g2000vbo.googlegroups.com

Lucretia <Lucretia9000@yahoo.co.uk> writes:

> The problem has nothing to do with the linker, I'm using binutils and
> gnat that I'e built myself. The problem is that GNAT is generating
> elaboration code where it is not allowed, i.e. code that 1)
> initialises  the array to 0 and 2) code that the copies function
> addresses into the array.
>
> If this cannot work then I'm surprised and I'll be forced to use
> separate constants as noted by Rolf. It just seems like overkill
> having to specify each element separately when an array is the right
> structure ffor the job.
>
> And in other languages like C it doesn't do the same thing. You can
> specify a static constant array and it'll initialise it with the right
> data.

And can you also specify the load address?

I happen to have a cross-compiler for VxWorks here (handy now, but I
ought to delete it) so I tried the following.

First, add markers so I can see what's what (note, the syntax for a
linker section name is different for VxWorks):

   Start : constant Integer := 16#1234_5678#;
   pragma Linker_Section (Start, "initial_isv#0");
   Vector : constant Vectors :=
     (Dummy'Access,
      Dummy'Access,
      Dummy'Access,
      Dummy'Access);
   pragma Convention (C, Vector);
   pragma Linker_Section (Vector, "initial_isv#0");
   --  for Vector'Address use Addr;
   Finish : constant Integer := 16#1234_4321#;
   pragma Linker_Section (Finish, "initial_isv#0");

Build:

$ powerpc-wrs-vxworks-gnatmake test.adb \
   -f 
   -largs -Wl,--section-start -Wl,initial_isv=0x0

which generates an ELF file:

$ powerpc-wrs-vxworks-objdump -h -r test


test:     file format elf32-powerpc-vxworks

Sections:
Idx Name          Size      VMA       LMA       File off  Algn
  0 initial_isv   00000018  00000000  00000000  00000034  2**2
                  CONTENTS, RELOC, READONLY
[....]
RELOCATION RECORDS FOR [initial_isv]:
OFFSET   TYPE              VALUE 
00000004 R_PPC_ADDR32      isr__dummy
00000008 R_PPC_ADDR32      isr__dummy
0000000c R_PPC_ADDR32      isr__dummy
00000010 R_PPC_ADDR32      isr__dummy
[...]
Disassembly of section initial_isv:

00000000 <isr__start>:
   0:   12 34 56 78     .long 0x12345678

00000004 <isr__vector>:
        ...

00000014 <isr__finish>:
  14:   12 34 43 21     vmhraddshs v17,v20,v8,v12


I don't know whether this achieves what you are after, but it looks
pretty hopeful.

You've built binutils for your target (you said "my own
binutils" or something like that - if they really are yours rather than
GNU, (a) hats off, (b) I'm barking up the wrong tree and will shut up)
so I would expect --section_start to work the same.



  reply	other threads:[~2011-04-11 10:10 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
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 [this message]
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