summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'sys-devel/native-cctools/files/aix-2/mkexpfile')
-rw-r--r--sys-devel/native-cctools/files/aix-2/mkexpfile70
1 files changed, 70 insertions, 0 deletions
diff --git a/sys-devel/native-cctools/files/aix-2/mkexpfile b/sys-devel/native-cctools/files/aix-2/mkexpfile
new file mode 100644
index 00000000000..4e79e4647b0
--- /dev/null
+++ b/sys-devel/native-cctools/files/aix-2/mkexpfile
@@ -0,0 +1,70 @@
+#! /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