jmpews / Dobby

a lightweight, multi-platform, multi-architecture hook framework.
Apache License 2.0
3.98k stars 822 forks source link

Building for android arm fails (branch master-c) (linker problems, many undefined references) #39

Closed jrd-rocks closed 5 years ago

jrd-rocks commented 5 years ago

cmake:

ANDROID_NDK=/home/user/dev/android-ndk-r17b
cmake .. \
-DCMAKE_TOOLCHAIN_FILE=$ANDROID_NDK/build/cmake/android.toolchain.cmake \
-DANDROID_NDK=$ANDROID_NDK \
-DCMAKE_BUILD_TYPE=Release \
-DANDROID_ABI=armeabi-v7a \
-DCXX=OFF \
-DX_ARCH=arm \
-DX_PLATFORM=Android \
-DX_SHARED=ON \
-DX_LOG=OFF \
-DCMAKE_VERBOSE_MAKEFILE=OFF

build:

[  5%] Building C object CMakeFiles/hookzz.dir/src/closure_bridge.c.o
[ 10%] Building C object CMakeFiles/hookzz.dir/src/hookzz.c.o
[ 15%] Building C object CMakeFiles/hookzz.dir/src/interceptor.c.o
[ 21%] Building C object CMakeFiles/hookzz.dir/src/interceptor_routing.c.o
/home/user/build/HookZz/src/interceptor_routing.c:103:32: warning: incompatible pointer to integer conversion assigning to 'uintptr_t' (aka 'unsigned int') from
      'void *' [-Wint-conversion]
    fp_reg                     = get_current_fp_reg();
                               ^ ~~~~~~~~~~~~~~~~~~~~
1 warning generated.
[ 26%] Building C object CMakeFiles/hookzz.dir/src/interceptor_routing_trampoline.c.o
[ 31%] Building C object CMakeFiles/hookzz.dir/src/logging.c.o
[ 36%] Building C object CMakeFiles/hookzz.dir/src/memory_manager.c.o
[ 42%] Building C object CMakeFiles/hookzz.dir/src/std_kit/std_buffer_array.c.o
[ 47%] Building C object CMakeFiles/hookzz.dir/src/std_kit/std_kit.c.o
/home/user/build/HookZz/src/std_kit/std_kit.c:4:47: warning: format specifies type 'long' but the argument has type 'size_t' (aka 'unsigned int') [-Wformat]
        ERROR_LOG("[!] malloc with size %ld", size);
                                        ~~~   ^~~~
                                        %zu
/home/user/build/HookZz/./src/std_kit/std_kit.h:62:47: note: expanded from macro 'ERROR_LOG'
                __FILE__, __LINE__, __func__, __VA_ARGS__);                                                            \
                                              ^~~~~~~~~~~
1 warning generated.
[ 52%] Building C object CMakeFiles/hookzz.dir/src/std_kit/std_list.c.o
[ 57%] Building C object CMakeFiles/hookzz.dir/src/std_kit/std_map.c.o
[ 63%] Building C object CMakeFiles/hookzz.dir/src/thread_support/thread_local_storage.c.o
[ 68%] Building C object CMakeFiles/hookzz.dir/src/thread_support/thread_stack.c.o
[ 73%] Building C object CMakeFiles/hookzz.dir/src/compiler-rt/lib/builtins/clear_cache.c.o
[ 78%] Building C object CMakeFiles/hookzz.dir/src/platforms/backend-posix/memory-helper-posix.c.o
[ 84%] Building C object CMakeFiles/hookzz.dir/src/platforms/backend-posix/memory-manager-posix.c.o
[ 89%] Building C object CMakeFiles/hookzz.dir/src/platforms/backend-posix/thread-local-storage-posix.c.o
[ 94%] Building C object CMakeFiles/hookzz.dir/src/platforms/backend-linux/memory-manager-linux.c.o
/home/user/build/HookZz/src/platforms/backend-linux/memory-manager-linux.c:56:57: warning: format specifies type 'unsigned long *' but the argument has type
      'zz_addr_t *' (aka 'unsigned int *') [-Wformat]
        if (sscanf(buf, "%lx-%lx %s %llx %x:%x %lu %s", &start_addr, &end_addr, prot, &offset, &dev, &sdev, &inode,
                         ~~~                            ^~~~~~~~~~~
                         %x
/home/user/build/HookZz/src/platforms/backend-linux/memory-manager-linux.c:56:70: warning: format specifies type 'unsigned long *' but the argument has type
      'zz_addr_t *' (aka 'unsigned int *') [-Wformat]
        if (sscanf(buf, "%lx-%lx %s %llx %x:%x %lu %s", &start_addr, &end_addr, prot, &offset, &dev, &sdev, &inode,
                             ~~~                                     ^~~~~~~~~
                             %x
2 warnings generated.
[100%] Linking C shared library libhookzz.so
/home/user/build/HookZz/src/closure_bridge.c:23: error: undefined reference to 'ClosureBridgeInitializeTablePage'
/home/user/build/HookZz/src/closure_bridge.c:48: error: undefined reference to 'ClosureBridgeInitializeClosureBridgeInfo'
/home/user/build/HookZz/src/hookzz.c:25: error: undefined reference to 'interceptor_trampoline_active'
/home/user/build/HookZz/src/interceptor_routing.c:78: error: undefined reference to 'get_next_hop_addr_PTR'
/home/user/build/HookZz/src/interceptor_routing.c:79: error: undefined reference to 'get_ret_addr_PTR'
/home/user/build/HookZz/src/interceptor_routing.c:86: error: undefined reference to 'get_next_hop_addr_PTR'
/home/user/build/HookZz/src/interceptor_routing.c:93: error: undefined reference to 'get_next_hop_addr_PTR'
/home/user/build/HookZz/src/interceptor_routing.c:103: error: undefined reference to 'get_current_fp_reg'
/home/user/build/HookZz/src/interceptor_routing.c:106: error: undefined reference to 'get_ret_addr_PTR'
/home/user/build/HookZz/src/interceptor_routing_trampoline.c:5: error: undefined reference to 'interceptor_trampoline_prepare'
/home/user/build/HookZz/src/interceptor_routing_trampoline.c:6: error: undefined reference to 'interceptor_trampoline_build_for_enter'
/home/user/build/HookZz/src/interceptor_routing_trampoline.c:7: error: undefined reference to 'interceptor_trampoline_build_for_invoke'
/home/user/build/HookZz/src/interceptor_routing_trampoline.c:10: error: undefined reference to 'interceptor_trampoline_prepare'
/home/user/build/HookZz/src/interceptor_routing_trampoline.c:11: error: undefined reference to 'interceptor_trampoline_build_for_enter_transfer'
/home/user/build/HookZz/src/interceptor_routing_trampoline.c:15: error: undefined reference to 'interceptor_trampoline_build_for_enter'
/home/user/build/HookZz/src/interceptor_routing_trampoline.c:0: error: undefined reference to 'interceptor_trampoline_build_for_leave'
/home/user/build/HookZz/src/interceptor_routing_trampoline.c:18: error: undefined reference to 'interceptor_trampoline_prepare'
/home/user/build/HookZz/src/interceptor_routing_trampoline.c:19: error: undefined reference to 'interceptor_trampoline_build_for_dynamic_binary_instrumentation'
/home/user/build/HookZz/src/interceptor_routing_trampoline.c:0: error: undefined reference to 'interceptor_trampoline_build_for_invoke'
clang: error: linker command failed with exit code 1 (use -v to see invocation)

Can you point me in the right direction how to make building this library work? Thanks!

jmpews commented 5 years ago

try latest version ( v2 update done)