Here is a script that I wrote to compare the symbols provided by two kernel-headers (2.4) packages. It is just rough at this stage but I plan to put it into my build process to warn of this kind of problem in the future. Please feel free to use/mangle/update at will.
-- Horms
#!/bin/bash ###################################################################### # kernel_symbol_check December 2004 # Horms [EMAIL PROTECTED] # # kernel_symbol_check # Check the symbols in two kernel-headers Debian packages and # repot if they do not match and a diff of the symbols. # Probably only works with 2.4 kernels # # Copyright (C) 2004 Horms # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License as # published by the Free Software Foundation; either version 2 of the # License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA # 02111-1307 USA ###################################################################### NAME="kernel_symbol_check" set -e clean () { rm -rf "$TMP"; } TMP="$(mktemp -d)" trap clean EXIT if [ $# -ne 2 ]; then echo "usage $NAME deb1 deb2" 1>&2 echo " where deb1 and deb2 are the full path to " 1>&2 echo " (different) 2.4 kernel header packages" 1>&2 echo 1>&2 echo " e.g. $NAME \\" 1>&2 echo " kernel-headers-2.4.27-1-686_2.4.27-2_i386.deb \\" 1>&2 echo " kernel-headers-2.4.27-1-686_2.4.27-6_i386.deb" 1>&2 echo 1>&2 exit 1 fi PKG1="$1" PKG2="$2" PKG1_FILE="${PKG1##*/}" PKG1_BASE="${PKG1_FILE%%_*}" PKG2_FILE="${PKG2##*/}" PKG2_BASE="${PKG2_FILE%%_*}" rm -rf "$TMP/1/" "$TMP/2/" mkdir "$TMP/1/" "$TMP/2/" dpkg -x "$PKG1" "$TMP/1/" dpkg -x "$PKG2" "$TMP/2/" find "$TMP/1/usr/src/$PKG1_BASE/include" -name "*.ver" -type f | \ xargs cat | sort > "$TMP/1.sym" find "$TMP/2/usr/src/$PKG2_BASE/include" -name "*.ver" -type f | \ xargs cat | sort > "$TMP/2.sym" if diff -u "$TMP/1.sym" "$TMP/2.sym"; then echo "No Changes" STATUS=0 else echo '!!!Symbol Changes, as above. Incompatible ABI!!!' STATUS=1 fi exit $STATUS