| #!/bin/bash |
| # Verifies that a set of object files (or archives of object files) doesn't |
| # define any symbol twice. Used to check for ODR violation between files |
| # compiled with different compiler options. |
| # |
| # Usage: test_exports [object_files...] |
| |
| if [ $# -eq 0 ]; then |
| echo "${0##*/}: list of object files expected" |
| fi |
| |
| for f in "$@"; do |
| nm -g -P "$f" | awk '$2 ~ /[uvwA-Z]/ && $3 != "" { print $1 }' || exit 1 |
| done | sort | uniq -d | grep '^' |
| |
| if [ $? -eq 0 ]; then |
| echo The above-mentioned symbols are duplicates |
| echo FAIL |
| exit 1 |
| fi |
| |
| echo PASS |