aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBruce Momjian <bruce@momjian.us>2008-03-18 22:45:11 +0000
committerBruce Momjian <bruce@momjian.us>2008-03-18 22:45:11 +0000
commit61d416e3b2b67138dc2c51d954b321c6db15e30f (patch)
tree5e4f4babf889f31ac6cfbb7eb06f15ab1448fb65
parent0d49838df6f54c5b49d40a8cf396ea799bd3c4d9 (diff)
downloadpostgresql-61d416e3b2b67138dc2c51d954b321c6db15e30f.tar.gz
postgresql-61d416e3b2b67138dc2c51d954b321c6db15e30f.zip
Add Linux support to find_typedefs, with help from Alvaro.
-rwxr-xr-xsrc/tools/find_typedef18
1 files changed, 13 insertions, 5 deletions
diff --git a/src/tools/find_typedef b/src/tools/find_typedef
index 1b0930ca358..26715777a3d 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.8 2007/12/21 21:02:41 momjian Exp $
+# $PostgreSQL: pgsql/src/tools/find_typedef,v 1.9 2008/03/18 22:45:11 momjian Exp $
# This script attempts to find all typedef's in the postgres binaries
# by using 'nm' to report all typedef debugging symbols.
@@ -8,7 +8,7 @@
# For this program to work, you must have compiled all binaries with
# debugging symbols.
#
-# This is run on BSD/OS 4.0, so you may need to make changes.
+# This is run on BSD/OS 4.0 or Linux, so you may need to make changes.
#
# Ignore the nm errors about a file not being a binary file.
#
@@ -37,10 +37,18 @@ fi
for DIR
do
- objdump --stabs "$DIR"/* |
- awk ' $2 == "LSYM" && $7 ~ /:[tT]/ {sub(":.*", "", $7); print $7}' |
- grep -v ' ' # some typedefs have spaces, remove them
+ if [ `objdump -W 2>&1 | wc -l` -eq 1 ]
+ then # Linux
+ # unfortunately the Linux version doesn't show unreferenced typedefs
+ objdump -W "$DIR"/* |
+ egrep -A3 '(DW_TAG_typedef|DW_TAG_structure_type|DW_TAG_union_type)' |
+ awk ' $2 == "DW_AT_name" {print $NF}'
+ else # BSD/OS
+ objdump --stabs "$DIR"/* |
+ awk ' $2 == "LSYM" && $7 ~ /:[tT]/ {sub(":.*", "", $7); print $7}'
+ fi
done |
+grep -v ' ' | # some typedefs have spaces, remove them
sort |
uniq |
# these are used both for typedefs and variable names