linking binutils 2.7 (or2.8) and making binary output
Bob Harmon
harmon@craycom.com
Wed May 21 07:49:00 GMT 1997
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;
}
More information about the crossgcc
mailing list