This is the mail archive of the
binutils@sources.redhat.com
mailing list for the binutils project.
Re: Accumulation of similar size data items to reduce ROM space.
- From: Alan Modra <amodra at bigpond dot net dot au>
- To: Nitin Yewale <NitinY at KPITCummins dot com>
- Cc: binutils at sources dot redhat dot com
- Date: Thu, 4 Nov 2004 00:05:27 +1030
- Subject: Re: Accumulation of similar size data items to reduce ROM space.
- References: <4A1BE23A7B777442B60F4B4916AE0F13035247C8@sohm.kpit.com>
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