You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
71 lines
1.5 KiB
71 lines
1.5 KiB
#! /bin/sh
|
|
|
|
nm="${0%mkexpfile}nm"
|
|
showwith=
|
|
expfile="ld.aix.exports.$$"
|
|
srcobjs=
|
|
|
|
# /bin/sort does not allow TMPDIR to be longer than 85 characters
|
|
test ${#TMPDIR} -le 85 || TMPDIR=/tmp export TMPDIR
|
|
|
|
while test $# -gt 0
|
|
do
|
|
arg=$1
|
|
shift
|
|
|
|
case ${arg} in
|
|
--) for arg in "$@"
|
|
do
|
|
srcobjs="${srcobjs} '${arg}'"
|
|
done
|
|
break
|
|
;;
|
|
--show-with=*) showwith="${arg#--show-with=}" ;;
|
|
-o) expfile="${1}"; shift ;;
|
|
-o*) expfile="${arg#-o}"; ;;
|
|
*) srcobjs="${srcobjs} '${arg}'" ;;
|
|
esac
|
|
done
|
|
|
|
/bin/rm -f "${expfile}" || exit 1
|
|
|
|
if ! type "${nm}" >/dev/null 2>&1
|
|
then
|
|
case ${nm} in
|
|
*-nm) nm=${nm##*/} ;; # use "powerpc-ibm-aix7.1.0.0-nm" from PATH
|
|
*/nm|nm) nm=/usr/ccs/bin/nm ;; # native anyway
|
|
esac
|
|
type "${nm}" >/dev/null || exit 1 # let 'type' yell when necessary
|
|
fi
|
|
|
|
if "${nm}" -V 2>&1 | /bin/grep 'GNU' >/dev/null
|
|
then
|
|
eval "${nm}" -Bpg ${srcobjs} |
|
|
/bin/awk '{
|
|
if ((($2 == "T") || ($2 == "D") || ($2 == "B") || ($2 == "W")) && (substr($3,1,1) != ".")) {
|
|
if ($2 == "W") {
|
|
print $3 " weak"
|
|
} else {
|
|
print $3
|
|
}
|
|
}
|
|
}' |
|
|
/bin/sort -u > "${expfile}" || exit 1
|
|
else
|
|
eval "${nm}" -PCpgl ${srcobjs} |
|
|
/bin/awk '{
|
|
if ((($2 == "T") || ($2 == "D") || ($2 == "B") || ($2 == "W") || ($2 == "V") || ($2 == "Z")) && (substr($1,1,1) != ".")) {
|
|
if (($2 == "W") || ($2 == "V") || ($2 == "Z")) {
|
|
print $1 " weak"
|
|
} else {
|
|
print $1
|
|
}
|
|
}
|
|
}' |
|
|
/bin/sort -u > "${expfile}" || exit 1
|
|
fi
|
|
|
|
echo "${showwith}${expfile}"
|
|
|
|
exit 0
|