|
|
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.