Improve ABI check tool on macOS

This commit is contained in:
yhirose
2025-02-12 12:49:20 -05:00
parent 39a64fb4e7
commit b6ab8435d7
2 changed files with 36 additions and 8 deletions

View File

@@ -13,12 +13,12 @@ OLD_VARS=_old_vars.txt
NEW_VARS=_new_vars.txt
# Extract function symbols from the old and new libraries
nm -C --defined-only $OLD_LIB | c++filt | awk '$2 ~ /[TW]/ {print substr($0, index($0,$3))}' | sort > $OLD_FUNCS
nm -C --defined-only $NEW_LIB | c++filt | awk '$2 ~ /[TW]/ {print substr($0, index($0,$3))}' | sort > $NEW_FUNCS
nm -C --defined-only $OLD_LIB | c++filt | awk '$2 ~ /[TWt]/ {print substr($0, index($0,$3))}' | sort > $OLD_FUNCS
nm -C --defined-only $NEW_LIB | c++filt | awk '$2 ~ /[TWt]/ {print substr($0, index($0,$3))}' | sort > $NEW_FUNCS
# Extract variable symbols from the old and new libraries
nm -C --defined-only $OLD_LIB | c++filt | awk '$2 ~ /[BDG]/ {print substr($0, index($0,$3))}' | sort > $OLD_VARS
nm -C --defined-only $NEW_LIB | c++filt | awk '$2 ~ /[BDG]/ {print substr($0, index($0,$3))}' | sort > $NEW_VARS
nm -C --defined-only $OLD_LIB | c++filt | awk '$2 ~ /[BDGVs]/ {print substr($0, index($0,$3))}' | sort > $OLD_VARS
nm -C --defined-only $NEW_LIB | c++filt | awk '$2 ~ /[BDGVs]/ {print substr($0, index($0,$3))}' | sort > $NEW_VARS
# Initialize error flag and message
error_flag=0
@@ -28,21 +28,21 @@ error_message=""
removed_funcs=$(comm -23 $OLD_FUNCS $NEW_FUNCS)
if [ -n "$removed_funcs" ]; then
error_flag=1
error_message+="[Removed Functions]\n$removed_funcs\n"
error_message+="[Removed Functions]\n$removed_funcs\n\n"
fi
# Check for removed variable symbols
removed_vars=$(comm -23 $OLD_VARS $NEW_VARS)
if [ -n "$removed_vars" ]; then
error_flag=1
error_message+="[Removed Variables]\n$removed_vars\n"
error_message+="[Removed Variables]\n$removed_vars\n\n"
fi
# Check for added variable symbols
added_vars=$(comm -13 $OLD_VARS $NEW_VARS)
if [ -n "$added_vars" ]; then
error_flag=1
error_message+="[Added Variables]\n$added_vars\n"
error_message+="[Added Variables]\n$added_vars\n\n"
fi
# Remove temporary files
@@ -50,7 +50,7 @@ rm -f $NEW_FUNCS $OLD_FUNCS $OLD_VARS $NEW_VARS
# Display error messages if any
if [ "$error_flag" -eq 1 ]; then
echo -e "$error_message"
echo -en "$error_message"
echo "ABI compatibility check failed."
exit 1
fi