|
1 | 1 | #!/bin/sh
|
2 | 2 |
|
3 |
| -# $PostgreSQL: pgsql/src/tools/find_typedef,v 1.7 2007/12/2114:20:36 momjian Exp $ |
| 3 | +# $PostgreSQL: pgsql/src/tools/find_typedef,v 1.8 2007/12/2121:02:41 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.
|
|
12 | 12 | #
|
13 | 13 | # Ignore the nm errors about a file not being a binary file.
|
14 | 14 | #
|
15 |
| -#Remember, debugging symbols are your friends. |
| 15 | +#It gets typedefs by reading "STABS": |
16 | 16 | #
|
| 17 | +# http://www.informatik.uni-frankfurt.de/doc/texi/stabs_toc.html |
| 18 | +# |
| 19 | +# objdump: |
| 20 | +# -G, --stabs Display (in raw form) any STABS info in the file |
| 21 | +# |
| 22 | +# --stabs |
| 23 | +# Display the contents of the .stab, .stab.index, and |
| 24 | +# .stab.excl sections from an ELF file. This is only |
| 25 | +# useful on systems (such as Solaris 2.0) in which |
| 26 | +# .stab debugging symbol-table entries are carried in |
| 27 | +# an ELF section. In most other file formats, debug- |
| 28 | +# ging symbol-table entries are interleaved with |
| 29 | +# linkage symbols, and are visible in the --syms out- |
| 30 | +# put. |
| 31 | + |
17 | 32 |
|
18 | 33 | if ["$#"-eq 0-o!-d"$1" ]
|
19 | 34 | thenecho"Usage:$0 postgres_binary_directory [...]"1>&2
|
|
23 | 38 | for DIR
|
24 | 39 | do
|
25 | 40 | objdump --stabs"$DIR"/*|
|
26 |
| -grep"LSYM"| |
27 |
| -awk'{print $7}'| |
28 |
| -grep':t'| |
29 |
| -sed's/^\([^:]*\).*$/\1/'| |
| 41 | +awk' $2 == "LSYM" && $7 ~ /:[tT]/ {sub(":.*", "", $7); print $7}'| |
30 | 42 | grep -v''# some typedefs have spaces, remove them
|
31 | 43 | done|
|
32 | 44 | sort|
|
|