Discussion:
llvm-ld error with busybox1.21.0
Wang Shuai
2013-11-20 15:07:13 UTC
Permalink
Hi,
Recently, I'm trying to apply KLEE to busybox1.21.0. I followed the
subsequent steps:

mkdir obj-klee
make -w O=obj-klee defconfig
cd obj-klee
make CC=klee-gcc LD="llvm-ld --disable-opt" AR=llvm-ar SKIP_STRIP=y V=1
make CC=/home/wang/work/klee/scripts/klee-gcc LD="llvm-ld --disable-opt" SKIP_STRIP=y V=1 AR=llvm-ar CFLAGS=-fnested-functions


But,an error happened:

------------------------
-------------------------
------------------------

Trying libraries: m
Failed: -Wl,--start-group -lm -Wl,--end-group
Output of:
/home/wang/work/klee/scripts/klee-gcc -fnested-functions -o
busybox_unstripped -Wl,--start-group applets/built-in.o
archival/lib.a archival/libarchive/lib.a console-tools/lib.a
coreutils/lib.a coreutils/libcoreutils/lib.a debianutils/lib.a
e2fsprogs/lib.a editors/lib.a findutils/lib.a init/lib.a libbb/lib.a
libpwdgrp/lib.a loginutils/lib.a mailutils/lib.a miscutils/lib.a
modutils/lib.a networking/lib.a networking/libiproute/lib.a
networking/udhcp/lib.a printutils/lib.a procps/lib.a runit/lib.a
selinux/lib.a shell/lib.a sysklogd/lib.a util-linux/lib.a
util-linux/volume_id/lib.a archival/built-in.o
archival/libarchive/built-in.o console-tools/built-in.o
coreutils/built-in.o coreutils/libcoreutils/built-in.o
debianutils/built-in.o e2fsprogs/built-in.o editors/built-in.o
findutils/built-in.o init/built-in.o libbb/built-in.o
libpwdgrp/built-in.o loginutils/built-in.o mailutils/built-in.o
miscutils/built-in.o modutils/built-in.o networking/built-in.o
networking/libiproute/built-in.o networking/udhcp/built-in.o
printutils/built-in.o procps/built-in.o runit/built-in.o
selinux/built-in.o shell/built-in.o sysklogd/built-in.o
util-linux/built-in.o util-linux/volume_id/built-in.o
-Wl,--end-group -Wl,--start-group -lm -Wl,--end-group
==========
llvm-ld: error: Cannot find linker input 'selinux/lib.a'
make[2]: *** [busybox_unstripped] Error 1
make[1]: *** [_all] Error 2
make: *** [all] Error 2


When I check selinux/lib.a, the file is there, but it contains only a
single line with: "!<arch>" . Someone can help me ? If any, could you
tell me how to solve it? I'm really hurried with this test. Thank you
very much for advance!
Martin Nowack
2013-11-21 14:26:55 UTC
Permalink
Hi,
Can you try to replace the LD= “…” with LD=klee-gcc or without setting the LD argument?

klee-gcc can also be used as a linker and calls llvm-ld internally.

HTH. Cheers,
Martin
Post by Wang Shuai
Hi,
mkdir obj-klee
make -w O=obj-klee defconfig
cd obj-klee
make CC=klee-gcc LD="llvm-ld --disable-opt" AR=llvm-ar SKIP_STRIP=y V=1
make CC=/home/wang/work/klee/scripts/klee-gcc LD="llvm-ld --disable-opt" SKIP_STRIP=y V=1 AR=llvm-ar CFLAGS=-fnested-functions
------------------------
-------------------------
------------------------
Trying libraries: m
Failed: -Wl,--start-group -lm -Wl,--end-group
/home/wang/work/klee/scripts/klee-gcc -fnested-functions -o busybox_unstripped -Wl,--start-group applets/built-in.o archival/lib.a archival/libarchive/lib.a console-tools/lib.a coreutils/lib.a coreutils/libcoreutils/lib.a debianutils/lib.a e2fsprogs/lib.a editors/lib.a findutils/lib.a init/lib.a libbb/lib.a libpwdgrp/lib.a loginutils/lib.a mailutils/lib.a miscutils/lib.a modutils/lib.a networking/lib.a networking/libiproute/lib.a networking/udhcp/lib.a printutils/lib.a procps/lib.a runit/lib.a selinux/lib.a shell/lib.a sysklogd/lib.a util-linux/lib.a util-linux/volume_id/lib.a archival/built-in.o archival/libarchive/built-in.o console-tools/built-in.o coreutils/built-in.o coreutils/libcoreutils/built-in.o debianutils/built-in.o e2fsprogs/built-in.o editors/built-in.o findutils/built-in.o init/built-in.o libbb/built-in.o libpwdgrp/built-in.o loginutils/built-in.o mailutils/built-in.o miscutils/built-in.o modutils/built-in.o networking/built-in.o networking/libiproute/built-in.o networking/udhcp/built-in.o printutils/built-in.o procps/built-in.o runit/built-in.o selinux/built-in.o shell/built-in.o sysklogd/built-in.o util-linux/built-in.o util-linux/volume_id/built-in.o -Wl,--end-group -Wl,--start-group -lm -Wl,--end-group
==========
llvm-ld: error: Cannot find linker input 'selinux/lib.a'
make[2]: *** [busybox_unstripped] Error 1
make[1]: *** [_all] Error 2
make: *** [all] Error 2
When I check selinux/lib.a, the file is there, but it contains only a single line with: "!<arch>" . Someone can help me ? If any, could you tell me how to solve it? I'm really hurried with this test. Thank you very much for advance!
_______________________________________________
klee-dev mailing list
https://mailman.ic.ac.uk/mailman/listinfo/klee-dev
---------------------------------------------------
Martin Nowack
Research Assistant

Technische Universität Dresden
Computer Science
Institute of Systems Architecture
Systems Engineering
01062 Dresden

Phone: +49 351 463 39608
Email: martin_nowack-***@public.gmane.org
----------------------------------------------------

Loading...