This is the mail archive of the
systemtap@sourceware.org
mailing list for the systemtap project.
[Bug translator/18462] New: macro deprecation
- From: "mcermak at redhat dot com" <sourceware-bugzilla at sourceware dot org>
- To: systemtap at sourceware dot org
- Date: Fri, 29 May 2015 08:06:38 +0000
- Subject: [Bug translator/18462] New: macro deprecation
- Auto-submitted: auto-generated
https://sourceware.org/bugzilla/show_bug.cgi?id=18462
Bug ID: 18462
Summary: macro deprecation
Product: systemtap
Version: unspecified
Status: NEW
Severity: normal
Priority: P2
Component: translator
Assignee: systemtap at sourceware dot org
Reporter: mcermak at redhat dot com
Target Milestone: ---
To-be-deprecated tapset functions or probes are being wrapped in %( systemtap_v
<= "1.3" %? function foo() {} %)
Attempt to do this with library macro results in "parse error: library macro
file contains non-@define construct" in pass 1, where no conditionals are being
evaluated.
Following is an attempt to solve the issue uncleanly using intentional syntax
error:
> =======
> @define __int32_compat(arg)
> %(
> %( systemtap_v <= "2.5" %?
> %( CONFIG_64BIT == "y" %?
> (%{ /* pure */ _stp_is_compat_task() %} ? __int32(@arg) : @arg)
> %:
> (__int32(@arg))
> %)
> %:
> *** ERROR ***
> %)
> %)
> =======
This appears to be syntactically acceptable, but here, systemtap_v <=
"whatever" always effectively evaluates as true (but e.g. "aa" <= "a" would
evaluate as false). Not sure whether it's a bug or feature, but certainly not a
way to go.
So I think we're missing mechanism for macro deprecation.
--
You are receiving this mail because:
You are the assignee for the bug.