Re: LD undefined reference to existing symbol

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



"b.zaar" <billy.zaar@xxxxxxxxx> writes:

> Hi, I'm using a cross compiler for i386-elf to develop a boot loader. I'm
> using the gcc tools under cygwin if that might make a difference. The
> problem is an undefined reference to an existing symbol. The code is
> compiled with nasm and then linked with gnu ld. I'm finding ld wont link
> with more than 5 global symbols defined in the nasm elf object file. This is
> the output from the link command.
>
> $ i386-elf-ld.exe -y print -y printhex -Map loader.map -T
> ../../src/boot/loader
> .ld start.o pmi.o cpuid.o main.o int.o -o loader
> start.o: definition of printhex
> start.o: definition of print
> pmi.o: reference to print
> pmi.o: reference to printhex
> pmi.o: In function `initpmi':
> /usr/src/venom-os/src/boot/pmi.s:(.text16+0x6): undefined reference to
> `print'
> pmi.o: In function `pmdie.skip':
> /usr/src/venom-os/src/boot/pmi.s:(.text16+0x64): undefined reference to
> `print'
> /usr/src/venom-os/src/boot/pmi.s:(.text16+0x6): undefined reference to
> `print'
> pmi.o: In function `pmdie.skip':
> /usr/src/venom-os/src/boot/pmi.s:(.text16+0x64): undefined reference to
> `print'

I don't know what is happening here.  But one thing to check is to use
readelf -s to look at the actual symbol tables.  The messages from the
linker tend to drop leading underscores, so it is possible that some
symbols have a leading underscore and some do not.

Also use readelf to confirm that the symbols in start.o are STB_GLOBAL
rather than STB_LOCAL.

Other than that I really can't think of what could be going wrong here.
If you can't figure it out, I recommend opening a linker bug report at
http://sourceware.org/bugzilla/ ; attach the actual .o files and linker
script that you are using.

Ian


[Index of Archives]     [Linux C Programming]     [Linux Kernel]     [eCos]     [Fedora Development]     [Fedora Announce]     [Autoconf]     [The DWARVES Debugging Tools]     [Yosemite Campsites]     [Yosemite News]     [Linux GCC]

  Powered by Linux