mirror of git://gcc.gnu.org/git/gcc.git
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:
parent
ca007d11d6
commit
33f4936701
|
@ -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
|
@ -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; \
|
||||
|
|
Loading…
Reference in New Issue