陈凯翔 via llvm-dev
2019-Jul-23 08:08 UTC
[llvm-dev] llvm CFI seems not work well when compiling for a shared object and errors were reported during link time
When I try to protect both main binary and shared objects using llvm cfi, I firstly build a CFI protected shared object as blow: clang++ -fsanitize=cfi -fvisibility=hidden -flto -fPIC -shared ./sharedobjsrc.cpp -o libsharedobj.so Then I can assume "Calls inside any instrumented DSO are fully protected." In the next step, I try to compile the main.cpp, and dynamically link main.o with libsharedobj.so. By no means can I succeed with command like that: clang++ -fsanitize=cfi -fvisibility=hidden -flto -fsanitize-cfi-cross-dso ./main.cpp ./libsharedobj.so -o target -Wl,-rpath,./ report like: ld-temp.o:function main.cfi: error: undefined reference to 'functionname()’ returns to screen Even if I trace the instructions line by line according to https://github.com/llvm-mirror/compiler-rt/tree/master/test/cfi/cross-dso, I failed to manage it. You can reproduce my operations with my attachment. -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20190723/5a93f18f/attachment.html> -------------- next part -------------- A non-text attachment was scrubbed... Name: attachment.zip Type: application/zip Size: 2197 bytes Desc: not available URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20190723/5a93f18f/attachment.zip>