Hi Rich, On Thu, 2017-04-13 at 16:59 +0100, Richard W.M. Jones wrote: > I'm trying to compile native LLVM support into American Fuzzy Lop. > Unfortunately debuginfo generation fails with: > > + /usr/lib/rpm/find-debuginfo.sh --strict-build-id -m --run-dwz --dwz-low-mem-die-limit 10000000 --dwz-max-die-limit 110000000 /home/rjones/d/fedora/american-fuzzy-lop/master/afl-2.41b > extracting debug info from /home/rjones/rpmbuild/BUILDROOT/american-fuzzy-lop-2.41b-2.fc27.x86_64/usr/bin/afl-tmin > extracting debug info from /home/rjones/rpmbuild/BUILDROOT/american-fuzzy-lop-2.41b-2.fc27.x86_64/usr/bin/afl-analyze > extracting debug info from /home/rjones/rpmbuild/BUILDROOT/american-fuzzy-lop-2.41b-2.fc27.x86_64/usr/bin/afl-gotcpu > extracting debug info from /home/rjones/rpmbuild/BUILDROOT/american-fuzzy-lop-2.41b-2.fc27.x86_64/usr/bin/afl-showmap > extracting debug info from /home/rjones/rpmbuild/BUILDROOT/american-fuzzy-lop-2.41b-2.fc27.x86_64/usr/bin/afl-clang-fast > extracting debug info from /home/rjones/rpmbuild/BUILDROOT/american-fuzzy-lop-2.41b-2.fc27.x86_64/usr/bin/afl-gcc > extracting debug info from /home/rjones/rpmbuild/BUILDROOT/american-fuzzy-lop-2.41b-2.fc27.x86_64/usr/bin/afl-fuzz > extracting debug info from /home/rjones/rpmbuild/BUILDROOT/american-fuzzy-lop-2.41b-2.fc27.x86_64/usr/lib/afl/afl-llvm-pass.so > extracting debug info from /home/rjones/rpmbuild/BUILDROOT/american-fuzzy-lop-2.41b-2.fc27.x86_64/usr/lib/afl/afl-llvm-rt-64.o > *** ERROR: No build ID note found in /home/rjones/rpmbuild/BUILDROOT/american-fuzzy-lop-2.41b-2.fc27.x86_64/usr/lib/afl/afl-llvm-rt-64.o > error: Bad exit status from /var/tmp/rpm-tmp.lnlcV6 (%install) > > Notice that the file that fails is a C object file (not a shared > library), and C object files apparently don't have build IDs. Right. That is not supposed to happen. ET_REL files (except kernel modules) should be skipped by the check. > While it's a bit odd that LLVM is using an object file instead of a > shared library, I guess it does that for ... reasons. Right. The first question is should that object file be packaged? I assume it is shipped so it can be linked directly into a program that needs to be instrumented? But if it isn't actually needed in the package then you might just not install it/remove it. Could you run file afl-llvm-rt-64.o and/or eu-readelf -h afl-llvm-rt-64.o on it to see if it really is an ET_REL file. > So is there a way to get find-debuginfo.sh to tolerate these files? > (A cursory look at find-debuginfo.sh doesn't show anything obvious, > but I could be missing something). Or maybe there's another way to > solve this? As Omair pointed out the check should be skipped for any non-executable file. So check Also if you are using rawhide there was a bug in some versions in rpmbuild (introduced by me, sorry) that erroneously complained about (non-executable) object files. That was fixed in: * Mon Mar 20 2017 Mark Wielaard <mjw@xxxxxxxxxx> - 4.13.0.1-13 - Add tests fix for sed file build-id regexp matching. - Add fix for build-ids in non-executable ELF files (#1433837). If all fails could you sent me the spec file or srpm and I'll try a build locally. Thanks, Mark _______________________________________________ devel mailing list -- devel@xxxxxxxxxxxxxxxxxxxxxxx To unsubscribe send an email to devel-leave@xxxxxxxxxxxxxxxxxxxxxxx