Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # stap -vvv traceio2.stp 0xfb00
- Systemtap translator/driver (version 3.1/0.159, commit release-3.0-416-g100bca3f1249 + changes)
- Copyright (C) 2005-2016 Red Hat, Inc. and others
- This is free software; see the source for copying conditions.
- tested kernel versions: 2.6.18 ... 4.10-rc0
- enabled features: PYTHON2 NLS
- Created temporary directory "/tmp/stapKaDNR5"
- Session arch: x86_64 release: 4.4.35-2-pve
- Parsed kernel "/lib/modules/4.4.35-2-pve/build/.config", containing 6620 tuples
- Parsed kernel "/lib/modules/4.4.35-2-pve/build/Module.symvers", containing 8609 vmlinux exports
- Kernel symbol table /lib/modules/4.4.35-2-pve/build/System.map unavailable, (No such file or directory)
- Parsed kernel "/boot/System.map-4.4.35-2-pve", containing 42939 symbols
- Processing tapset "/usr/local/share/systemtap/tapset/linux/context.stpm"
- Processing tapset "/usr/local/share/systemtap/tapset/linux/json.stpm"
- Processing tapset "/usr/local/share/systemtap/tapset/linux/nfs_proc.stpm"
- Processing tapset "/usr/local/share/systemtap/tapset/linux/syscalls.stpm"
- Processing tapset "/usr/local/share/systemtap/tapset/linux/task.stpm"
- Searched for library macro files: "/usr/local/share/systemtap/tapset/linux", found: 5, processed: 5
- Processing tapset "/usr/local/share/systemtap/tapset/choose_defined.stpm"
- Processing tapset "/usr/local/share/systemtap/tapset/container_of.stpm"
- Processing tapset "/usr/local/share/systemtap/tapset/macros.stpm"
- Processing tapset "/usr/local/share/systemtap/tapset/offsetof.stpm"
- Processing tapset "/usr/local/share/systemtap/tapset/print_stats.stpm"
- Processing tapset "/usr/local/share/systemtap/tapset/private30.stpm"
- Processing tapset "/usr/local/share/systemtap/tapset/sizeof.stpm"
- Processing tapset "/usr/local/share/systemtap/tapset/try_assign.stpm"
- Processing tapset "/usr/local/share/systemtap/tapset/type_defined.stpm"
- Searched for library macro files: "/usr/local/share/systemtap/tapset", found: 9, processed: 9
- Processing tapset "/usr/local/share/systemtap/tapset/linux/x86_64/aux_syscalls.stp"
- Processing tapset "/usr/local/share/systemtap/tapset/linux/x86_64/nd_syscalls.stp"
- Processing tapset "/usr/local/share/systemtap/tapset/linux/x86_64/syscall_num.stp"
- Processing tapset "/usr/local/share/systemtap/tapset/linux/x86_64/syscalls.stp"
- Searched: "/usr/local/share/systemtap/tapset/linux/x86_64", found: 4, processed: 4
- Processing tapset "/usr/local/share/systemtap/tapset/linux/atomic.stp"
- Processing tapset "/usr/local/share/systemtap/tapset/linux/aux_syscalls.stp"
- Processing tapset "/usr/local/share/systemtap/tapset/linux/context-caller.stp"
- Processing tapset "/usr/local/share/systemtap/tapset/linux/context-envvar.stp"
- Processing tapset "/usr/local/share/systemtap/tapset/linux/context-symbols.stp"
- Processing tapset "/usr/local/share/systemtap/tapset/linux/context-unwind.stp"
- Processing tapset "/usr/local/share/systemtap/tapset/linux/context.stp"
- Processing tapset "/usr/local/share/systemtap/tapset/linux/conversions-guru.stp"
- Processing tapset "/usr/local/share/systemtap/tapset/linux/conversions.stp"
- Processing tapset "/usr/local/share/systemtap/tapset/linux/ctime.stp"
- Processing tapset "/usr/local/share/systemtap/tapset/linux/dentry.stp"
- Processing tapset "/usr/local/share/systemtap/tapset/linux/dev.stp"
- Processing tapset "/usr/local/share/systemtap/tapset/linux/endian.stp"
- Processing tapset "/usr/local/share/systemtap/tapset/linux/guru-delay.stp"
- Processing tapset "/usr/local/share/systemtap/tapset/linux/guru-signal.stp"
- Processing tapset "/usr/local/share/systemtap/tapset/linux/inet.stp"
- Processing tapset "/usr/local/share/systemtap/tapset/linux/inet_sock.stp"
- Processing tapset "/usr/local/share/systemtap/tapset/linux/ioblock.stp"
- Processing tapset "/usr/local/share/systemtap/tapset/linux/ioscheduler.stp"
- Processing tapset "/usr/local/share/systemtap/tapset/linux/ip.stp"
- Processing tapset "/usr/local/share/systemtap/tapset/linux/ipmib-filter-default.stp"
- Processing tapset "/usr/local/share/systemtap/tapset/linux/ipmib.stp"
- Processing tapset "/usr/local/share/systemtap/tapset/linux/irq.stp"
- Processing tapset "/usr/local/share/systemtap/tapset/linux/json.stp"
- Processing tapset "/usr/local/share/systemtap/tapset/linux/kprocess.stp"
- Processing tapset "/usr/local/share/systemtap/tapset/linux/kretprobe.stp"
- Processing tapset "/usr/local/share/systemtap/tapset/linux/linuxmib-filter-default.stp"
- Processing tapset "/usr/local/share/systemtap/tapset/linux/linuxmib.stp"
- Processing tapset "/usr/local/share/systemtap/tapset/linux/loadavg.stp"
- Processing tapset "/usr/local/share/systemtap/tapset/linux/logging.stp"
- Processing tapset "/usr/local/share/systemtap/tapset/linux/memory.stp"
- Processing tapset "/usr/local/share/systemtap/tapset/linux/nd_syscalls.stp"
- Processing tapset "/usr/local/share/systemtap/tapset/linux/nd_syscalls2.stp"
- Processing tapset "/usr/local/share/systemtap/tapset/linux/netfilter.stp"
- Processing tapset "/usr/local/share/systemtap/tapset/linux/networking.stp"
- Processing tapset "/usr/local/share/systemtap/tapset/linux/nfs.stp"
- Processing tapset "/usr/local/share/systemtap/tapset/linux/nfs_proc.stp"
- Processing tapset "/usr/local/share/systemtap/tapset/linux/nfsd.stp"
- Processing tapset "/usr/local/share/systemtap/tapset/linux/nfsderrno.stp"
- Processing tapset "/usr/local/share/systemtap/tapset/linux/panic.stp"
- Processing tapset "/usr/local/share/systemtap/tapset/linux/perf.stp"
- Processing tapset "/usr/local/share/systemtap/tapset/linux/proc_mem.stp"
- Processing tapset "/usr/local/share/systemtap/tapset/linux/pstrace.stp"
- Processing tapset "/usr/local/share/systemtap/tapset/linux/rcu.stp"
- Processing tapset "/usr/local/share/systemtap/tapset/linux/rlimit.stp"
- Processing tapset "/usr/local/share/systemtap/tapset/linux/rpc.stp"
- Processing tapset "/usr/local/share/systemtap/tapset/linux/scheduler.stp"
- Processing tapset "/usr/local/share/systemtap/tapset/linux/scsi.stp"
- Processing tapset "/usr/local/share/systemtap/tapset/linux/signal.stp"
- Processing tapset "/usr/local/share/systemtap/tapset/linux/socket.stp"
- Processing tapset "/usr/local/share/systemtap/tapset/linux/syscall_table.stp"
- Processing tapset "/usr/local/share/systemtap/tapset/linux/syscalls.stp"
- Processing tapset "/usr/local/share/systemtap/tapset/linux/syscalls2.stp"
- Processing tapset "/usr/local/share/systemtap/tapset/linux/syscalls_cfg_trunc.stp"
- Processing tapset "/usr/local/share/systemtap/tapset/linux/target_set.stp"
- Processing tapset "/usr/local/share/systemtap/tapset/linux/task.stp"
- Processing tapset "/usr/local/share/systemtap/tapset/linux/task_ancestry.stp"
- Processing tapset "/usr/local/share/systemtap/tapset/linux/task_time.stp"
- Processing tapset "/usr/local/share/systemtap/tapset/linux/tcp.stp"
- Processing tapset "/usr/local/share/systemtap/tapset/linux/tcpmib-filter-default.stp"
- Processing tapset "/usr/local/share/systemtap/tapset/linux/tcpmib.stp"
- Processing tapset "/usr/local/share/systemtap/tapset/linux/timestamp.stp"
- Processing tapset "/usr/local/share/systemtap/tapset/linux/timestamp_gtod.stp"
- Processing tapset "/usr/local/share/systemtap/tapset/linux/timestamp_monotonic.stp"
- Processing tapset "/usr/local/share/systemtap/tapset/linux/tty.stp"
- Processing tapset "/usr/local/share/systemtap/tapset/linux/tzinfo.stp"
- Processing tapset "/usr/local/share/systemtap/tapset/linux/ucontext-symbols.stp"
- Processing tapset "/usr/local/share/systemtap/tapset/linux/ucontext-unwind.stp"
- Processing tapset "/usr/local/share/systemtap/tapset/linux/ucontext.stp"
- Processing tapset "/usr/local/share/systemtap/tapset/linux/udp.stp"
- Processing tapset "/usr/local/share/systemtap/tapset/linux/utrace.stp"
- Processing tapset "/usr/local/share/systemtap/tapset/linux/vfs.stp"
- Searched: "/usr/local/share/systemtap/tapset/linux", found: 72, processed: 72
- Processing tapset "/usr/local/share/systemtap/tapset/x86_64/registers.stp"
- Searched: "/usr/local/share/systemtap/tapset/x86_64", found: 1, processed: 1
- Processing tapset "/usr/local/share/systemtap/tapset/ansi.stp"
- Processing tapset "/usr/local/share/systemtap/tapset/argv.stp"
- Processing tapset "/usr/local/share/systemtap/tapset/context.stp"
- Processing tapset "/usr/local/share/systemtap/tapset/errno.stp"
- Processing tapset "/usr/local/share/systemtap/tapset/indent-default.stp"
- Processing tapset "/usr/local/share/systemtap/tapset/indent.stp"
- Processing tapset "/usr/local/share/systemtap/tapset/init.stp"
- Processing tapset "/usr/local/share/systemtap/tapset/java.stp"
- Processing tapset "/usr/local/share/systemtap/tapset/logging.stp"
- Processing tapset "/usr/local/share/systemtap/tapset/null.stp"
- Processing tapset "/usr/local/share/systemtap/tapset/oneshot.stp"
- Processing tapset "/usr/local/share/systemtap/tapset/pn.stp"
- Processing tapset "/usr/local/share/systemtap/tapset/python2.stp"
- Processing tapset "/usr/local/share/systemtap/tapset/python3.stp"
- Processing tapset "/usr/local/share/systemtap/tapset/queue_stats.stp"
- Processing tapset "/usr/local/share/systemtap/tapset/random.stp"
- Processing tapset "/usr/local/share/systemtap/tapset/registers.stp"
- Processing tapset "/usr/local/share/systemtap/tapset/speculative.stp"
- Processing tapset "/usr/local/share/systemtap/tapset/stap_staticmarkers.stp"
- Processing tapset "/usr/local/share/systemtap/tapset/stopwatch.stp"
- Processing tapset "/usr/local/share/systemtap/tapset/string.stp"
- Processing tapset "/usr/local/share/systemtap/tapset/switchfile.stp"
- Processing tapset "/usr/local/share/systemtap/tapset/system.stp"
- Processing tapset "/usr/local/share/systemtap/tapset/timers.stp"
- Processing tapset "/usr/local/share/systemtap/tapset/tokenize.stp"
- Processing tapset "/usr/local/share/systemtap/tapset/tzinfo.stp"
- Processing tapset "/usr/local/share/systemtap/tapset/uconversions-guru.stp"
- Processing tapset "/usr/local/share/systemtap/tapset/uconversions.stp"
- Searched: "/usr/local/share/systemtap/tapset", found: 28, processed: 28
- Pass 1: parsed user script and 119 library scripts using 71616virt/43948res/4720shr/39912data kb, in 130usr/10sys/139real ms.
- Attempting to extract kernel debuginfo build ID from /lib/modules/4.4.35-2-pve/build/vmlinux.id
- Attempting to extract kernel debuginfo build ID from /sys/kernel/notes
- semantic error: while resolving probe point: identifier 'kernel' at /usr/local/share/systemtap/tapset/linux/vfs.stp:987:19
- thrown from: elaborate.cxx:1080
- source: probe vfs.write = kernel.function("vfs_write")
- ^
- semantic error: missing x86_64 kernel/module debuginfo [man warning::debuginfo] under '/lib/modules/4.4.35-2-pve/build'
- thrown from: dwflpp.cxx:356
- semantic error: resolution failed in alias expansion builder
- thrown from: elaborate.cxx:1092
- semantic error: while resolving probe point: identifier 'vfs' at traceio2.stp:14:7
- thrown from: elaborate.cxx:1080
- source: probe vfs.write, vfs.read
- ^
- semantic error: no match
- thrown from: elaborate.cxx:1043
- Attempting to extract kernel debuginfo build ID from /lib/modules/4.4.35-2-pve/build/vmlinux.id
- Attempting to extract kernel debuginfo build ID from /sys/kernel/notes
- semantic error: while resolving probe point: identifier 'kernel' at /usr/local/share/systemtap/tapset/linux/vfs.stp:915:18
- thrown from: elaborate.cxx:1080
- source: probe vfs.read = kernel.function("vfs_read")
- ^
- semantic error: missing x86_64 kernel/module debuginfo [man warning::debuginfo] under '/lib/modules/4.4.35-2-pve/build'
- thrown from: dwflpp.cxx:356
- semantic error: resolution failed in alias expansion builder
- thrown from: elaborate.cxx:1092
- semantic error: while resolving probe point: identifier 'vfs' at traceio2.stp:14:18
- thrown from: elaborate.cxx:1080
- source: probe vfs.write, vfs.read
- ^
- semantic error: no match
- thrown from: elaborate.cxx:1043
- Attempting to extract kernel debuginfo build ID from /lib/modules/4.4.35-2-pve/build/vmlinux.id
- Attempting to extract kernel debuginfo build ID from /sys/kernel/notes
- # global embedded code
- %{
- #include <linux/kdev_t.h>
- %}
- # globals
- device_of_interest:unknown
- # functions
- MAJOR:long (dev:long)
- %{ /* pure */
- STAP_RETVALUE = MAJOR(STAP_ARG_dev);
- %}
- MINOR:long (dev:long)
- %{ /* pure */
- STAP_RETVALUE = MINOR(STAP_ARG_dev);
- %}
- MKDEV:long (major:long, minor:long)
- %{ /* pure */
- STAP_RETVALUE = MKDEV(STAP_ARG_major,STAP_ARG_minor);
- %}
- bdevname:string (bdev:long)
- # locals
- hd:unknown
- partno:unknown
- disk_name:unknown
- {
- (bdev) = (&@cast(bdev, "block_device", "kernel"));
- if ((bdev) == (0)) return "N/A"
- ;
- (hd) = ((bdev)->bd_disk);
- if ((bdev)->bd_part) (partno) = ((bdev)->bd_part->partno)
- else (partno) = ((__global_MINOR__overload_0((bdev)->bd_dev)) - ((hd)->first_minor))
- ;
- if (!(partno)) return __global_kernel_string__overload_0((hd)->disk_name)
- ;
- (disk_name) = (__global_kernel_string__overload_0((hd)->disk_name));
- if (__global_isdigit__overload_0(__global_substr__overload_0(disk_name, (__global_strlen__overload_0(disk_name)) - (1), 1))) return sprintf("%sp%d", disk_name, partno)
- else return sprintf("%s%d", disk_name, partno)
- ;
- }
- isdigit:long (str:string)
- %{ /* pure */ /* unprivileged */ /* unmodified-fnargs */
- STAP_RETURN(isdigit(STAP_ARG_str[0]));
- %}
- isinstr:long (s1:string, s2:string)
- %{ /* pure */ /* unprivileged */ /* unmodified-fnargs */
- STAP_RETURN (strstr(STAP_ARG_s1,STAP_ARG_s2) != NULL);
- %}
- kernel_buffer_quoted:string (addr:long, inlen:long)
- {
- return __global_kernel_buffer_quoted__overload_1(addr, inlen, %{ /* pure */ MAXSTRINGLEN %});
- }
- kernel_buffer_quoted:string (addr:long, inlen:long, outlen:long)
- %{ /* pure */
- size_t outlen = (size_t)clamp_t(int, STAP_ARG_outlen, 0, MAXSTRINGLEN);
- if (outlen == 0)
- return;
- if ( _stp_text_str(STAP_RETVALUE, (char *)(uintptr_t)STAP_ARG_addr,
- STAP_ARG_inlen, outlen, 1, 0, 1) < 0)
- snprintf(STAP_RETVALUE, outlen, "0x%lx",
- (unsigned long)(void *)(uintptr_t)STAP_ARG_addr);
- %}
- kernel_buffer_quoted_error:string (addr:long, inlen:long, outlen:long)
- %{ /* pure */
- size_t outlen = (size_t)clamp_t(int, STAP_ARG_outlen, 0, MAXSTRINGLEN);
- if (outlen == 0
- || _stp_text_str(STAP_RETVALUE, (char *) (uintptr_t) STAP_ARG_addr,
- STAP_ARG_inlen, outlen, 1, 0, 1) < 0)
- STAP_ERROR("Unable to access kernel space data at 0x%lx",
- (unsigned long)(void *)(uintptr_t)STAP_ARG_addr);
- %}
- kernel_char:long (addr:long)
- %{ /* pure */
- STAP_RETVALUE = kread((char *) (intptr_t) STAP_ARG_addr);
- if (0) {
- deref_fault: /* branched to from kread() */
- snprintf (CONTEXT->error_buffer, sizeof(CONTEXT->error_buffer),
- "kernel char copy fault at 0x%p [man error::fault]", (void *) (uintptr_t) STAP_ARG_addr);
- CONTEXT->last_error = CONTEXT->error_buffer;
- }
- %}
- kernel_int:long (addr:long)
- %{ /* pure */
- STAP_RETVALUE = kread((int *) (intptr_t) STAP_ARG_addr);
- if (0) {
- deref_fault: /* branched to from kread() */
- snprintf (CONTEXT->error_buffer, sizeof(CONTEXT->error_buffer),
- "kernel int copy fault at 0x%p [man error::fault]", (void *) (uintptr_t) STAP_ARG_addr);
- CONTEXT->last_error = CONTEXT->error_buffer;
- }
- %}
- kernel_long:long (addr:long)
- %{ /* pure */
- STAP_RETVALUE = kread((long *) (intptr_t) STAP_ARG_addr);
- if (0) {
- deref_fault: /* branched to from kread() */
- snprintf (CONTEXT->error_buffer, sizeof(CONTEXT->error_buffer),
- "kernel long copy fault at 0x%p [man error::fault]", (void *) (uintptr_t) STAP_ARG_addr);
- CONTEXT->last_error = CONTEXT->error_buffer;
- }
- %}
- kernel_pointer:long (addr:long)
- %{ /* pure */
- STAP_RETVALUE = (uintptr_t) kread((void **) (uintptr_t) STAP_ARG_addr);
- if (0) {
- deref_fault: /* branched to from kread() */
- snprintf (CONTEXT->error_buffer, sizeof(CONTEXT->error_buffer),
- "kernel pointer copy fault at 0x%p [man error::fault]", (void *) (uintptr_t) STAP_ARG_addr);
- CONTEXT->last_error = CONTEXT->error_buffer;
- }
- %}
- kernel_short:long (addr:long)
- %{ /* pure */
- STAP_RETVALUE = kread((short *) (intptr_t) STAP_ARG_addr);
- if (0) {
- deref_fault: /* branched to from kread() */
- snprintf (CONTEXT->error_buffer, sizeof(CONTEXT->error_buffer),
- "kernel short copy fault at 0x%p [man error::fault]", (void *) (uintptr_t) STAP_ARG_addr);
- CONTEXT->last_error = CONTEXT->error_buffer;
- }
- %}
- kernel_string:string (addr:long)
- %{ /* pure */
- char *destination = STAP_RETVALUE;
- kderef_string (destination, STAP_ARG_addr, MAXSTRINGLEN);
- if (0) {
- deref_fault: /* branched to from deref_string() */
- /* Why '%1p' below? On newer kernels, the snprintf() function pads
- * out '(null)' to the same width as other pointers, which looks
- * really odd in the following error message. Setting a format
- * width of '1' fixes this. */
- snprintf (CONTEXT->error_buffer, sizeof(CONTEXT->error_buffer),
- "kernel string copy fault at 0x%p [man error::fault]", (void *) (uintptr_t) STAP_ARG_addr);
- CONTEXT->last_error = CONTEXT->error_buffer;
- }
- %}
- kernel_string:string (addr:long, err_msg:string)
- {
- try {
- {
- return __global_kernel_string__overload_0(addr);
- }
- } catch {
- {
- return err_msg;
- }
- }
- ;
- }
- kernel_string_n:string (addr:long, n:long)
- %{ /* pure */
- char *destination = STAP_RETVALUE;
- int64_t len = clamp_t(int64_t, STAP_ARG_n + 1, 1, MAXSTRINGLEN);
- kderef_string (destination, STAP_ARG_addr, len);
- if (0) {
- deref_fault: /* branched to from deref_string() */
- snprintf (CONTEXT->error_buffer, sizeof(CONTEXT->error_buffer),
- "kernel string copy fault at 0x%p [man error::fault]", (void *) (uintptr_t) STAP_ARG_addr);
- CONTEXT->last_error = CONTEXT->error_buffer;
- }
- %}
- kernel_string_quoted:string (addr:long)
- %{ /* pure */
- int rc = 0;
- if (STAP_ARG_addr != 0)
- rc = _stp_text_str(STAP_RETVALUE,
- (char *)(uintptr_t)STAP_ARG_addr,
- MAXSTRINGLEN, MAXSTRINGLEN, 1, 0, 0);
- if (STAP_ARG_addr == 0 || rc < 0)
- snprintf(STAP_RETVALUE, MAXSTRINGLEN, "%p", (void *)(long)STAP_ARG_addr);
- %}
- kernel_string_quoted_utf16:string (addr:long)
- {
- try {
- {
- return __global_string_quoted__overload_0(__global_kernel_string_utf16__overload_0(addr));
- }
- } catch {
- {
- return sprintf("0x%x", addr);
- }
- }
- ;
- }
- kernel_string_quoted_utf32:string (addr:long)
- {
- try {
- {
- return __global_string_quoted__overload_0(__global_kernel_string_utf32__overload_0(addr));
- }
- } catch {
- {
- return sprintf("0x%x", addr);
- }
- }
- ;
- }
- kernel_string_utf16:string (addr:long)
- %{ /* pure */
- int rc = 0, len = MAXSTRINGLEN;
- uint32_t c32;
- uint16_t c16low, *source = (uint16_t*)(intptr_t)STAP_ARG_addr;
- char *destination = STAP_RETVALUE;
- *destination = '\0';
- while (len > 1 && (c32 = kread(source))) {
- /* Check for a UTF-16 high surrogate, then its low pair, and combine them.
- * Broken surrogates will just fall through to _stp_convert_utf32 and get
- * flagged as an error there. (Or even allowed, if we decide to be lax.)
- */
- if (c32 >= 0xD800 && c32 <= 0xDBFF) {
- ++source;
- c16low = kread(source);
- if (c16low >= 0xDC00 && c16low <= 0xDFFF)
- c32 = 0x10000 + ((c32 & 0x3FF) << 10) + (c16low & 0x3FF);
- else
- --source;
- }
- if ((rc = _stp_convert_utf32(destination, len, c32)) <= 0) {
- if (rc < 0) {
- snprintf (CONTEXT->error_buffer, sizeof(CONTEXT->error_buffer),
- "invalid UTF-16 character U+%X at 0x%p", c32, source);
- CONTEXT->last_error = CONTEXT->error_buffer;
- }
- break;
- }
- ++source;
- destination += rc;
- len -= rc;
- }
- if (0) {
- deref_fault: /* branched to from deref_string() */
- snprintf (CONTEXT->error_buffer, sizeof(CONTEXT->error_buffer),
- "kernel string copy fault at 0x%p [man error::fault]", source);
- CONTEXT->last_error = CONTEXT->error_buffer;
- }
- %}
- kernel_string_utf16:string (addr:long, err_msg:string)
- {
- try {
- {
- return __global_kernel_string_utf16__overload_0(addr);
- }
- } catch {
- {
- return err_msg;
- }
- }
- ;
- }
- kernel_string_utf32:string (addr:long)
- %{ /* pure */
- int rc = 0, len = MAXSTRINGLEN;
- uint32_t c32, *source = (uint32_t*)(intptr_t)STAP_ARG_addr;
- char *destination = STAP_RETVALUE;
- *destination = '\0';
- while (len > 1 && (c32 = kread(source))) {
- if ((rc = _stp_convert_utf32(destination, len, c32)) <= 0) {
- if (rc < 0) {
- snprintf (CONTEXT->error_buffer, sizeof(CONTEXT->error_buffer),
- "invalid UTF-32 character U+%X at 0x%p", c32, source);
- CONTEXT->last_error = CONTEXT->error_buffer;
- }
- break;
- }
- ++source;
- destination += rc;
- len -= rc;
- }
- if (0) {
- deref_fault: /* branched to from deref_string() */
- snprintf (CONTEXT->error_buffer, sizeof(CONTEXT->error_buffer),
- "kernel string copy fault at 0x%p [man error::fault]", source);
- CONTEXT->last_error = CONTEXT->error_buffer;
- }
- %}
- kernel_string_utf32:string (addr:long, err_msg:string)
- {
- try {
- {
- return __global_kernel_string_utf32__overload_0(addr);
- }
- } catch {
- {
- return err_msg;
- }
- }
- ;
- }
- str_replace:string (prnt_str:string, srch_str:string, rplc_str:string)
- %{ /* pure */ /* unprivileged */
- char *ptr = STAP_ARG_prnt_str;
- char *ptr_base = STAP_ARG_prnt_str;
- int strlen_srch_str = strlen(STAP_ARG_srch_str);
- STAP_RETVALUE[0] = '\0';
- if(strlen_srch_str == 0) {
- STAP_RETURN (ptr_base);
- }
- while((ptr = strstr(ptr, STAP_ARG_srch_str)) != NULL) {
- *ptr = '\0';
- strlcat(STAP_RETVALUE, ptr_base, MAXSTRINGLEN);
- strlcat(STAP_RETVALUE, STAP_ARG_rplc_str, MAXSTRINGLEN);
- ptr = ptr + strlen_srch_str;
- ptr_base = ptr;
- }
- strlcat(STAP_RETVALUE, ptr_base, MAXSTRINGLEN);
- return;
- %}
- string_quoted:string (str:string)
- %{ /* pure */ /* unmodified-fnargs */
- /* This can't fail, since the input string is already in stap context space. */
- (void) _stp_text_str(STAP_RETVALUE,
- (char *)(uintptr_t)STAP_ARG_str,
- MAXSTRINGLEN, MAXSTRINGLEN, 1, 0, 0);
- %}
- stringat:long (str:string, pos:long)
- %{ /* pure */ /* unprivileged */ /* unmodified-fnargs */
- if (STAP_ARG_pos >= 0 && STAP_ARG_pos < strlen(STAP_ARG_str))
- STAP_RETURN(STAP_ARG_str[STAP_ARG_pos]);
- else {
- STAP_RETVALUE = 0;
- #if STAP_COMPAT_VERSION >= STAP_VERSION(2,3) // PR15044
- STAP_ERROR("Position out of bounds");
- #endif
- }
- %}
- strlen:long (s:string)
- %{ /* pure */ /* unprivileged */ /* unmodified-fnargs */
- STAP_RETURN(strlen(STAP_ARG_s));
- %}
- strtol:long (str:string, base:long)
- %{ /* pure */ /* unprivileged */ /* unmodified-fnargs */
- STAP_RETURN(simple_strtol(STAP_ARG_str, NULL, STAP_ARG_base));
- %}
- substr:string (str:string, start:long, length:long)
- %{ /* pure */ /* unprivileged */ /* unmodified-fnargs */
- int64_t length = clamp_t(int64_t, STAP_ARG_length + 1, 0, MAXSTRINGLEN);
- if (STAP_ARG_start >= 0 && STAP_ARG_start < strlen(STAP_ARG_str))
- strlcpy(STAP_RETVALUE, STAP_ARG_str + STAP_ARG_start, length);
- %}
- text_str:string (input:string)
- %{ /* pure */ /* unprivileged */ /* unmodified-fnargs */
- if (_stp_text_str(STAP_RETVALUE, STAP_ARG_input, 0, 0, 0, 0, 0) < 0) {
- STAP_RETVALUE[0] = '\0';
- }
- %}
- text_strn:string (input:string, len:long, quoted:long)
- %{ /* pure */ /* unprivileged */ /* unmodified-fnargs */
- int64_t len = clamp_t(int64_t, STAP_ARG_len, 0, MAXSTRINGLEN);
- if (_stp_text_str(
- STAP_RETVALUE, STAP_ARG_input, 0, len, STAP_ARG_quoted, 0, 0) < 0) {
- STAP_RETVALUE[0] = '\0';
- }
- %}
- usrdev2kerndev:long (dev:long)
- %{ /* pure */
- STAP_RETVALUE = new_decode_dev(STAP_ARG_dev);
- %}
- # probes
- begin /* <- begin */
- # locals
- dev:unknown
- {
- (dev) = (__global_usrdev2kerndev__overload_0(64256));
- (__global_device_of_interest) = (__global_MKDEV__overload_0(__global_MAJOR__overload_0(dev), __global_MINOR__overload_0(dev)));
- }
- Pass 2: analyzed script: 1 probe, 33 functions, 1 embed, 1 global using 72392virt/46100res/6036shr/40688data kb, in 40usr/100sys/144real ms.
- Pass 2: analysis failed. [man error::pass2]
- Running rm -rf /tmp/stapKaDNR5
- Spawn waitpid result (0x0): 0
- Removed temporary directory "/tmp/stapKaDNR5"
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement