extract_symvers: Use pvs if present.

* scripts/extract_symvers: Use pvs if present.
	* config/abi/post/solaris2.8/baseline_symbols.txt: New file.
	* config/abi/post/solaris2.8/sparcv9/baseline_symbols.txt: Likewise.
	* config/abi/post/solaris2.10/amd64/baseline_symbols.txt: Likewise.
	* config/abi/post/solaris2.10/baseline_symbols.txt: Likewise.
	* config/abi/post/solaris2.10/sparcv9/baseline_symbols.txt: Likewise.
	* configure.host (i?86-*-solaris2*): Remove.
	(sparc*-*-solaris2*): Remove.
	(*-*-solaris2.[89]): Use solaris2.8 baseline.
	(*-*-solaris2.1[0-9]): Use solaris2.10 baseline.
	* testsuite/Makefile.am (new-abi-baseline): Add missing /.
	* testsuite/Makefile.in: Regenerate.

From-SVN: r164879
This commit is contained in:
Rainer Orth 2010-10-01 11:58:21 +00:00 committed by Rainer Orth
parent ca007d11d6
commit 33f4936701
10 changed files with 17616 additions and 16 deletions

View File

@ -1,3 +1,18 @@
2010-10-01 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
* scripts/extract_symvers: Use pvs if present.
* config/abi/post/solaris2.8/baseline_symbols.txt: New file.
* config/abi/post/solaris2.8/sparcv9/baseline_symbols.txt: Likewise.
* config/abi/post/solaris2.10/amd64/baseline_symbols.txt: Likewise.
* config/abi/post/solaris2.10/baseline_symbols.txt: Likewise.
* config/abi/post/solaris2.10/sparcv9/baseline_symbols.txt: Likewise.
* configure.host (i?86-*-solaris2*): Remove.
(sparc*-*-solaris2*): Remove.
(*-*-solaris2.[89]): Use solaris2.8 baseline.
(*-*-solaris2.1[0-9]): Use solaris2.10 baseline.
* testsuite/Makefile.am (new-abi-baseline): Add missing /.
* testsuite/Makefile.in: Regenerate.
2010-09-30 Michael Eager <eager@eagercon.com>
* config/cpu/microblaze/cpu_defines.h: New. Define

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -320,13 +320,13 @@ case "${host}" in
;;
esac
;;
i?86-*-solaris2*)
abi_baseline_pair=i386-solaris2
;;
powerpc*-*-darwin*)
port_specific_symbol_files="\$(srcdir)/../config/os/bsd/darwin/ppc-extra.ver"
;;
sparc*-*-solaris2*)
abi_baseline_pair=sparc-solaris2
*-*-solaris2.[89])
abi_baseline_pair=solaris2.8
;;
*-*-solaris2.1[0-9])
abi_baseline_pair=solaris2.10
;;
esac

View File

@ -26,6 +26,14 @@ fi
lib=$1
output=$2
# Sun ld doesn't record symbol versions in .dynsym entries and they cannot
# easily be extracted from readelf --versions output, so use pvs instead.
if type pvs 2>&1 | grep 'not found' > /dev/null; then
:
else
pvs="pvs -dsvo"
fi
# GNU binutils, somewhere after version 2.11.2, requires -W/--wide to avoid
# default line truncation. -W is not supported and truncation did not occur
# by default before that point.
@ -42,15 +50,53 @@ export LANG
tmp=extract.$$
${readelf} ${lib} |\
sed -e 's/ \[<other>: [A-Fa-f0-9]*\] //' -e '/\.dynsym/,/^$/p;d' |\
egrep -v ' (LOCAL|UND) ' |\
awk '{ if ($4 == "FUNC" || $4 == "NOTYPE")
printf "%s:%s\n", $4, $8;
else if ($4 == "OBJECT")
printf "%s:%s:%s\n", $4, $3, $8;
}' | sort | uniq > $tmp 2>&1
# else printf "Huh? What is %s?\n", $8;
# Prefer pvs if found. Need to use nawk on Solaris 2 since Solaris 8/9 awk
# (oawk) cannot handle sub.
if [ -n ${pvs} ]; then
${pvs} ${lib} | \
nawk '# Remove colon separator from version field, trailing semicolon.
{
sub (/:$/, "", $3);
sub (/;$/, "");
}
# Record base version. The [BASE] field was only added in Solaris 11,
# so simply use the first record instead.
NR == 1 {
basever = $3;
next;
}
# Ignore version dependencies.
$4 ~ /\{.*\}/ {
next;
}
NF == 4 {
if ($3 == $4 || $3 == basever)
# Emit versions or symbols bound to base versions as objects.
printf "OBJECT:0:%s\n", $4;
else
# Everything else without a size field is a function.
printf "FUNC:%s@@%s\n", $4, $3;
next;
}
# Emit objects.
NF == 5 {
# Strip parens from object size.
sub (/^\(/, "", $5);
sub (/\)$/, "", $5);
printf "OBJECT:%s:%s@@%s\n", $5, $4, $3;
next;
}' | sort | uniq > $tmp 2>&1
else
${readelf} ${lib} |\
sed -e 's/ \[<other>: [A-Fa-f0-9]*\] //' -e '/\.dynsym/,/^$/p;d' |\
egrep -v ' (LOCAL|UND) ' |\
awk '{ if ($4 == "FUNC" || $4 == "NOTYPE")
printf "%s:%s\n", $4, $8;
else if ($4 == "OBJECT")
printf "%s:%s:%s\n", $4, $3, $8;
}' | sort | uniq > $tmp 2>&1
# else printf "Huh? What is %s?\n", $8;
fi
# I think we'll be doing some more with this file, but for now, dump.

View File

@ -80,7 +80,7 @@ baseline_symbols:
fi; true)
new-abi-baseline:
-@$(mkinstalldirs) ${baseline_dir}${baseline_subdir}
-@$(mkinstalldirs) ${baseline_dir}/${baseline_subdir}
-@(output=${baseline_dir}/${baseline_subdir}/baseline_symbols.txt; \
if test -f $${output}; then \
output=$${output}.new; \

View File

@ -506,7 +506,7 @@ baseline_symbols:
fi; true)
new-abi-baseline:
-@$(mkinstalldirs) ${baseline_dir}${baseline_subdir}
-@$(mkinstalldirs) ${baseline_dir}/${baseline_subdir}
-@(output=${baseline_dir}/${baseline_subdir}/baseline_symbols.txt; \
if test -f $${output}; then \
output=$${output}.new; \