Seems to be Ok , Oleg.
I just cannot remember everything :)

I'll thing if I"ll add some overlay sections to binutils.
Juts have to figure out which ones and how.

~d

On Monday 17 February 2003 21:42, Oleg Skydan wrote:
> 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
>
> -------------------------------------------------------
> 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)  3468202, 5585314
 ********************************************************************/


Reply via email to