This is the mail archive of the
systemtap@sourceware.org
mailing list for the systemtap project.
[PATCH] fix semantic error: no entrypc found using probe .statement(*@file:line) constructs
- From: James Bottomley <James dot Bottomley at HansenPartnership dot com>
- To: systemtap at sourceware dot org
- Date: Wed, 09 Jul 2008 16:58:31 -0500
- Subject: [PATCH] fix semantic error: no entrypc found using probe .statement(*@file:line) constructs
- Dkim-signature: v=1; a=rsa-sha256; c=simple/simple; d=hansenpartnership.com; s=2007; t=1215640712; bh=OJfmKSxDHX9AdNA9JEUHPiT9HiUeV+rCNJlWnPkJxE g=; l=1228; h=Subject:From:To:Content-Type:Date:Message-Id: Mime-Version:Content-Transfer-Encoding; b=XD7PixOqabMC3+SI6hc8/xKF Csv3G0Y5TJJJnKZQAgOHlRZPEbNsxG7rySeYBcFDDGA/RqzYFNP9b56Iuf3HS00sue5 nFAmsV02ecPSp0auWr30xZqjp8cxF9ePdUB0YhG1dUhHkztCUUWfQres2yZHpMVhI1Y U4TdJhkgX+cNs=
- Dkim-signature: v=1; a=rsa-sha256; c=simple/simple; d=hansenpartnership.com; s=2007; t=1215640711; bh=OJfmKSxDHX9AdNA9JEUHPiT9HiUeV+rCNJlWnPkJxE g=; l=1228; h=Subject:From:To:Content-Type:Date:Message-Id: Mime-Version:Content-Transfer-Encoding; b=HaPtoywWHx6n6fZUfEEt6i85 DwxUg04hTmSfOBNHOtBw2gqBNQ4hrsST0z8iSrZyO2Z8q7TeA9o4FppvwUrdQTluIkF QM9ZeV6J78kMhQ0W5GqlTm3m3vtYsbNvaqNxmE2eBWZwWCVvytuzcNq69VhkC2409wr wtjtAOoyopoig=
At the moment, you can't specify
probe module("scsi_mod").statement(*@drivers/scsi/scsi_lib.c:1443)
because the compiler will fail with the above semantic error on the
function scsi_end_bidi_request. It seems looking through the dwarf that
this function is fully inlined and thus has no entrypc to catalogue.
The solution therefore seems to simply return DWARF_CB_OK when we find
such functions and continue cataloguing all the ones that do actually
have non-inline versions.
Signed-off-by: James Bottomley <James.Bottomley@HansenPartnership.com>
---
diff --git a/tapsets.cxx b/tapsets.cxx
index cdc14d6..1cd3b46 100644
--- a/tapsets.cxx
+++ b/tapsets.cxx
@@ -3560,8 +3560,8 @@ query_dwarf_func (Dwarf_Die * func, void * arg)
if (q->dw.function_entrypc (&entrypc))
q->filtered_functions[entrypc] = func;
else
- throw semantic_error("no entrypc found for function '"
- + q->dw.function_name + "'");
+ /* this function must be fully inlined, just ignore it */
+ return DWARF_CB_OK;
}
else if (q->has_statement_num)
{