From 012786aa1e9a28ee1e4c3a56ba9871f7b7bf7723 Mon Sep 17 00:00:00 2001 From: Bruce Momjian 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 8371cd6abc..1b0930ca35 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 | -- 2.40.0