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.
next prev parent 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