From 012786aa1e9a28ee1e4c3a56ba9871f7b7bf7723 Mon Sep 17 00:00:00 2001
From: Bruce Momjian <bruce@momjian.us>
Date: Fri, 21 Dec 2007 21:02:41 +0000
Subject: [PATCH] Update find_typedefs to handle simple 'typedef X' cases, per
 request from Tom.

---
 src/tools/find_typedef | 24 ++++++++++++++++++------
 1 file changed, 18 insertions(+), 6 deletions(-)

diff --git a/src/tools/find_typedef b/src/tools/find_typedef
index 8371cd6abc6..1b0930ca358 100755
--- a/src/tools/find_typedef
+++ b/src/tools/find_typedef
@@ -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.
@@ -12,8 +12,23 @@
 # 
 # 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 |
-- 
GitLab