Convert Linker Output to Binary File

frank.ueberschar at dsa-volgmann.de frank.ueberschar at dsa-volgmann.de
Fri Jan 5 10:54:16 UTC 2007


> you can use memory bank in the "linkcmds" file like this:
> 
> the code   running in the zero address  is located in the start.s file
> and start.s is compiled to start.o.
> 
> MEMORY
> {
>     ram : ORIGIN = 0, LENGTH = 1M
>     sram : ORIGIN = 0x03100000, LENGTH = 64K
> }
> 
> you can put the start.o in the "ram" memery bank and the others in the
> "sram"  memory bank.
> like this.
> 
> SECTIONS
> {
>      .first:
>      {
>          start.o
>      }>ram

This won't work because all objects are asserted to be
in our 0x03100000 SDRAM Adress space. 

On Startup we are using a bootloader that copies all
raw binary data stored in flash to sdram. The Bootloader 
then jumps to the code now residing in sdram. So the
startup code for the RTEMS C-Runtime has to be there. 

The code is running on our mcf5272 self customized board, 
when having the linker produced a raw-binary file itself
by adding OUTPUT_FORMAT (binary) to linkcmds. 

If we were missing this line (to prooduce a disassemble
with objdump) then objcopy fails to convert the built 
elf format into raw binary. (740kB -> 50MB)

..below: 

> 
>      .text:
>     {
>        *(.text)
>     }>sram
> 
> }
> 
> 
> 
> 04 Jan 2007 20:30:48 UT, frank.ueberschar at dsa-volgmann.de
> <frank.ueberschar at dsa-volgmann.de>:
> >
> > I am  bit confused with the following mapfile entry.
> >
> >
> >  .rodata.str1.1
> >                 0x0318b891      0x66f o-optimize/netcom.o
> >                                 0x6e4 (size before relaxing)
> >  .rodata.str1.1
> >                 0x00000000        0x2 o-optimize/misc.o


- When building RTEMS with -fno-merge-constants or when using 
  OUTPUT_FORMAT (binary) we do not have the above output lines 
  in the map file - there are a couple more of them even in the 
  libraries. 
  
  (Could this be a bug in the linker as we never had this 
   Problem when we were using the tools around RTEMS 4.5.1 ?)


Thank you for your advice. 
Frank






> >  .rodata.str1.1
> >                 0x0318bf00       0x9e o-optimize/desk.o
> >  .rodata.str1.1
> >                 0x0318bf9e      0x3d3 o-optimize/aspfunc.o
> >                                 0x3f8 (size before relaxing)
> >
> > Having built an application with rtems-4.7 I cannot
> > opjcopy the created .exe into a binary that is nearly
> > as small as I expected. (50MB -> 700kB)
> >
> > The code will be running at 0x03100000. But there
> > seems to be some object beeing used at 0x0 so that
> > objcopy fills the gap with 50MB of zeros.
> >
> > I was wondering about the rodata.str1.1 section having
> > adress 0x0 as the link-address (might be merged constants).
> >
> > Can someone give me a hint on how to get rid of the unneeded
> > symbols so objcopy can generate an appropriate binary ?
> >
> >
> >
> > $(CC) ... -fno-merge-constants does not help because any
> >            contributed library had to be recompiled)
> >
> > OUTPUT_FORMAT (binary) in fact produces a running binary
> >            - but I like to keep always a disassemble which
> >              itself needs the symbols for objdump.
> >
> >
> > Happy new year,
> > kind regards:
> >
> > Frank
> >
> > _______________________________________________
> > rtems-users mailing list
> > rtems-users at rtems.com
> > http://rtems.rtems.org/mailman/listinfo/rtems-users
> >
> >
> >
> 
> 
> -- 
> Bai.Shaolin
> Northeastern  University, ShenYang,China
> +86-24-23897811
> 


To: baishaolin at gmail.com
Cc: rtems-users at rtems.org




More information about the users mailing list