First time configuring/linking with newlib...
J. Johnston
jjohnstn@redhat.com
Tue Mar 11 00:50:00 GMT 2003
Dan Fowell wrote:
> Hi,
>
> I'm trying to link in libc.a that was configured for a powerpc-elf target,
> and I must be doing something wrong. Everything seemed to configure/make
> correctly for the powerpc-elf target, but when I link in the library as
> follows:
>
> powerpc-elf-ld.exe -g -t -Tram.lnk -o main.elf crt0.o main.o -L. -lc
>
>
> I get the following Linking errors:
>
> ---------------------------LINKING OBJS--------------------------
> powerpc-elf-ld: warning: no memory region specified for section `.fixup'
> powerpc-elf-ld: warning: no memory region specified for section `.got2'
> powerpc-elf-ld: address 0x848 of main.elf section .bss is not within region
> mem
> ./libc.a(makebuf.o): In function `__smakebuf':
> /home/DanFowell/build-newlib/powerpc-elf/newlib/libc/stdio/../../../../../ne
> wlib-1.10.0/newlib/libc/stdio/makebuf.c:93: undefined reference to `isatty'
> ./libc.a(sbrkr.o): In function `_sbrk_r':
> /home/DanFowell/build-newlib/powerpc-elf/newlib/libc/reent/../../../../../ne
> wlib-1.10.0/newlib/libc/reent/sbrkr.c:60: undefined reference to `sbrk'
> ./libc.a(writer.o): In function `_write_r':
> /home/DanFowell/build-newlib/powerpc-elf/newlib/libc/reent/../../../../../ne
> wlib-1.10.0/newlib/libc/reent/writer.c:58: undefined reference to `write'
> ./libc.a(closer.o): In function `_close_r':
> /home/DanFowell/build-newlib/powerpc-elf/newlib/libc/reent/../../../../../ne
> wlib-1.10.0/newlib/libc/reent/closer.c:53: undefined reference to `close'
> ./libc.a(fstatr.o): In function `_fstat_r':
> /home/DanFowell/build-newlib/powerpc-elf/newlib/libc/reent/../../../../../ne
> wlib-1.10.0/newlib/libc/reent/fstatr.c:62: undefined reference to `fstat'
> ./libc.a(lseekr.o): In function `_lseek_r':
> /home/DanFowell/build-newlib/powerpc-elf/newlib/libc/reent/../../../../../ne
> wlib-1.10.0/newlib/libc/reent/lseekr.c:58: undefined reference to `lseek'
> ./libc.a(readr.o): In function `_read_r':
> /home/DanFowell/build-newlib/powerpc-elf/newlib/libc/reent/../../../../../ne
> wlib-1.10.0/newlib/libc/reent/readr.c:58: undefined reference to `read'
> powerpc-elf-ld: link errors found, deleting executable `main.elf'
> ----------------------------------------------------------------------------
>
>
> what are the "fixup" and "got2" sections for? I don't have those sections
> defined in my linker script, but I don't think I want/need them, do I?
>
Those sections are used for relocation. For powerpc-elf, newlib defaults to
compile all code with the -mrelocatable-lib option.
You can see what the default powerpc-elf linker script does by issuing:
powerpc-elf-ld --verbose
> My linker script assigns where the .bss section should be put into region
> mem. Is the .bss section of the library fixed?
>
It appears you have not allocated enough space in your mem region to accomodate
the size of .bss needed.
> The undefined reference notifications seem to be related to file handling
> related functions, which I don't want/need anyway. Any ideas on how to get
> libc.a linking in correctly? All I really want is the sprintf function
> (part of stdio.h).
>
You are missing a libgloss library to supply the low-level syscalls. Try linking
in -lnosys at the end. You will have to provide some sort of _exit routine if you have
not already.
-- Jeff J.
More information about the Newlib
mailing list