|
1 | 1 | #!/bin/sh |
2 | 2 |
|
3 | | -# $PostgreSQL: pgsql/src/tools/find_typedef,v 1.8 2007/12/21 21:02:41 momjian Exp $ |
| 3 | +# $PostgreSQL: pgsql/src/tools/find_typedef,v 1.9 2008/03/18 22:45:11 momjian Exp $ |
4 | 4 |
|
5 | 5 | # This script attempts to find all typedef's in the postgres binaries |
6 | 6 | # by using 'nm' to report all typedef debugging symbols. |
7 | 7 | # |
8 | 8 | # For this program to work, you must have compiled all binaries with |
9 | 9 | # debugging symbols. |
10 | 10 | # |
11 | | -# This is run on BSD/OS 4.0, so you may need to make changes. |
| 11 | +# This is run on BSD/OS 4.0 or Linux, so you may need to make changes. |
12 | 12 | # |
13 | 13 | # Ignore the nm errors about a file not being a binary file. |
14 | 14 | # |
|
37 | 37 |
|
38 | 38 | for DIR |
39 | 39 | do |
40 | | -objdump --stabs"$DIR"/*| |
41 | | -awk' $2 == "LSYM" && $7 ~ /:[tT]/ {sub(":.*", "", $7); print $7}'| |
42 | | -grep -v''# some typedefs have spaces, remove them |
| 40 | +if [`objdump -W2>&1| wc -l`-eq 1 ] |
| 41 | +then# Linux |
| 42 | +# unfortunately the Linux version doesn't show unreferenced typedefs |
| 43 | +objdump -W"$DIR"/*| |
| 44 | +egrep -A3'(DW_TAG_typedef|DW_TAG_structure_type|DW_TAG_union_type)'| |
| 45 | +awk' $2 == "DW_AT_name" {print $NF}' |
| 46 | +else# BSD/OS |
| 47 | +objdump --stabs"$DIR"/*| |
| 48 | +awk' $2 == "LSYM" && $7 ~ /:[tT]/ {sub(":.*", "", $7); print $7}' |
| 49 | +fi |
43 | 50 | done| |
| 51 | +grep -v''|# some typedefs have spaces, remove them |
44 | 52 | sort| |
45 | 53 | uniq| |
46 | 54 | # these are used both for typedefs and variable names |
|