When I try to compile usermode-sources 2.6.3-r1, Everything compiles
fine. I get a vmlinux file. However, The linux executeable won't
link. I get the following at the very end of the build process:
gcc -Wl,-T,arch/um/uml.lds.s -static -Wl,--wrap,malloc -Wl,--wrap,free
-Wl,--wrap,calloc \
-o linux arch/um/main.o vmlinux -L/usr/lib -lutil
vmlinux(.text+0xce720): In function `strcpy':
lib/string.c:71: multiple definition of `strcpy'
arch/um/kernel/tt/unmap_fin.o(.text+0x416e0): first defined here
/usr/lib/gcc-lib/i686-pc-linux-gnu/3.3.2/../../../../i686-pc-linux-gnu/bin/ld:
Warning: size of symbol `strcpy' changed from 33 in
arch/um/kernel/tt/unmap_fin.o to 32 in vmlinux
vmlinux(.text+0xce9f0): In function `strrchr':
lib/string.c:266: multiple definition of `strrchr'
arch/um/kernel/tt/unmap_fin.o(.text+0x19830): first defined here
/usr/lib/gcc-lib/i686-pc-linux-gnu/3.3.2/../../../../i686-pc-linux-gnu/bin/ld:
Warning: size of symbol `strrchr' changed from 441 in
arch/um/kernel/tt/unmap_fin.o to 47 in vmlinux
vmlinux(.text+0xce960): In function `strncmp':
lib/string.c:231: multiple definition of `strncmp'
arch/um/kernel/tt/unmap_fin.o(.text+0x57b0): first defined here
/usr/lib/gcc-lib/i686-pc-linux-gnu/3.3.2/../../../../i686-pc-linux-gnu/bin/ld:
Warning: size of symbol `strncmp' changed from 146 in
arch/um/kernel/tt/unmap_fin.o to 66 in vmlinux
vmlinux(.text+0xcfaf0): In function `sscanf':
lib/vsprintf.c:752: multiple definition of `sscanf'
arch/um/kernel/tt/unmap_fin.o(.text+0x327b0): first defined here
/usr/lib/gcc-lib/i686-pc-linux-gnu/3.3.2/../../../../i686-pc-linux-gnu/bin/ld:
Warning: size of symbol `sscanf' changed from 33 in
arch/um/kernel/tt/unmap_fin.o to 35 in vmlinux
vmlinux(.text+0xce930): In function `strcmp':
lib/string.c:211: multiple definition of `strcmp'
arch/um/kernel/tt/unmap_fin.o(.text+0x56d0): first defined here
/usr/lib/gcc-lib/i686-pc-linux-gnu/3.3.2/../../../../i686-pc-linux-gnu/bin/ld:
Warning: size of symbol `strcmp' changed from 37 in
arch/um/kernel/tt/unmap_fin.o to 39 in vmlinux
vmlinux(.text+0xce9b0): In function `strchr':
lib/string.c:251: multiple definition of `strchr'
arch/um/kernel/tt/unmap_fin.o(.text+0x5560): first defined here
/usr/lib/gcc-lib/i686-pc-linux-gnu/3.3.2/../../../../i686-pc-linux-gnu/bin/ld:
Warning: size of symbol `strchr' changed from 359 in
arch/um/kernel/tt/unmap_fin.o to 53 in vmlinux
vmlinux(.text+0xceb20): In function `strpbrk':
lib/string.c:382: multiple definition of `strpbrk'
arch/um/kernel/tt/unmap_fin.o(.text+0x34e20): first defined here
/usr/lib/gcc-lib/i686-pc-linux-gnu/3.3.2/../../../../i686-pc-linux-gnu/bin/ld:
Warning: size of symbol `strpbrk' changed from 179 in
arch/um/kernel/tt/unmap_fin.o to 82 in vmlinux
/usr/lib/gcc-lib/i686-pc-linux-gnu/3.3.2/../../../../i686-pc-linux-gnu/bin/ld:
BFD 2.14.90.0.7 20031029 assertion fail elf.c:3460
collect2: ld returned 1 exit status
make: *** [linux] Error 1
I have another couple of machines that can compile the uml kernel fine.
They all have glibc 3.2.3-r9, gcc 3.3.2. Two machines have an athlon-xp
and are running kernel 2.6.1 with nptl. The other is a pentium 4 with a
2.4 kernel.
The pentium and one of the athlon's compile fine. The other athlon gets
the above errors. I also tried downloading uml for 2.6.0/1 and this
machine got the same error when trying to compile those versions as
well. So I'm pretty sure there is something quirky with this machine's
installation. I have not noticed any other problems with building
anything on this machine though, so I think it is uml specific too.
I found a reference to this error from way back in 2000 (
http://www.geocrawler.com/mail/msg.php3?msg_id=4803654&list=597 ) on a
previous kernel and a previous version of gcc. The fix then was to
remove -pg from the build options for unmap_fin.c. I tried that and
rebuilt- but I still got the same error.
Any suggestions where to go from here? Thanks for any feedback. I've
been stumped on this for a while.
-Dennis
--
gentoo-user@xxxxxxxxxx mailing list
|