LD undefined reference to existing symbol

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

 



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'


If I rearrange the source code to have the print label/proc appear before
printhex I get the following output.

$ 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 print
start.o: definition of printhex
pmi.o: reference to print
pmi.o: reference to printhex
pmi.o: In function `pmdie':
/usr/src/venom-os/src/boot/pmi.s:(.text16+0x5e): undefined reference to
`printhex'


So there must be something about the ordering or limit of global/extern
symbols that ld is working with. The version of nasm is: NASM version
2.08.02 compiled on Jul 12 2010
and ld's version: GNU ld (GNU Binutils) 2.20.51.20100410

I can see the objects defined as globals in the nasm elf object file for
start.o using objdump -t so they seemed to be defined correctly.

Any help would be appreciated, thanks.
-- 
View this message in context: http://old.nabble.com/LD-undefined-reference-to-existing-symbol-tp30641987p30641987.html
Sent from the gcc - Help mailing list archive at Nabble.com.



[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