summaryrefslogtreecommitdiff
path: root/mpeix/nm
diff options
context:
space:
mode:
Diffstat (limited to 'mpeix/nm')
-rw-r--r--mpeix/nm33
1 files changed, 33 insertions, 0 deletions
diff --git a/mpeix/nm b/mpeix/nm
new file mode 100644
index 0000000000..b2eb58d9d6
--- /dev/null
+++ b/mpeix/nm
@@ -0,0 +1,33 @@
+#!/bin/sh
+
+# MPE doesn't have a native nm, and the gcc nm isn't quite fully functional.
+#
+# If Perl Configure is calling us, then use the native linker to extract the
+# symbol table and reformat it into something nm-like.
+#
+# Else it must be gcc calling us during the final link phase, so call gcc nm.
+
+if [ "$1" != "-configperl" ]; then
+ # Oops, the caller must be expecting gcc nm. Give it to them.
+ /usr/local/bin/nm $@
+ exit $?
+fi
+
+case $2 in
+ *.a) LIST="LISTRL RL=$2;DATA;ENTRYSYM" ;;
+ *.sl) LIST="LISTXL XL=$2;DATA;ENTRYSYM" ;;
+ *) exit 0 ;;
+esac
+
+# I wanted to pipe this into awk, but it fell victim to a known pipe/streams
+# bug on my multiprocessor machine.
+
+callci xeq linkedit.pub.sys \"$LIST\" >/tmp/nm.$$
+
+awk '\
+ / data univ / { printf "%-20s|%10s|%-6s|%-7s|%s\n",$1,$5,"extern","data","?"} \
+ / entry univ / { printf "%-20s|%10s|%-6s|%-7s|%s\n",$1,$7,"extern","entry","?"}' /tmp/nm.$$
+
+rm -f /tmp/nm.$$
+
+exit 0