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

See the CrossGCC FAQ for lots more infromation.


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

Re: And now what???


Stephane Dalton wrote:

> Hi everybody,
>
> I cross compiled gcc-2.95.2, binutils 2.9.1and newlib 1.8.2 for
> m68k-psos-elf. After a bit of working everything installed fine.  Now I want
> to build a simple application.
>
> But when linking I get these messages...
>
> /usr/local/m68k-psos-elf/bin/ld: warning: cannot find entry symbol _start;
> defaulting to 80000074
> /usr/local/m68k-psos-elf/lib/crt0.o(.text+0x2): undefined reference to
> `__stack'
> /usr/local/m68k-psos-elf/lib/crt0.o(.text+0x38): undefined reference to
> `hardware_init_hook'
> /usr/local/m68k-psos-elf/lib/crt0.o(.text+0x48): undefined reference to
> `software_init_hook'
> /usr/local/m68k-psos-elf/lib/crt0.o(.text+0x58): undefined reference to
> `__FINI_SECTION__'
> /usr/local/m68k-psos-elf/lib/crt0.o(.text+0x64): undefined reference to
> `__INIT_SECTION__'
> /usr/local/m68k-psos-elf/lib/libc.a(exit.o): In function `exit':
> /usr/src/build-newlib-68k/m68k-psos-elf/newlib/libc/stdlib/../../../../../ne
> wlib-1.8.2/newlib/libc/stdlib/exit.c:70: undefined reference to `_exit'
> /usr/local/m68k-psos-elf/lib/libc.a(sbrkr.o): In function `_sbrk_r':
> /usr/src/build-newlib-68k/m68k-psos-elf/newlib/libc/reent/../../../../../new
> lib-1.8.2/newlib/libc/reent/sbrkr.c:61: undefined reference to `sbrk'
> /usr/local/m68k-psos-elf/lib/libc.a(makebuf.o): In function `__smakebuf':
> /usr/src/build-newlib-68k/m68k-psos-elf/newlib/libc/stdio/../../../../../new
> lib-1.8.2/newlib/libc/stdio/makebuf.c:93: undefined reference to `isatty'
> /usr/local/m68k-psos-elf/lib/libc.a(writer.o): In function `_write_r':
> /usr/src/build-newlib-68k/m68k-psos-elf/newlib/libc/reent/../../../../../new
> lib-1.8.2/newlib/libc/reent/writer.c:58: undefined reference to `write'
> /usr/local/m68k-psos-elf/lib/libc.a(closer.o): In function `_close_r':
> /usr/src/build-newlib-68k/m68k-psos-elf/newlib/libc/reent/../../../../../new
> lib-1.8.2/newlib/libc/reent/closer.c:53: undefined reference to `close'
> /usr/local/m68k-psos-elf/lib/libc.a(fstatr.o): In function `_fstat_r':
> /usr/src/build-newlib-68k/m68k-psos-elf/newlib/libc/reent/../../../../../new
> lib-1.8.2/newlib/libc/reent/fstatr.c:61: undefined reference to `fstat'
> /usr/local/m68k-psos-elf/lib/libc.a(lseekr.o): In function `_lseek_r':
> /usr/src/build-newlib-68k/m68k-psos-elf/newlib/libc/reent/../../../../../new
> lib-1.8.2/newlib/libc/reent/lseekr.c:58: undefined reference to `lseek'
> /usr/local/m68k-psos-elf/lib/libc.a(readr.o): In function `_read_r':
> /usr/src/build-newlib-68k/m68k-psos-elf/newlib/libc/reent/../../../../../new
> lib-1.8.2/newlib/libc/reent/readr.c:58: undefined reference to `read'
> collect3: ld returned 1 exit status
>
> I read from the crossgcc FAQ that sbrk write close read lseek... etc can be
> defined as empty stubs... ok but where do I do that??? and what am I suppose
> to do with hardware_init_hook??
>
> I'm sure it's very simple but I'm a bit loss in that, I took a quick look at
> the crt0.S of libgloss for my architecture but didn't find any clues there.
>
> If anybody can give me some pointers where to go from there it would be
> deeply appreciated.

There should be answers in the mail archives.  I've posted similar answers
before.
Search for "-mads" which is a board supported by the powerpc targeted compiler.

My powerpc-eabi compiler would not link unless I gave it the -mads option.
Looking at the specs file I found that -mads causes the linker to link in
libads.a.  If you look in libgloss you will see a board support package for the
ads board.  This gets compiled and put into the appropriate library directory.

You have two options.

1) Choose a board support package from libgloss which most closely resembles your
hardware.  The copy it to a new directory (eg. mybsp) and change the makefiles
and source files to build your own board support package.  Install mybsp and add
-mmybsp options to the specs file.  Your programs should link if you specify
-mmybsp.  Alternatively you can make -mmybsp the default in the specs file so you
don't have to specify it on the gcc command line.

2)  Choose a board support package from libgloss which most closely resembles
your hardware.  Modify the source code to suit your hardware, build and install
it.  Specify -m(the-bsp-you-chose) and it should link.  Alternatively you can
make -m(the-bsp-you-chose) the default in the specs file so you don't have to
specify it on the gcc command line.

Hope that helps,
Brendan Simon.



------
Want more information?  See the CrossGCC FAQ, http://www.objsw.com/CrossGCC/
Want to unsubscribe? Send a note to crossgcc-unsubscribe@sourceware.cygnus.com


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