I'd like to be able to link some of my development code w/ efence on my spiffy new amd64 box, but blindly adding ~amd64 to KEYWORDS for efence-2.4.13 leads to: ar crv libefence.a efencepp.o efence.o g++ -g -shared -Wl,-soname,libefence.so.0 -o libefence.so.0.0 \ efencepp.o efence.o -lpthread a - efencepp.o a - efence.o /usr/lib/gcc/x86_64-pc-linux-gnu/3.4.3/../../../../x86_64-pc-linux-gnu/bin/ld: efencepp.o: relocation R_X86_64_32S against `a local symbol' can not be used when making a shared object; recompile with -fPIC efencepp.o: could not read symbols: Bad value I know this sort of error is common on amd64, and if somebody will tell me the canonical fix, I'll be happy to implement it.
Hmmm, looks like the problem is the efence-2.4.13-gentoo.diff patch, which comments out the CPPFLAGS line in the Makefile. Anybody know why that was done?
Grant, I cannot remember why I commented out CPPFLAGS... more than likely I didn't realize the author was using that where CXXFLAGS should be used (CPP is C Pre Processor of course), so it looks like the C sources were compiled with -fPIC while the C++ sources were not. I will attach a patch. Please test it and see if that is indeed the cause of the problem. If it works, hopefully the amd64 guys would be awesome enough to keyword it ~amd64.
Created attachment 52380 [details, diff] efence-2.4.13-gentoo.diff
Patch works beautifully (at least on amd64 and x86). Committed, and set as ~x86.