diff options
-rw-r--r-- | abi/.gitignore | 1 | ||||
-rw-r--r-- | abi/README.md | 20 | ||||
-rwxr-xr-x | abi/bootstrap | 62 |
3 files changed, 83 insertions, 0 deletions
diff --git a/abi/.gitignore b/abi/.gitignore new file mode 100644 index 0000000..3438f57 --- /dev/null +++ b/abi/.gitignore @@ -0,0 +1 @@ +abigail-* diff --git a/abi/README.md b/abi/README.md new file mode 100644 index 0000000..4b8544a --- /dev/null +++ b/abi/README.md @@ -0,0 +1,20 @@ +ABI Monitoring Utilities +======================== + +This directory contains scripts and utilities to compare, track and mitigate +changes to the kernel ABI. The comparison framework used is +[libabigail](https://sourceware.org/libabigail/), but this might change in the +future. Follow the instructions below to set up the current prerequisites. + +Set up the prerequisites +------------------------ +The script `bootstrap` will install the system prerequisites + - libxml2-dev + - elfutils + +It will then acquire the libabigail sources and build the required binaries. +At the very end the script will print instructions how to add the binaries to +the local `${PATH}` to be used by the remaining utilities. + +You can skip this step if your host system provides a suitable version of the +libabigail tooling including the binaries `abidw` and `abidiff`. diff --git a/abi/bootstrap b/abi/bootstrap new file mode 100755 index 0000000..30ea3e3 --- /dev/null +++ b/abi/bootstrap @@ -0,0 +1,62 @@ +#!/bin/bash -e + +# Copyright (C) 2019 The Android Open Source Project +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +ABIGAIL_VERSION=1.5 + +NUM_CORES=$(cat /proc/cpuinfo | grep -c proc) +BASE_DIR=$(readlink -f $(dirname $0)) +OUT_DIR="${BASE_DIR}/abigail-inst/${ABIGAIL_VERSION}" +LIBABIGAIL_SRC="${BASE_DIR}/abigail-src" + +# Check output dir. +if [ -e "${OUT_DIR}" ]; then + echo "WARN: ${OUT_DIR} exists. Press enter to continue or Ctrl-C to abort." + read +fi + +set -x + +# Install the dependencies. +sudo apt-get install libxml2-dev elfutils libdw-dev + +if [ ! -d "${LIBABIGAIL_SRC}" ]; then + git clone git://sourceware.org/git/libabigail.git "${LIBABIGAIL_SRC}" +else + git -C ${LIBABIGAIL_SRC} fetch +fi + +git -C ${LIBABIGAIL_SRC} checkout libabigail-${ABIGAIL_VERSION} + +# Build libabigail +pushd "${LIBABIGAIL_SRC}" + #git clean -dfx + autoreconf -i --force + mkdir -p build/ + pushd build/ + ../configure --prefix="${OUT_DIR}" --enable-cxx11=yes --disable-shared +# make -j${NUM_CORES} + make -j${NUM_CORES} install-exec + popd +popd + +set +x + +echo +echo "Note: Export following environment before running the executables:" +echo +echo "export PATH=\"${OUT_DIR}/bin:\${PATH}\"" +echo +echo |