|
|
1.1 ! root 1: #!/bin/sh - ! 2: # ! 3: # Copyright (c) 1990 The Regents of the University of California. ! 4: # All rights reserved. ! 5: # ! 6: # Redistribution and use in source and binary forms are permitted ! 7: # provided that the above copyright notice and this paragraph are ! 8: # duplicated in all such forms and that any documentation, ! 9: # advertising materials, and other materials related to such ! 10: # distribution and use acknowledge that the software was developed ! 11: # by the University of California, Berkeley. The name of the ! 12: # University may not be used to endorse or promote products derived ! 13: # from this software without specific prior written permission. ! 14: # THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR ! 15: # IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED ! 16: # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. ! 17: # ! 18: # @(#)lorder.sh 5.2 (Berkeley) 3/20/90 ! 19: # ! 20: PATH=/bin:/usr/bin ! 21: export PATH ! 22: ! 23: # only one argument is a special case, just output the name twice ! 24: case $# in ! 25: 0) ! 26: echo "usage: lorder file ..."; ! 27: exit ;; ! 28: 1) ! 29: echo $1 $1; ! 30: exit ;; ! 31: esac ! 32: ! 33: # temporary files ! 34: R=/tmp/_reference_$$ ! 35: S=/tmp/_symbol_$$ ! 36: ! 37: # remove temporary files on HUP, INT, QUIT, PIPE, TERM ! 38: trap "rm -f $R $S; exit 1" 1 2 3 13 15 ! 39: ! 40: # if the line ends in a colon, assume it's the first occurrence of a new ! 41: # object file. Echo it twice, just to make sure it gets into the output. ! 42: # ! 43: # if the line has " T " or " D " it's a globally defined symbol, put it ! 44: # into the symbol file. ! 45: # ! 46: # if the line has " U " it's a globally undefined symbol, put it into ! 47: # the reference file. ! 48: nm -go $* | sed " ! 49: /:$/ { ! 50: s/:// ! 51: s/.*/& &/ ! 52: p ! 53: d ! 54: } ! 55: / [TD] / { ! 56: s/:.* [TD]// ! 57: w $S ! 58: d ! 59: } ! 60: / U / { ! 61: s/:.* U// ! 62: w $R ! 63: } ! 64: d ! 65: " ! 66: ! 67: # sort symbols and references on the first field (the symbol) ! 68: # join on that field, and print out the file names. ! 69: sort +1 $R -o $R ! 70: sort +1 $S -o $S ! 71: join -j 2 -o 1.1 2.1 $R $S ! 72: rm -f $R $S
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.