#!/bin/bash set -eu RET=0 if ! [[ -f "${LIB}" ]]; then echo "Test library \"${LIB}\" does not exist" exit 99; fi if ! [[ -n "${NM}" ]]; then echo "NM environment variable not set" exit 99; fi AVAIL_FUNCS="$(${NM} -D --format=bsd --defined-only ${LIB} | awk '{print $3}')" REQ_FUNCS="$(cat ${ABI})" NEW_ABI=$(echo "$AVAIL_FUNCS" | while read func; do echo "$func" | grep -q "^_" && continue echo "${REQ_FUNCS}" | grep -q "^${func}$" && continue echo "$func" done) if [[ -n ${NEW_ABI} ]]; then echo "New ABI detected - If intentional, update ${ABI}." echo "${NEW_ABI}" RET=1; fi REMOVED_ABI=$(echo "${REQ_FUNCS}" | while read func; do echo "${AVAIL_FUNCS}" | grep -q "^${func}$" && continue echo "${func}" done) if [[ -n ${REMOVED_ABI} ]]; then echo "ABI break detected - required symbols no longer exported!" echo "${REMOVED_ABI}" RET=1 fi exit ${RET}