19512fe85Sahl# 29512fe85Sahl# CDDL HEADER START 39512fe85Sahl# 49512fe85Sahl# The contents of this file are subject to the terms of the 59512fe85Sahl# Common Development and Distribution License (the "License"). 69512fe85Sahl# You may not use this file except in compliance with the License. 79512fe85Sahl# 89512fe85Sahl# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 99512fe85Sahl# or http://www.opensolaris.org/os/licensing. 109512fe85Sahl# See the License for the specific language governing permissions 119512fe85Sahl# and limitations under the License. 129512fe85Sahl# 139512fe85Sahl# When distributing Covered Code, include this CDDL HEADER in each 149512fe85Sahl# file and include the License file at usr/src/OPENSOLARIS.LICENSE. 159512fe85Sahl# If applicable, add the following below this CDDL HEADER, with the 169512fe85Sahl# fields enclosed by brackets "[]" replaced with your own identifying 179512fe85Sahl# information: Portions Copyright [yyyy] [name of copyright owner] 189512fe85Sahl# 199512fe85Sahl# CDDL HEADER END 209512fe85Sahl# 219512fe85Sahl 229512fe85Sahl# 239512fe85Sahl# Copyright 2006 Sun Microsystems, Inc. All rights reserved. 249512fe85Sahl# Use is subject to license terms. 259512fe85Sahl# 269512fe85Sahl 2723b5c241Stomeeif [ $# != 1 ]; then 2823b5c241Stomee echo expected one argument: '<'dtrace-path'>' 2923b5c241Stomee exit 2 3023b5c241Stomeefi 3123b5c241Stomee 3223b5c241Stomeedtrace=$1 3323b5c241Stomee 3423b5c241Stomee# 35*c090e5dfSBryan Cantrill# Some variants of nm may exec a 64-bit version of themselves. DTrace uses 36*c090e5dfSBryan Cantrill# libproc (which uses /proc) to find out when the traced process exits, but a 37*c090e5dfSBryan Cantrill# 32-bit process can't examine a 64-bit one with libproc. The LD_NOEXEC_64 38*c090e5dfSBryan Cantrill# variable prevents nm from re-execing itself. 3923b5c241Stomee# 40*c090e5dfSBryan CantrillLD_NOEXEC_64=nono $dtrace -F -s /dev/stdin -c 'nm /bin/ls' stat <<EOF 4123b5c241Stomee 429512fe85Sahlpid\$target::\$1:entry 439512fe85Sahl{ 449512fe85Sahl self->start = vtimestamp; 459512fe85Sahl} 469512fe85Sahl 479512fe85Sahlpid\$target:::entry 489512fe85Sahl/self->start/ 499512fe85Sahl{ 509512fe85Sahl trace(vtimestamp - self->start); 519512fe85Sahl} 529512fe85Sahl 539512fe85Sahlpid\$target:::return 549512fe85Sahl/self->start/ 559512fe85Sahl{ 569512fe85Sahl trace(vtimestamp - self->start); 579512fe85Sahl} 589512fe85Sahl 599512fe85Sahlpid\$target::\$1:return 609512fe85Sahl/self->start/ 619512fe85Sahl{ 629512fe85Sahl self->start = 0; 639512fe85Sahl exit(0); 649512fe85Sahl} 659512fe85Sahl 669512fe85Sahlsyscall::: 679512fe85Sahl/self->start/ 689512fe85Sahl{ 699512fe85Sahl trace(vtimestamp - self->start); 709512fe85Sahl} 719512fe85Sahl 729512fe85Sahlfbt::: 739512fe85Sahl/self->start/ 749512fe85Sahl{ 759512fe85Sahl trace(vtimestamp - self->start); 769512fe85Sahl} 779512fe85SahlEOF 78