#!/bin/sh ############################################################################### # # Check liblzma.map for certain types of errors # # Author: Lasse Collin # # This file has been put into the public domain. # You can do whatever you want with this file. # ############################################################################### LC_ALL=C export LC_ALL STATUS=0 cd "$(dirname "$0")" # Get the list of symbols that aren't defined in liblzma.map. SYMS=$(sed -n 's/^extern LZMA_API([^)]*) \([a-z0-9_]*\)(.*$/\1;/p' \ api/lzma/*.h \ | sort \ | grep -Fve "$(sed '/[{}:*]/d;/^$/d;s/^ //' liblzma.map)") # Check that there are no old alpha or beta versions listed. VER=$(cd ../.. && sh build-aux/version.sh) NAMES= case $VER in *alpha | *beta) NAMES=$(sed -n 's/^.*XZ_\([^ ]*\)\(alpha\|beta\) .*$/\1\2/p' \ liblzma.map | grep -Fv "$VER") ;; esac # Check for duplicate lines. It can catch missing dependencies. DUPS=$(sort liblzma.map | sed '/^$/d;/^global:$/d' | uniq -d) # Print error messages if needed. if test -n "$SYMS$NAMES$DUPS"; then echo echo 'validate_map.sh found problems from liblzma.map:' echo if test -n "$SYMS"; then echo 'liblzma.map lacks the following symbols:' echo "$SYMS" echo fi if test -n "$NAMES"; then echo 'Obsolete alpha or beta version names:' echo "$NAMES" echo fi if test -n "$DUPS"; then echo 'Duplicate lines:' echo "$DUPS" echo fi STATUS=1 fi # Exit status is 1 if problems were found, 0 otherwise. exit "$STATUS"