DynamoRIO / dynamorio

Dynamic Instrumentation Tool Platform
Other
2.61k stars 554 forks source link

Dynamorio installation on x86 emulator fails with undefined symbol errors #2484

Open techvoltage opened 7 years ago

techvoltage commented 7 years ago

I tried to install Dynamorio for Genymotion emulator(x86). I used the following commands

~/android-sdk-linux/android-ndk-r12b/build/tools/make-standalone-toolchain.sh --arch=x86 --platform=android-21 --install-dir=/tmp/android-ndk-21
git clone https://github.com/DynamoRIO/dynamorio.git
mkdir build_android
cd build_android
ln -sf i686-linux-android-ld.bfd /tmp/android-ndk-21/bin/i686-linux-android-ld
ln -sf ld.bfd /tmp/android-ndk-21/i686-linux-android/bin/ld
cmake -DCMAKE_TOOLCHAIN_FILE=../dynamorio/make/toolchain-android.cmake -DANDROID_TOOLCHAIN=/tmp/android-ndk-21 -DDR_COPY_TO_DEVICE=ON -DCMAKE_C_COMPILER=/tmp/android-ndk-21/bin/i686-linux-android-gcc -DCMAKE_CXX_COMPILER=/tmp/android-ndk-21/bin/i686-linux-android-g++ -DBUILD_TOOLS=OFF -DBUILD_CLIENTS=OFF -DTARGET_ABI=i686-linux-android ../dynamorio 
make all

However the installation fails with undefined reference errors:

[ 73%] Built target drsyms
Scanning dependencies of target drsyms_bench
[ 74%] Building C object ext/drsyms/CMakeFiles/drsyms_bench.dir/drsyms_bench.c.o
[ 74%] Linking C executable ../drsyms_bench
/tmp/android-ndk-21/bin/../lib/gcc/i686-linux-android/4.9.x/../../../../i686-linux-android/bin/ld: warning: libm.so, needed by ../lib32/release/libdrsyms.so, not found (try using -rpath or -rpath-link)
../lib32/release/libdrsyms.so: undefined reference to `__ctype_b_loc'
../lib32/release/libdrsyms.so: undefined reference to `__assert_fail'
../lib32/release/libdrsyms.so: undefined reference to `__fxstat'
../lib32/release/libdrsyms.so: undefined reference to `__errno_location'
../lib32/release/libdrsyms.so: undefined reference to `__strdup'
collect2: error: ld returned 1 exit status
ext/drsyms/CMakeFiles/drsyms_bench.dir/build.make:96: recipe for target 'ext/drsyms_bench' failed
make[2]: *** [ext/drsyms_bench] Error 1
CMakeFiles/Makefile2:948: recipe for target 'ext/drsyms/CMakeFiles/drsyms_bench.dir/all' failed
make[1]: *** [ext/drsyms/CMakeFiles/drsyms_bench.dir/all] Error 2
Makefile:149: recipe for target 'all' failed
make: *** [all] Error 2
derekbruening commented 7 years ago

Xref #2556. Does an older NDK version work?