]> granicus.if.org Git - postgresql/commitdiff
Update find_typedefs to handle simple 'typedef X' cases, per request
authorBruce Momjian <bruce@momjian.us>
Fri, 21 Dec 2007 21:02:41 +0000 (21:02 +0000)
committerBruce Momjian <bruce@momjian.us>
Fri, 21 Dec 2007 21:02:41 +0000 (21:02 +0000)
from Tom.

src/tools/find_typedef

index 8371cd6abc66e07961bb397810c6f0bafacf3905..1b0930ca358b921d99673aafc6a512e26749c6f0 100755 (executable)
@@ -1,6 +1,6 @@
 #!/bin/sh
 
-# $PostgreSQL: pgsql/src/tools/find_typedef,v 1.7 2007/12/21 14:20:36 momjian Exp $
+# $PostgreSQL: pgsql/src/tools/find_typedef,v 1.8 2007/12/21 21:02:41 momjian Exp $
 
 # This script attempts to find all typedef's in the postgres binaries
 # by using 'nm' to report all typedef debugging symbols.
 # 
 # Ignore the nm errors about a file not being a binary file.
 #
-# Remember, debugging symbols are your friends.
+# It gets typedefs by reading "STABS":
 #
+#    http://www.informatik.uni-frankfurt.de/doc/texi/stabs_toc.html
+#
+#    objdump:
+#       -G, --stabs  Display (in raw form) any STABS info in the file
+#
+#       --stabs
+#         Display the contents of the .stab, .stab.index, and
+#         .stab.excl sections from an ELF file.  This is only
+#         useful on systems (such as Solaris  2.0)  in  which
+#         .stab debugging symbol-table entries are carried in
+#         an ELF section.  In most other file formats, debug-
+#         ging  symbol-table  entries  are  interleaved  with
+#         linkage symbols, and are visible in the --syms out-
+#         put.
+
 
 if [ "$#" -eq 0 -o ! -d "$1" ]
 then   echo "Usage:  $0 postgres_binary_directory [...]" 1>&2
@@ -23,10 +38,7 @@ fi
 for DIR
 do
        objdump --stabs "$DIR"/* |
-       grep "LSYM" |
-       awk '{print $7}' |
-       grep ':t' |
-       sed 's/^\([^:]*\).*$/\1/' |
+       awk ' $2 == "LSYM" && $7 ~ /:[tT]/ {sub(":.*", "", $7); print $7}' |
        grep -v ' ' # some typedefs have spaces, remove them
 done |
 sort |