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>
* 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
;;
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
......@@ -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.
......
......@@ -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; \
......
......@@ -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; \
......
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