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