This is the mail archive of the crossgcc@cygnus.com mailing list for the crossgcc project.


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

linking binutils 2.7 (or2.8) and making binary output


We regularly use binary memory images generated by our old compiler/linker
as flash images of code.  These images can be linked to run from ram,
Saved in flash and copied up to ram at startup time.

A binary image with a header tacked on the front
is an easy way to do this.

But with GCC I get:

Making the AOUT file.
---------------------
/usr/local/m68k-aout/bin/ld -ochook_boot.aout -n -Map chook_boot.map -Tmake.lnk ../main/vectors.o ../main/libmain.a ../flash/libflash.a /soft/chook/master/lib/liblib.a /soft/chook/master/iopos/liboctopos.a 
/usr/local/m68k-aout/bin/objcopy -O binary chook_boot.aout chook_boot.bin
/usr/local/m68k-aout/bin/objcopy: chook_boot.aout: Error 0
gmake: *** [link] Error 1


The link goes fine but the objcopy fails with Error 0 That usually no error
so something must be screwed up.  I'm sure that the objcopy doesn't 
like the extra output sections for code,app1,app2.  But I want to put 
these things in Defined places in the Flash....What should I do?

Here's a copy of my linker script:

SECTIONS
{
  .text 0x0:
  {
    CREATE_OBJECT_SYMBOLS
    _vectab = ALIGN(2);
    ../main/vectors.o(.data)
    ../main/vectors.o (COMMON);
    ../main/startup_bdm.o (.text)
     *(.text) 
    _etext = ALIGN(2);
  }
  .data (SIZEOF(.text) + ADDR(.text) ):
  {
    _sdata = ALIGN(4);
    ../main/main.o (.data) 
    _edata = ALIGN(2);
  }
  .code 0x20000:
  {
    ../main/maincode.o (.data) 
  }
  .app1_part 0x80000:
  {
    ../main/app1_boot_data.o (.data) 
  }
  .app2_part 0xa0000:
  {
    ../main/app2_boot_data.o (.data) 
  }
  .bss 0x01080000: 
  { 
    _sdata = ALIGN(2);
    __bss_start = .;
    *(.bss) 
    *(COMMON) 
    _end = ALIGN(2);
    __end = .;
  }
  __text = ADDR(.text);
  __data = ADDR(.data);
  __bss = ADDR(.bss);
  start = _startup;
}