From nobody Thu Feb 23 17:19:08 2023 X-Original-To: freebsd-dtrace@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4PN0BG3zhYz3sFvJ for ; Thu, 23 Feb 2023 17:19:18 +0000 (UTC) (envelope-from christos@freebsd.org) Received: from margiolis.net (mail.margiolis.net [95.179.159.8]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA512) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 4PN0BF1K8fz3mNn; Thu, 23 Feb 2023 17:19:17 +0000 (UTC) (envelope-from christos@freebsd.org) Authentication-Results: mx1.freebsd.org; dkim=pass header.d=margiolis.net header.s=default header.b=YDYtqf4h; spf=softfail (mx1.freebsd.org: 95.179.159.8 is neither permitted nor denied by domain of christos@freebsd.org) smtp.mailfrom=christos@freebsd.org; dmarc=none DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; s=default; bh=N9qQCqvyQg06 NQBZTZYXYX5twD9niUqr5891GywEI1c=; h=subject:cc:to:from:date; d=margiolis.net; b=YDYtqf4hXp3gFLdNJvuAfArPtfZDw8G3bY3XZu97BAbsLXFkatv XUdezTjZz4A5A8dt9jPCEeZ1YN+ZZ7Y4WLSGQMqSF84+UTouX13aY9El2b61S1viWQ8le8 JDnZanq5Yvf7LM0E7NAYDeAmf8SuvgD5GSnIWV/0ZCp/zt3dYA= Received: from tpad (host-84-205-228-1.cpe.syzefxis.ote.gr [84.205.228.1]) by margiolis.net (OpenSMTPD) with ESMTPSA id 93176a56 (TLSv1.3:AEAD-AES256-GCM-SHA384:256:NO); Thu, 23 Feb 2023 17:19:08 +0000 (UTC) Date: Thu, 23 Feb 2023 19:19:08 +0200 From: Christos Margiolis To: status-updates@freebsdfoundation.org Cc: freebsd-dtrace@freebsd.org, markj@freebsd.org Subject: [Development report #2] Improve the kinst DTrace provider Message-ID: <20230223171908.aiuuckj5uq4na23o@tpad> List-Id: A discussion list for developers working on DTrace in FreeBSD List-Archive: https://lists.freebsd.org/archives/freebsd-dtrace List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-freebsd-dtrace@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline X-Spamd-Result: default: False [-2.80 / 15.00]; NEURAL_HAM_MEDIUM(-1.00)[-1.000]; NEURAL_HAM_LONG(-1.00)[-1.000]; NEURAL_HAM_SHORT(-1.00)[-1.000]; MID_RHS_NOT_FQDN(0.50)[]; R_DKIM_ALLOW(-0.20)[margiolis.net:s=default]; MIME_GOOD(-0.10)[text/plain]; MLMMJ_DEST(0.00)[freebsd-dtrace@freebsd.org]; RCVD_VIA_SMTP_AUTH(0.00)[]; FROM_EQ_ENVFROM(0.00)[]; DKIM_TRACE(0.00)[margiolis.net:+]; ASN(0.00)[asn:20473, ipnet:95.179.144.0/20, country:US]; MIME_TRACE(0.00)[0:+]; TO_MATCH_ENVRCPT_SOME(0.00)[]; DMARC_NA(0.00)[freebsd.org]; RCVD_COUNT_TWO(0.00)[2]; FREEFALL_USER(0.00)[christos]; ARC_NA(0.00)[]; R_SPF_SOFTFAIL(0.00)[~all]; FROM_HAS_DN(0.00)[]; TO_DN_NONE(0.00)[]; RCPT_COUNT_THREE(0.00)[3]; RCVD_TLS_ALL(0.00)[] X-Rspamd-Queue-Id: 4PN0BF1K8fz3mNn X-Spamd-Bar: -- X-ThisMailContainsUnwantedMimeParts: N The past few days I've been trying figure out how dt_sugar.c in libdtrace applies transformations to D scripts. I intend on extending dt_sugar to use parts of the code I've written about in my last development report [1] to detect inline calls. For any kinst probe of the forms: kinst::func:entry kinst::func:return If isn't an inline call, the probe will be transformed to an FBT one. For example, `kinst::func:entry` will become `fbt::func:entry`. This will be done to avoid porting FBT code to kinst. If is an inline call, the D syntax will be transformed to create separate kinst probes for each inline call. For example: kinst::foo:entry If foo() is called from functions bar() and baz() at offsets 10 and 20 respectively, dt_sugar will transform `kinst::foo:entry` to: kinst::bar:10 kinst::baz:20 Christos [1] https://git.sr.ht/~crm/inlinecall