[Bug translator/21173] odd translator behavior with overloaded functions

dsmith at redhat dot com sourceware-bugzilla@sourceware.org
Mon Feb 20 18:41:00 GMT 2017


https://sourceware.org/bugzilla/show_bug.cgi?id=21173

--- Comment #2 from David Smith <dsmith at redhat dot com> ---
If I comment out the call to __inode_vfsmount(), I get the expected error about
a type mismatch:

====
# cat ../src/test.stp
function foo:long(a:long, b:long)
{
        return (a + b)
}

function foo:string(a:long, b:string, c:long)
{
        return sprintf("%s %d", b, a + c)
}

probe begin
{
#       println(__inode_vfsmount(1))
        println(foo(1, 2, 3))
}
# stap -p2 ../src/test.stp
WARNING: Eliding unused function 'foo': identifier 'foo' at
../src/test.stp:1:10
 source: function foo:long(a:long, b:long)
                  ^
semantic error: type mismatch: expected long but found string: number '2' at
:14:17
        source:         println(foo(1, 2, 3))
                                       ^

Pass 2: analysis failed.  [man error::pass2]
====

If I comment out the call to foo(), the script gets passes the semantic pass
with no problems (other than warning about unused function 'foo').

====
# cat ../src/test.stp
function foo:long(a:long, b:long)
{
        return (a + b)
}

function foo:string(a:long, b:string, c:long)
{
        return sprintf("%s %d", b, a + c)
}

probe begin
{
        println(__inode_vfsmount(1))
#       println(foo(1, 2, 3))
}
# stap -p2 ../src/test.stp > /dev/null
WARNING: Eliding unused function 'foo': identifier 'foo' at
../src/test.stp:1:10
 source: function foo:long(a:long, b:long)
                  ^
Number of similar warning messages suppressed: 1.
Rerun with -v to see them.
====

Somehow it is the combination of the two that causes the odd behavior.

-- 
You are receiving this mail because:
You are the assignee for the bug.


More information about the Systemtap mailing list