Commit 33f49367 by Rainer Orth Committed by Rainer Orth

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
parent ca007d11
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> 2010-09-30 Michael Eager <eager@eagercon.com>
* config/cpu/microblaze/cpu_defines.h: New. Define * config/cpu/microblaze/cpu_defines.h: New. Define
......
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
...@@ -320,13 +320,13 @@ case "${host}" in ...@@ -320,13 +320,13 @@ case "${host}" in
;; ;;
esac esac
;; ;;
i?86-*-solaris2*)
abi_baseline_pair=i386-solaris2
;;
powerpc*-*-darwin*) powerpc*-*-darwin*)
port_specific_symbol_files="\$(srcdir)/../config/os/bsd/darwin/ppc-extra.ver" port_specific_symbol_files="\$(srcdir)/../config/os/bsd/darwin/ppc-extra.ver"
;; ;;
sparc*-*-solaris2*) *-*-solaris2.[89])
abi_baseline_pair=sparc-solaris2 abi_baseline_pair=solaris2.8
;;
*-*-solaris2.1[0-9])
abi_baseline_pair=solaris2.10
;; ;;
esac esac
...@@ -26,6 +26,14 @@ fi ...@@ -26,6 +26,14 @@ fi
lib=$1 lib=$1
output=$2 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 # 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 # default line truncation. -W is not supported and truncation did not occur
# by default before that point. # by default before that point.
...@@ -42,15 +50,53 @@ export LANG ...@@ -42,15 +50,53 @@ export LANG
tmp=extract.$$ tmp=extract.$$
${readelf} ${lib} |\ # Prefer pvs if found. Need to use nawk on Solaris 2 since Solaris 8/9 awk
sed -e 's/ \[<other>: [A-Fa-f0-9]*\] //' -e '/\.dynsym/,/^$/p;d' |\ # (oawk) cannot handle sub.
egrep -v ' (LOCAL|UND) ' |\ if [ -n ${pvs} ]; then
awk '{ if ($4 == "FUNC" || $4 == "NOTYPE") ${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; printf "%s:%s\n", $4, $8;
else if ($4 == "OBJECT") else if ($4 == "OBJECT")
printf "%s:%s:%s\n", $4, $3, $8; printf "%s:%s:%s\n", $4, $3, $8;
}' | sort | uniq > $tmp 2>&1 }' | sort | uniq > $tmp 2>&1
# else printf "Huh? What is %s?\n", $8; # else printf "Huh? What is %s?\n", $8;
fi
# I think we'll be doing some more with this file, but for now, dump. # I think we'll be doing some more with this file, but for now, dump.
......
...@@ -80,7 +80,7 @@ baseline_symbols: ...@@ -80,7 +80,7 @@ baseline_symbols:
fi; true) fi; true)
new-abi-baseline: new-abi-baseline:
-@$(mkinstalldirs) ${baseline_dir}${baseline_subdir} -@$(mkinstalldirs) ${baseline_dir}/${baseline_subdir}
-@(output=${baseline_dir}/${baseline_subdir}/baseline_symbols.txt; \ -@(output=${baseline_dir}/${baseline_subdir}/baseline_symbols.txt; \
if test -f $${output}; then \ if test -f $${output}; then \
output=$${output}.new; \ output=$${output}.new; \
......
...@@ -506,7 +506,7 @@ baseline_symbols: ...@@ -506,7 +506,7 @@ baseline_symbols:
fi; true) fi; true)
new-abi-baseline: new-abi-baseline:
-@$(mkinstalldirs) ${baseline_dir}${baseline_subdir} -@$(mkinstalldirs) ${baseline_dir}/${baseline_subdir}
-@(output=${baseline_dir}/${baseline_subdir}/baseline_symbols.txt; \ -@(output=${baseline_dir}/${baseline_subdir}/baseline_symbols.txt; \
if test -f $${output}; then \ if test -f $${output}; then \
output=$${output}.new; \ output=$${output}.new; \
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment