This is the mail archive of the binutils@sources.redhat.com mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

RE: Accumulation of similar size data items to reduce ROM space.


Hi,
Thank you for the informative reply.

>No, doing this sort of thing in the compiler is by far the easiest way
>to accomplish what you want.  Have the compiler emit 1 byte variables
>to .data.s1, two byte variables to .data.s2 and so on.  Then the linker
>can easily combine like sized data items.

We have tried to put all similar size variables into one sections by specifying
attribute for each variable like 
	char ch1a __attribute__ ((section ("charSect"))) = { 23 };

With above approach user will have to put each and every variable into the 
specific section by specifying the attribute. 
We would like to put all similar size variables into one section. How can we 
automate this in compiler?

Regards,
Nitin Yewale,
KPIT Cummins InfoSystems Ltd.
Pune, India

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Free download of GNU based tool-chains for Renesas' SH and H8 Series.
The following site also offers free technical support to its users. 
Visit http://www.kpitgnutools.com for details. 
Latest versions of KPIT GNU tools were released on October 1, 2004.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 

-----Original Message-----
From: Alan Modra [mailto:amodra@bigpond.net.au]
Sent: Wednesday, November 03, 2004 7:05 PM
To: Nitin Yewale
Cc: binutils@sources.redhat.com
Subject: Re: Accumulation of similar size data items to reduce ROM
space.


On Wed, Nov 03, 2004 at 01:57:19PM +0530, Nitin Yewale wrote:
> Even if compiler does the job of accumulating similar size data items
> but it will be file wise. So it will be better if linker reads all the
> object files and does the accumulation of similar size data items on the
> data type basis. 

No, doing this sort of thing in the compiler is by far the easiest way
to accomplish what you want.  Have the compiler emit 1 byte variables
to .data.s1, two byte variables to .data.s2 and so on.  Then the linker
can easily combine like sized data items.

If you really must do this in the linker alone, then you'll need to
a) determine data item boundaries
b) rearrange section contents
c) adjust all relocs pointing into the rearranged sections.
d) adjust all relocs in the rearranged sections.
e) adjust all symbols defined in those sections too.

(a) is non-trivial.  How will you handle aggregates?

-- 
Alan Modra
IBM OzLabs - Linux Technology Centre


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]