Hi, All !

I want to tell about the simple and very convenient solution of my problem.

I used a custon linker script and __attribute__ keyword.

for example define somewhere in the sources:

int __attribute__((section (".finput, \"aw\", @nobits;"))) a;
int __attribute__((section (".finput, \"aw\", @nobits;"))) b;
char __attribute__((section (".bandscope, \"aw\", @nobits;"))) c[10];


then copy standard linker scrip to your project and add the following
to the SECTIONS after definition of .noinit section:

OVERLAY SIZEOF(.noinit) + ADDR(.noinit) :
{
    .bandscope
    {
        *(.bandscope)
        *(COMMON)
    }
    .finput
    {
        *(.finput)
        *(COMMON)
    }
} > data

then pass --script=scriptname option to the ld

Ad you will get the two overlapped sections in the RAM!

It is a very convenient and flexible method if you want to reduce memory
requirements
by using the same address space for the variable that have no simultaneous
use and
could not declare them as locals.

To Dmitry: Please let me know am I correct ?

The output of .map file (for the real program, not for the above sample) is
here (and it
seems all is OK):

.bandscope      0x00000758       0x58
 *(.bandscope)
 .bandscope     0x00000758       0x58 ScopeScrn.o
                0x00000760                Spectrum
                0x00000758                ScopeVFO
 *(COMMON)
                0x00000758
__load_start_bandscope=LOADADDR(.bandscope)
                0x000007b0
__load_stop_bandscope=(LOADADDR(.bandscope)+SIZEOF(.bandscope))

.finput         0x00000758        0xa load address 0x000007b0
 *(.finput)
 .finput        0x00000758        0xa FInpScrn.o
                0x00000758                FInpVal
                0x00000760                Pos
 *(COMMON)
                0x000007b0
__load_start_finput=LOADADDR(.finput)
                0x000007ba
__load_stop_finput=(LOADADDR(.finput)+SIZEOF(.finput))
                0x000007b0
.=(ADDR(.bandscope)+(SIZEOF(.bandscope)6SIZEOF(.finput)))


All the best !
Bye,
Oleg.

----- Original Message -----
From: "Dmitry" <di...@mail.ru>
To: <mspgcc-users@lists.sourceforge.net>
Sent: Saturday, February 15, 2003 9:05 PM
Subject: Re: [Mspgcc-users] How to define overlapping sections ?


> Well, in this example var2 will not be allocated at all.
> So, once allocated var1 will do all the job.
> This will work !
> (at least it works in libc:)
>
> Obviously you can define your own section and put vars there.
>
> define a section like '.bss' :
> .section .mysection, "aw", @nobits
> or
> type __attribute__ ((section (".mysection, "aw", @nobits;"))) a,b,c;
>
> then pass the section address to the linker.
>
> ~d
>
>
> On Saturday 15 February 2003 21:02, Oleg Skydan wrote:
> > Hi, Dmitry,
> >
> > > use alias for variable:
> > >
> > > long var1;
> > > long var2 asm("var1");
> > >
> > > Actually it doe not matter if var1 and var2 will have different sizes.
> >
> > It does matter. The RAM space will be allocated for var1.
> > So it will not work if sizeof(var2)>sizeof(var1), right ?
> >
> > > P.S. if you're using variables within some 'area' declare them as
local
> > > :)
> >
> > Usually I do so, but in this case it is a large project and different
tasks
> > should have access for particular variable, so it should be global :(.
> >
> > Any other ideas ?
> > May be the custom linker script would be helpful ?
> >
> > Thanks,
> > Oleg.
> >
> >
> >
> >
> > -------------------------------------------------------
> > This sf.net email is sponsored by:ThinkGeek
> > Welcome to geek heaven.
> > http://thinkgeek.com/sf
> > _______________________________________________
> > Mspgcc-users mailing list
> > Mspgcc-users@lists.sourceforge.net
> > https://lists.sourceforge.net/lists/listinfo/mspgcc-users
>
> --
> *********************************************************************
>    ("`-''-/").___..--''"`-._     (\       Dimmy the Wild      UA1ACZ
>     `6_ 6  )   `-.  (     ).`-.__.`)      Enterprise Information Sys
>     (_Y_.)'  ._   )  `._ `. ``-..-'       Nevsky prospekt,   20 / 44
>   _..`--'_..-_/  /--'_.' ,'               Saint Petersburg,   Russia
>  (il),-''  (li),'  ((!.-'                 +7 (812) 314-8860, 5585314
> *********************************************************************
>
>
>
>
>
> -------------------------------------------------------
> This sf.net email is sponsored by:ThinkGeek
> Welcome to geek heaven.
> http://thinkgeek.com/sf
> _______________________________________________
> Mspgcc-users mailing list
> Mspgcc-users@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/mspgcc-users
>


Reply via email to