# table_by_pac_llvm **Repository Path**: abignail/table_by_pac_llvm ## Basic Information - **Project Name**: table_by_pac_llvm - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2024-10-30 - **Last Updated**: 2024-10-30 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # This repo includes two directories: (1) llvm-project : the clang compiler with newly added instructions for memory security. (2) evaluation : test cases and POCs files. # How to start ## Dependencies git cmake python-dev libncurses5-dev swig libedit-dev libxml2-dev build-essential gcc-7-plugin-dev clang-6 libclang-6-dev lld-6 ## Download Toolchains for Cross-Compilation wget https://releases.linaro.org/components/toolchain/binaries/7.3-2018.05/aarch64-linux-gnu/sysroot-glibc-linaro-2.25-2018.05-aarch64-linux-gnu.tar.xz tar xJf sysroot-glibc-linaro-2.25-2018.05-aarch64-linux-gnu.tar.xz export path_sysroot-glibc-linaro-2.25-2018.05-aarch64-linux-gnu={sysroot_path} wget https://releases.linaro.org/components/toolchain/binaries/7.3-2018.05/aarch64-linux-gnu/gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu.tar.xz tar xJf gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu.tar.xz export path_gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu={gcc_path} ## download (git clone) the project ## Build Instructions mkdir build && cd build cmake -G Ninja \-DCMAKE_INSTALL_PREFIX="./" \ -DCMAKE_BUILD_TYPE=Debug \ -DBUILD_SHARED_LIBS=On \ -DLLVM_TARGETS_TO_BUILD=AArch64 \ -DLLVM_BUILD_TOOLS=On \ -DLLVM_BUILD_TESTS=Off \ -DLLVM_BUILD_EXAMPLES=Off \ -DLLVM_BUILD_DOCS=Off \ -DLLVM_INCLUDE_EXAMPLES=Off \ -DLLVM_ENABLE_LTO=Off \ -DLLVM_ENABLE_DOXYGEN=Off \ -DLLVM_ENABLE_RTTI=Off \ -DLLVM_ENABLE_PROJECTS="clang;libcxx;libcxxabi" \ -DLLVM_DEFAULT_TARGET_TRIPLE="aarch64-unknown-linux-gnu" \ -DDEFAULT_SYSROOT="${path_sysroot-glibc-linaro-2.25-2018.05-aarch64-linux-gnu}" \ "../llvm" ninja -j $(nproc) wait a while for compile completely. # test cd malloc_test chmod +x test.sh ./test.sh We can see these newly added security instructions in the LLVM IR file (`.ll`) and objdump file (`llvm_objdump.log`).