diff --git a/java/HelperSDT.c b/java/HelperSDT.c index ea08b8d..4b3271d 100644 --- a/java/HelperSDT.c +++ b/java/HelperSDT.c @@ -47,7 +47,7 @@ static int64_t determine_java_type(JNIEnv *env, jobject _arg, _Bool *need_free) { if ((*env)->IsSameObject(env, _arg, NULL)) { *need_free = 1; - return (int64_t) strdup("(null)"); /* need a real string to avoid user_string_warn getting upset */ + return (int64_t) (uintptr_t) strdup("(null)"); /* need a real string to avoid user_string_warn getting upset */ } jclass class_arg = (*env)->GetObjectClass(env, _arg); @@ -87,7 +87,7 @@ static int64_t determine_java_type(JNIEnv *env, jobject _arg, _Bool *need_free) (*env)->ExceptionClear(env); /* Not a simple numeric scalar. Caller must free(). */ *need_free = true; - return (int64_t) get_java_tostring(env, _arg); + return (int64_t) (uintptr_t) get_java_tostring(env, _arg); } static char *alloc_sargs(int64_t *sargs, _Bool *sfree, JNIEnv *env, @@ -106,7 +106,7 @@ static void free_sargs(char *rulename, int64_t *sargs, _Bool *sfree, int num) int i; for (i = 0;i < num; i++) if (sfree[i]) - free((void *) sargs[i]); + free((void *) (uintptr_t) sargs[i]); free(rulename); } diff --git a/tapset/linux/conversions.stp b/tapset/linux/conversions.stp index cfea83c..82f535f 100644 --- a/tapset/linux/conversions.stp +++ b/tapset/linux/conversions.stp @@ -26,7 +26,8 @@ deref_fault: /* branched to from deref_string() */ * 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); + "kernel string copy fault at 0x%lx [man error::fault]", + (unsigned long) (uintptr_t) STAP_ARG_addr); CONTEXT->last_error = CONTEXT->error_buffer; } %} @@ -67,7 +68,8 @@ function kernel_string_quoted:string (addr:long) (char *)(uintptr_t)STAP_ARG_addr, MAXSTRINGLEN, MAXSTRINGLEN, 1, 0, 0); if (STAP_ARG_addr == 0 || rc < 0) - snprintf(STAP_RETVALUE, MAXSTRINGLEN, "%p", (void *)(uintptr_t)STAP_ARG_addr); + snprintf(STAP_RETVALUE, MAXSTRINGLEN, "0x%lx", + (unsigned long)(uintptr_t)STAP_ARG_addr); %} /** @@ -86,7 +88,8 @@ function kernel_string_n:string (addr:long, n:long) %{ /* pure */ 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); + "kernel string copy fault at 0x%lx [man error::fault]", + (unsigned long) (uintptr_t) STAP_ARG_addr); CONTEXT->last_error = CONTEXT->error_buffer; } %} @@ -110,7 +113,8 @@ function kernel_string_utf32:string (addr:long) %{ /* pure */ 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); + "invalid UTF-32 character U+%X at 0x%lx", c32, + (unsigned long) (uintptr_t) source); CONTEXT->last_error = CONTEXT->error_buffer; } break; @@ -123,7 +127,8 @@ function kernel_string_utf32:string (addr:long) %{ /* pure */ 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); + "kernel string copy fault at 0x%lx [man error::fault]", + (unsigned long) (uintptr_t) source); CONTEXT->last_error = CONTEXT->error_buffer; } %} @@ -189,7 +194,8 @@ function kernel_string_utf16:string (addr:long) %{ /* pure */ 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); + "invalid UTF-16 character U+%X at 0x%lx", c32, + (unsigned long) (uintptr_t) source); CONTEXT->last_error = CONTEXT->error_buffer; } break; @@ -202,7 +208,8 @@ function kernel_string_utf16:string (addr:long) %{ /* pure */ 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); + "kernel string copy fault at 0x%lx [man error::fault]", + (unsigned long) (uintptr_t) source); CONTEXT->last_error = CONTEXT->error_buffer; } %} @@ -249,7 +256,8 @@ function kernel_long:long (addr:long) %{ /* pure */ 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); + "kernel long copy fault at 0x%lx [man error::fault]", + (unsigned long) (uintptr_t) STAP_ARG_addr); CONTEXT->last_error = CONTEXT->error_buffer; } %} @@ -267,7 +275,8 @@ function kernel_int:long (addr:long) %{ /* pure */ 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); + "kernel int copy fault at 0x%lx [man error::fault]", + (unsigned long) (uintptr_t) STAP_ARG_addr); CONTEXT->last_error = CONTEXT->error_buffer; } %} @@ -285,7 +294,8 @@ function kernel_short:long (addr:long) %{ /* pure */ 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); + "kernel short copy fault at 0x%lx [man error::fault]", + (unsigned long) (uintptr_t) STAP_ARG_addr); CONTEXT->last_error = CONTEXT->error_buffer; } %} @@ -303,7 +313,8 @@ function kernel_char:long (addr:long) %{ /* pure */ 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); + "kernel char copy fault at 0x%lx [man error::fault]", + (unsigned long) (uintptr_t) STAP_ARG_addr); CONTEXT->last_error = CONTEXT->error_buffer; } %} @@ -322,7 +333,8 @@ function kernel_pointer:long (addr:long) %{ /* pure */ 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); + "kernel pointer copy fault at 0x%lx [man error::fault]", + (unsigned long) (uintptr_t) STAP_ARG_addr); CONTEXT->last_error = CONTEXT->error_buffer; } %} diff --git a/tapset/uconversions.stp b/tapset/uconversions.stp index 1b2b52e..83790e9 100644 --- a/tapset/uconversions.stp +++ b/tapset/uconversions.stp @@ -126,7 +126,7 @@ function user_string_n:string (addr:long, n:long) strlcpy(STAP_RETVALUE, "", MAXSTRINGLEN); snprintf (CONTEXT->error_buffer, sizeof(CONTEXT->error_buffer), "user string copy fault %ld at 0x%lx [man error::fault]", rc, - (uintptr_t) STAP_ARG_addr); + (unsigned long) (uintptr_t) STAP_ARG_addr); CONTEXT->last_error = CONTEXT->error_buffer; } else STAP_RETVALUE[len - 1] = '\0'; @@ -228,8 +228,8 @@ function user_string_n_warn:string (addr:long, n:long, warn_msg:string) // NB: using error_buffer to get local space for the warning, but we're // not aborting, so leave last_error alone. snprintf (CONTEXT->error_buffer, sizeof(CONTEXT->error_buffer), - "user string copy fault 0x%ld at %lx [man error::fault]", rc, - (void *) (uintptr_t) STAP_ARG_addr); + "user string copy fault %ld at 0x%lx [man error::fault]", rc, + (unsigned long) (uintptr_t) STAP_ARG_addr); _stp_warn(CONTEXT->error_buffer); strlcpy (STAP_RETVALUE, STAP_ARG_warn_msg, MAXSTRINGLEN); } else @@ -335,7 +335,7 @@ function user_string_n_quoted:string (addr:long, inlen:long, outlen:long) else #endif snprintf(STAP_RETVALUE, MAXSTRINGLEN, "0x%lx", - (uintptr_t)STAP_ARG_addr); + (unsigned long) (uintptr_t)STAP_ARG_addr); #endif } } @@ -366,7 +366,8 @@ function user_string_utf32:string (addr:long) %{ /* pure */ /* myproc-unprivileg 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%lx", c32, (uintptr_t) source); + "invalid UTF-32 character U+%X at 0x%lx", c32, + (unsigned long) (uintptr_t) source); CONTEXT->last_error = CONTEXT->error_buffer; } break; @@ -379,7 +380,8 @@ function user_string_utf32:string (addr:long) %{ /* pure */ /* myproc-unprivileg if (0) { deref_fault: /* branched to from deref_string() */ snprintf (CONTEXT->error_buffer, sizeof(CONTEXT->error_buffer), - "user string copy fault at 0x%lx [man error::fault]", (uintptr_t) source); + "user string copy fault at 0x%lx [man error::fault]", + (unsigned long) (uintptr_t) source); CONTEXT->last_error = CONTEXT->error_buffer; } %} @@ -447,7 +449,8 @@ function user_string_utf16:string (addr:long) %{ /* pure */ /* myproc-unprivileg 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%lx", c32, source); + "invalid UTF-16 character U+%X at 0x%lx", c32, + (unsigned long) (uintptr_t) source); CONTEXT->last_error = CONTEXT->error_buffer; } break; @@ -460,7 +463,8 @@ function user_string_utf16:string (addr:long) %{ /* pure */ /* myproc-unprivileg if (0) { deref_fault: /* branched to from deref_string() */ snprintf (CONTEXT->error_buffer, sizeof(CONTEXT->error_buffer), - "user string copy fault at 0x%lx [man error::fault]", (uintptr_t) source); + "user string copy fault at 0x%lx [man error::fault]", + (unsigned long) (uintptr_t) source); CONTEXT->last_error = CONTEXT->error_buffer; } %} @@ -532,7 +536,7 @@ function user_char_warn:long (addr:long) { try { return user_char_error(addr) } catch { - warn(sprintf("user char copy fault %p [man error::fault]", + warn(sprintf("user char copy fault at %p [man error::fault]", addr)) return 0 }