[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
RE: [avr-gcc-list] Order of variables placed in .data and .bss sections
From: |
Weddington, Eric |
Subject: |
RE: [avr-gcc-list] Order of variables placed in .data and .bss sections |
Date: |
Tue, 20 May 2008 12:06:25 -0600 |
> -----Original Message-----
> From:
> address@hidden
> [mailto:address@hidden
> org] On Behalf Of Raj Sharma
> Sent: Tuesday, May 20, 2008 11:21 AM
> To: address@hidden
> Subject: [avr-gcc-list] Order of variables placed in .data
> and .bss sections
>
> Dear all,
>
> Is there a way to force some order in the way variables
> (global/static) are placed in .data and .bss sections ? For
> example, let my program has 2 initialized global variables g1
> and g2 and 5 uninitialized global variables u1,u2,u3,u4 and
> u5. g1 and g2 are first placed in program memory after .text
> section and __do_copy_data copies them to the starting
> address in SRAM. u1 through u5 are not explictitly stored in
> program memory but __do_copy_bss places them just after g1
> and g2 in SRAM and zeroes them out. I want to know if I can
> somehow specify the order of these variables, say g1
> followed by g2; then u3,u4,u5,u1,u2.
>
> I noticed that the order in which the variables are
> declared/defined in C file or assembly file does not
> correspond to the way they are placed in SRAM.
>
> Thanks in advance,
> Raj
Hello Raj,
In theory it can be done, but you will have to use -fdata-sections, and
a customized linker script. You may also have to either, customize the
startup code in avr-libc, or have some custom code right after startup
that takes care of the .data initialization and .bss clearing yourself.
Why do you need to do this anyway?