mirror of
https://git.postgresql.org/git/postgresql.git
synced 2024-09-13 20:29:46 +02:00
da6c4f6ca8
We weren't terribly consistent about whether to call Apple's OS "OS X" or "Mac OS X", and the former is probably confusing to people who aren't Apple users. Now that Apple has rebranded it "macOS", follow their lead to establish a consistent naming pattern. Also, avoid the use of the ancient project name "Darwin", except as the port code name which does not seem desirable to change. (In short, this patch touches documentation and comments, but no actual code.) I didn't touch contrib/start-scripts/osx/, either. I suspect those are obsolete and due for a rewrite, anyway. I dithered about whether to apply this edit to old release notes, but those were responsible for quite a lot of the inconsistencies, so I ended up changing them too. Anyway, Apple's being ahistorical about this, so why shouldn't we be?
54 lines
1.8 KiB
Bash
Executable File
54 lines
1.8 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
# src/tools/find_typedef
|
|
|
|
# This script attempts to find all typedef's in the postgres binaries
|
|
# by using 'objdump' or local equivalent to print typedef debugging symbols.
|
|
# We need this because pgindent needs a list of typedef names.
|
|
#
|
|
# For this program to work, you must have compiled all code with
|
|
# debugging symbols.
|
|
#
|
|
# We intentionally examine all files in the targeted directories so as to
|
|
# find both .o files and executables. Therefore, ignore error messages about
|
|
# unsuitable files being fed to objdump.
|
|
#
|
|
# This is known to work on Linux and on some BSDen, including macOS.
|
|
#
|
|
# Caution: on the platforms we use, this only prints typedefs that are used
|
|
# to declare at least one variable or struct field. If you have say
|
|
# "typedef struct foo { ... } foo;", and then the structure is only ever
|
|
# referenced as "struct foo", "foo" will not be reported as a typedef,
|
|
# causing pgindent to indent the typedef definition oddly. This is not a
|
|
# huge problem, since by definition there's just the one misindented line.
|
|
#
|
|
# We get typedefs by reading "STABS":
|
|
# http://www.informatik.uni-frankfurt.de/doc/texi/stabs_toc.html
|
|
|
|
|
|
if [ "$#" -eq 0 -o ! -d "$1" ]
|
|
then echo "Usage: $0 postgres_binary_directory [...]" 1>&2
|
|
exit 1
|
|
fi
|
|
|
|
for DIR
|
|
do # if objdump -W is recognized, only one line of error should appear
|
|
if [ `objdump -W 2>&1 | wc -l` -eq 1 ]
|
|
then # Linux
|
|
objdump -W "$DIR"/* |
|
|
egrep -A3 '\(DW_TAG_typedef\)' |
|
|
awk ' $2 == "DW_AT_name" {print $NF}'
|
|
elif [ `readelf -w 2>&1 | wc -l` -gt 1 ]
|
|
then # FreeBSD, similar output to Linux
|
|
readelf -w "$DIR"/* |
|
|
egrep -A3 '\(DW_TAG_typedef\)' |
|
|
awk ' $1 == "DW_AT_name" {print $NF}'
|
|
fi
|
|
done |
|
|
grep -v ' ' | # some typedefs have spaces, remove them
|
|
sort |
|
|
uniq |
|
|
# these are used both for typedefs and variable names
|
|
# so do not include them
|
|
egrep -v '^(date|interval|timestamp|ANY)$'
|