mirror of
https://sourceware.org/git/glibc.git
synced 2024-11-23 21:40:12 +00:00
16d2ea4c82
This patch introduces a test to make sure no function modifies the xmm/ymm registers. With the exception of the auditing functions. The test is probably too pessimistic. All code linked into ld.so is checked. Perhaps at some point the callgraph starting from _dl_fixup and _dl_profile_fixup is checked and we can start using faster SSE-using functions in parts of ld.so.
18 lines
481 B
Bash
Executable File
18 lines
481 B
Bash
Executable File
#! /bin/sh
|
|
objpfx="$1"
|
|
|
|
tmp=$(mktemp ${objpfx}tst-xmmymm.XXXXXX)
|
|
trap 'rm -f "$tmp"' 1 2 3 15
|
|
|
|
objdump -d "${objpfx}ld.so" |
|
|
awk 'BEGIN { last="" } /^[[:xdigit:]]* <[_[:alnum:]]*>:$/ { fct=substr($2, 2, length($2)-3) } /,%[xy]mm[[:digit:]]*$/ { if (last != fct) { print fct; last=fct} }' |
|
|
tee "$tmp"
|
|
|
|
echo "Functions which incorrectly modify xmm/ymm registers:"
|
|
err=1
|
|
egrep -vs '^_dl_runtime_profile$' "$tmp" || err=0
|
|
if test $err -eq 0; then echo "None"; fi
|
|
|
|
rm "$tmp"
|
|
exit $err
|