|
|
@@ -15,30 +15,28 @@ nm -g $libc 2>/dev/null | fgrep -q inet_pton || exit 254
|
|
|
|
|
|
trace_libc_inet_pton_backtrace() {
|
|
|
idx=0
|
|
|
- expected[0]="PING.*bytes"
|
|
|
- expected[1]="64 bytes from ::1.*"
|
|
|
- expected[2]=".*ping statistics.*"
|
|
|
- expected[3]=".*packets transmitted.*"
|
|
|
- expected[4]="rtt min.*"
|
|
|
- expected[5]="[0-9]+\.[0-9]+[[:space:]]+probe_libc:inet_pton:\([[:xdigit:]]+\)"
|
|
|
- expected[6]=".*inet_pton[[:space:]]\($libc|inlined\)$"
|
|
|
+ expected[0]="ping[][0-9 \.:]+probe_libc:inet_pton: \([[:xdigit:]]+\)"
|
|
|
+ expected[1]=".*inet_pton[[:space:]]\($libc\)$"
|
|
|
case "$(uname -m)" in
|
|
|
s390x)
|
|
|
eventattr='call-graph=dwarf'
|
|
|
- expected[7]="gaih_inet.*[[:space:]]\($libc|inlined\)$"
|
|
|
- expected[8]="__GI_getaddrinfo[[:space:]]\($libc|inlined\)$"
|
|
|
- expected[9]="main[[:space:]]\(.*/bin/ping.*\)$"
|
|
|
- expected[10]="__libc_start_main[[:space:]]\($libc\)$"
|
|
|
- expected[11]="_start[[:space:]]\(.*/bin/ping.*\)$"
|
|
|
+ expected[2]="gaih_inet.*[[:space:]]\($libc|inlined\)$"
|
|
|
+ expected[3]="__GI_getaddrinfo[[:space:]]\($libc|inlined\)$"
|
|
|
+ expected[4]="main[[:space:]]\(.*/bin/ping.*\)$"
|
|
|
+ expected[5]="__libc_start_main[[:space:]]\($libc\)$"
|
|
|
+ expected[6]="_start[[:space:]]\(.*/bin/ping.*\)$"
|
|
|
;;
|
|
|
*)
|
|
|
eventattr='max-stack=3'
|
|
|
- expected[7]="getaddrinfo[[:space:]]\($libc\)$"
|
|
|
- expected[8]=".*\(.*/bin/ping.*\)$"
|
|
|
+ expected[2]="getaddrinfo[[:space:]]\($libc\)$"
|
|
|
+ expected[3]=".*\(.*/bin/ping.*\)$"
|
|
|
;;
|
|
|
esac
|
|
|
|
|
|
- perf trace --no-syscalls -e probe_libc:inet_pton/$eventattr/ ping -6 -c 1 ::1 2>&1 | grep -v ^$ | while read line ; do
|
|
|
+ file=`mktemp -u /tmp/perf.data.XXX`
|
|
|
+
|
|
|
+ perf record -e probe_libc:inet_pton/$eventattr/ -o $file ping -6 -c 1 ::1 > /dev/null 2>&1
|
|
|
+ perf script -i $file | while read line ; do
|
|
|
echo $line
|
|
|
echo "$line" | egrep -q "${expected[$idx]}"
|
|
|
if [ $? -ne 0 ] ; then
|
|
|
@@ -48,6 +46,8 @@ trace_libc_inet_pton_backtrace() {
|
|
|
let idx+=1
|
|
|
[ -z "${expected[$idx]}" ] && break
|
|
|
done
|
|
|
+
|
|
|
+ rm -f $file
|
|
|
}
|
|
|
|
|
|
# Check for IPv6 interface existence
|