From: Martin Cermak Date: Thu, 9 Jul 2020 07:19:01 +0000 (+0200) Subject: Tapset and testsuite updates against @cast() change 00ee19ff03 X-Git-Tag: release-4.4~107 X-Git-Url: https://sourceware.org/git/?a=commitdiff_plain;h=f1a9bb064d11319a7eca4f4233c9edcc4a03af7e;p=systemtap.git Tapset and testsuite updates against @cast() change 00ee19ff03 Commit 00ee19ff030f665df7e087a579f39105256a0253 changed how @cast() operations work and they no longer default to using the kernel debuginfo for type information. Need to include kernel as location for this information for the @cast() rather than just assuming a default. These are respective tapset and testsuite minor updates. --- diff --git a/tapset/linux/networking.stp b/tapset/linux/networking.stp index 69843a798..0b52cbc50 100644 --- a/tapset/linux/networking.stp +++ b/tapset/linux/networking.stp @@ -69,7 +69,7 @@ /* A function that returns the device name given the net_device struct */ function get_netdev_name:string (addr:long) { - return kernel_string(@cast(addr, "net_device")->name) + return kernel_string(@cast(addr, "net_device", "kernel")->name) } /** diff --git a/tapset/linux/scsi.stp b/tapset/linux/scsi.stp index 35779421b..5359fe817 100644 --- a/tapset/linux/scsi.stp +++ b/tapset/linux/scsi.stp @@ -179,8 +179,8 @@ probe scsi.iocompleted function timer_pending:long(timer:long) { - return (@choose_defined(@cast(timer, "timer_list")->entry->next, - @cast(timer, "timer_list")->base) != 0) + return (@choose_defined(@cast(timer, "timer_list", "kernel")->entry->next, + @cast(timer, "timer_list", "kernel")->base) != 0) } function scsi_timer_pending:long(cmd:long) diff --git a/testsuite/buildok/pretty.stp b/testsuite/buildok/pretty.stp index 85c9cd930..a2fc78126 100755 --- a/testsuite/buildok/pretty.stp +++ b/testsuite/buildok/pretty.stp @@ -6,14 +6,14 @@ global i = 1 # pretty-printing with @cast probe begin { t = task_current() - log(@cast(t, "task_struct")->fs$) - log(@cast(t, "task_struct")->fs$$) - log(@cast(t, "task_struct")->comm$) - log(@cast(t, "task_struct")->comm$$) - log(@cast(t, "task_struct")->comm[0]$) - log(@cast(t, "task_struct")->comm[0]$$) - log(@cast(t, "task_struct")->comm[i]$) - log(@cast(t, "task_struct")->comm[i]$$) + log(@cast(t, "task_struct", "kernel")->fs$) + log(@cast(t, "task_struct", "kernel")->fs$$) + log(@cast(t, "task_struct", "kernel")->comm$) + log(@cast(t, "task_struct", "kernel")->comm$$) + log(@cast(t, "task_struct", "kernel")->comm[0]$) + log(@cast(t, "task_struct", "kernel")->comm[0]$$) + log(@cast(t, "task_struct", "kernel")->comm[i]$) + log(@cast(t, "task_struct", "kernel")->comm[i]$$) } # pretty-printing in dwarf kernel context diff --git a/testsuite/semok/cast.stp b/testsuite/semok/cast.stp index d72763c16..fe78e36c0 100755 --- a/testsuite/semok/cast.stp +++ b/testsuite/semok/cast.stp @@ -2,7 +2,7 @@ probe begin { // basic @cast test, with and without specifying kernel - println(@cast(0, "task_struct")->tgid) + println(@cast(0, "task_struct", "kernel")->tgid) println(@cast(0, "task_struct", "kernel")->tgid) // check module-search paths @@ -25,5 +25,5 @@ probe begin { @cast(0, "task_struct", "no_such_module")->tgid // PR11556: we should be able to treat the initial pointer like an array too - println(@cast(0, "task_struct")[42]->tgid) + println(@cast(0, "task_struct", "kernel")[42]->tgid) } diff --git a/testsuite/semok/pretty.stp b/testsuite/semok/pretty.stp index 0211d86dd..25490e7c9 100755 --- a/testsuite/semok/pretty.stp +++ b/testsuite/semok/pretty.stp @@ -12,16 +12,16 @@ global i = 1 # pretty-printing with @cast probe begin { t = task_current() - log(@cast(t, "task_struct")$) - log(@cast(t, "task_struct")$$) - log(@cast(t, "task_struct")->fs$) - log(@cast(t, "task_struct")->fs$$) - log(@cast(t, "task_struct")->comm$) - log(@cast(t, "task_struct")->comm$$) - log(@cast(t, "task_struct")->comm[0]$) - log(@cast(t, "task_struct")->comm[0]$$) - log(@cast(t, "task_struct")->comm[i]$) - log(@cast(t, "task_struct")->comm[i]$$) + log(@cast(t, "task_struct", "kernel")$) + log(@cast(t, "task_struct", "kernel")$$) + log(@cast(t, "task_struct", "kernel")->fs$) + log(@cast(t, "task_struct", "kernel")->fs$$) + log(@cast(t, "task_struct", "kernel")->comm$) + log(@cast(t, "task_struct", "kernel")->comm$$) + log(@cast(t, "task_struct", "kernel")->comm[0]$) + log(@cast(t, "task_struct", "kernel")->comm[0]$$) + log(@cast(t, "task_struct", "kernel")->comm[i]$) + log(@cast(t, "task_struct", "kernel")->comm[i]$$) } # pretty-printing in dwarf kernel context diff --git a/testsuite/semok/sizeof.stp b/testsuite/semok/sizeof.stp index 8e35e295b..a5a6bbbf8 100755 --- a/testsuite/semok/sizeof.stp +++ b/testsuite/semok/sizeof.stp @@ -1,7 +1,7 @@ #! stap -p2 probe begin { - println("task_struct: ", @cast_sizeof("task_struct")) + # println("task_struct: ", @cast_sizeof("task_struct")) println("task_struct: ", @cast_module_sizeof("kernel", "task_struct")) println("task_struct: ", @cast_module_sizeof("kernel", "task_struct")) println("FILE: ", @cast_module_sizeof("", "FILE")) diff --git a/testsuite/semok/thirtyeight.stp b/testsuite/semok/thirtyeight.stp index 15189b776..50187959f 100755 --- a/testsuite/semok/thirtyeight.stp +++ b/testsuite/semok/thirtyeight.stp @@ -7,4 +7,4 @@ probe kernel.function("do_sys_open") { println(@defined($mode) ? 1 : $nosuchvar) } probe kernel.trace("sched_switch")? { println(@defined($next->pid) ? 1 : $nosuchvar) } probe procfs.write { println(@defined($value) ? 1 : $nosuchvar) } -probe begin { println(@defined(@cast(0, "task_struct")->pid) ? 1 : $nosuchvar) } +probe begin { println(@defined(@cast(0, "task_struct", "kernel")->pid) ? 1 : $nosuchvar) } diff --git a/testsuite/semok/thirtysix.stp b/testsuite/semok/thirtysix.stp index 14f10c187..0adae14aa 100755 --- a/testsuite/semok/thirtysix.stp +++ b/testsuite/semok/thirtysix.stp @@ -17,17 +17,17 @@ probe begin,end,error,never { println(@defined($nosuchvar)?$nosuchvar:0) } # inv probe timer.s(1),timer.jiffies(1) { println(@defined($nosuchvar)?$nosuchvar:0) } # invalid probe timer.profile { println(@defined($nosuchvar)?$nosuchvar:0) } # invalid -probe begin { println(@defined(@cast(0, "task_struct")->foo)?$nosuchvar:0) } # invalid -probe begin { println(@defined(@cast(0, "task_struct")->pid)?1:$nosuchvar) } # valid -probe kernel.function("do_sys_open") { println(@defined(@cast(0, "task_struct")->foo)?$nosuchvar:0) } # invalid -probe kernel.function("do_sys_open") { println(@defined(@cast(0, "task_struct")->pid)?1:$nosuchvar) } # valid +probe begin { println(@defined(@cast(0, "task_struct", "kernel")->foo)?$nosuchvar:0) } # invalid +probe begin { println(@defined(@cast(0, "task_struct", "kernel")->pid)?1:$nosuchvar) } # valid +probe kernel.function("do_sys_open") { println(@defined(@cast(0, "task_struct", "kernel")->foo)?$nosuchvar:0) } # invalid +probe kernel.function("do_sys_open") { println(@defined(@cast(0, "task_struct", "kernel")->pid)?1:$nosuchvar) } # valid -function foo1() { println(@defined(@cast(0, "task_struct")->foo)?$nosuchvar:0) } # invalid -function foo2() { println(@defined(@cast(0, "task_struct")->pid)?1:$nosuchvar) } # valid +function foo1() { println(@defined(@cast(0, "task_struct", "kernel")->foo)?$nosuchvar:0) } # invalid +function foo2() { println(@defined(@cast(0, "task_struct", "kernel")->pid)?1:$nosuchvar) } # valid probe begin { foo1(); foo2(); } # PR11598: support @defined(&...) -probe begin { println(@defined(@cast(0, "task_struct")->rcu)?$nosuchvar:0) } # invalid -probe begin { println(@defined(&@cast(0, "task_struct")->rcu)?1:$nosuchvar) } # valid +probe begin { println(@defined(@cast(0, "task_struct", "kernel")->rcu)?$nosuchvar:0) } # invalid +probe begin { println(@defined(&@cast(0, "task_struct", "kernel")->rcu)?1:$nosuchvar) } # valid probe kernel.function("release_task") { println(@defined($p->rcu)?$nosuchvar:0) } # invalid probe kernel.function("release_task") { println(@defined(&$p->rcu)?1:$nosuchvar) } # valid diff --git a/testsuite/systemtap.base/bitfield.stp b/testsuite/systemtap.base/bitfield.stp index 020810825..b5f7b89a7 100644 --- a/testsuite/systemtap.base/bitfield.stp +++ b/testsuite/systemtap.base/bitfield.stp @@ -11,8 +11,8 @@ function check:long(ack:long, urg:long) { ptr = get_ptr() /* set the bits with cast */ - @cast(ptr, "tcphdr")->ack = ack - @cast(ptr, "tcphdr")->urg = urg + @cast(ptr, "tcphdr", "kernel")->ack = ack + @cast(ptr, "tcphdr", "kernel")->urg = urg /* check that reading with embedded-C is ok */ real_ack = get_ack() @@ -20,8 +20,8 @@ function check:long(ack:long, urg:long) { errors = (ack != real_ack) + (urg != real_urg) /* check that reading with a cast is ok */ - cast_ack = @cast(ptr, "tcphdr")->ack - cast_urg = @cast(ptr, "tcphdr")->urg + cast_ack = @cast(ptr, "tcphdr", "kernel")->ack + cast_urg = @cast(ptr, "tcphdr", "kernel")->urg errors += (ack != cast_ack) + (urg != cast_urg) if (errors) diff --git a/testsuite/systemtap.base/target_set.stp b/testsuite/systemtap.base/target_set.stp index ad4dca68e..7c458cb1b 100644 --- a/testsuite/systemtap.base/target_set.stp +++ b/testsuite/systemtap.base/target_set.stp @@ -19,13 +19,13 @@ probe begin probe syscall.nanosleep { if (target_set_pid(pid()) - && user_long(&@cast(req_uaddr, "struct timespec")->tv_sec) == $1) + && user_long(&@cast(req_uaddr, "struct timespec", "kernel")->tv_sec) == $1) target_set_report() } probe syscall.compat_nanosleep ? { if (target_set_pid(pid()) - && user_long(&@cast(req_uaddr, "struct compat_timespec")->tv_sec) == $1) + && user_long(&@cast(req_uaddr, "struct compat_timespec", "kernel")->tv_sec) == $1) target_set_report() } diff --git a/testsuite/systemtap.context/usymbols.exp b/testsuite/systemtap.context/usymbols.exp index f53c1cd97..e12f067c9 100644 --- a/testsuite/systemtap.context/usymbols.exp +++ b/testsuite/systemtap.context/usymbols.exp @@ -20,7 +20,7 @@ set testscript { probe syscall.rt_sigaction { if (pid() == target() && execname() == "%s") { // Note user address. - handler = user_long(&@cast(act_uaddr, "struct sigaction")->sa_handler); + handler = user_long(&@cast(act_uaddr, "struct sigaction", "kernel")->sa_handler); try { printf("handler: %%s (%%s)\n", usymname(handler), umodname(handler)); } catch { @@ -31,9 +31,9 @@ set testscript { probe syscall.rt_sigaction32 ? { if (pid() == target() && execname() == "%s") { // Note user address. - handler = user_long(@defined(@cast(0, "compat_sigaction")->sa_handler) - ? &@cast(act_uaddr, "compat_sigaction")->sa_handler - : &@cast(act_uaddr, "sigaction32")->sa_handler); + handler = user_long(@defined(@cast(0, "compat_sigaction", "kernel")->sa_handler) + ? &@cast(act_uaddr, "compat_sigaction", "kernel")->sa_handler + : &@cast(act_uaddr, "sigaction32", "kernel")->sa_handler); try { printf("handler: %%s (%%s)\n", usymname(handler), umodname(handler)); } catch {