|
|
1.1 root 1: # COMMON LORDER (modified)
2: #
3: #ident "@(#)lorder:mc68/lorder.sh 1.1"
4: #
5: trap "rm -f /tmp/$$sym?ef; exit" 0 1 2 13 15
6: case $# in
7: 0) echo usage: mc68lorder file ...
8: exit ;;
9: 1) case $1 in
10: *.o) set $1 $1
11: esac
12: esac
13: # The following sed script is commented here.
14: # The egrep pipe insures that we only have lines
15: # that contain file names and the external
16: # declarations associated with each file.
17: # The first two parts of the sed script put the pattern
18: # (in this case the file name) into the hold space
19: # and creates the "filename filename" lines and
20: # writes them out. The first part is for .o files,
21: # the second is for .o's in archives.
22: # The next 3 sections of code are exactly alike but
23: # they handle different external symbols, namely the
24: # symbols that are defined in the text section, data section
25: # or symbols that are referenced but not defined in this file.
26: # A line containing the symbol (from the pattern space) and
27: # the file it is referenced in (from the hold space) is
28: # put into the pattern space.
29: # If its text or data it is written out to the symbol definition
30: # (symdef) file, otherwise it was referenced but not declared
31: # in this file so it is written out to the symbol referenced
32: # (symref) file.
33: #
34: $DMD/bin/mc68nm -e $* | egrep "\\.o:|\\.o]:|\\|extern" |
35: sed '
36: /\.o:$/{
37: s/://
38: s/^.* //
39: h
40: s/.*/& &/
41: p
42: d
43: }
44: /\.o]:$/{
45: s/]://
46: s/^.*\[//
47: h
48: s/.*/& &/
49: p
50: d
51: }
52: /|\.text/{
53: s/ *|.*//
54: G
55: s/\n/ /
56: w '/tmp/$$symdef'
57: d
58: }
59: /|\.data/{
60: s/ *|.*//
61: G
62: s/\n/ /
63: w '/tmp/$$symdef'
64: d
65: }
66: s/ *|.*//
67: G
68: s/\n/ /
69: w '/tmp/$$symref'
70: d
71: '
72: sort /tmp/$$symdef -o /tmp/$$symdef
73: sort /tmp/$$symref -o /tmp/$$symref
74: join /tmp/$$symref /tmp/$$symdef | sed 's/[^ ]* *//'
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.