ART: Fix stack trace location reporting
The frame info contains the location, not the line number. Add
location to output.
Bug: 31684812
Test: m test-art-host-run-test-911-get-stack-trace
Change-Id: Iac3db17fb32e9a7f83ca9f3614dee0d16fd2120d
diff --git a/test/911-get-stack-trace/stack_trace.cc b/test/911-get-stack-trace/stack_trace.cc
index d562753..b5b5678 100644
--- a/test/911-get-stack-trace/stack_trace.cc
+++ b/test/911-get-stack-trace/stack_trace.cc
@@ -16,11 +16,13 @@
#include "stack_trace.h"
+#include <inttypes.h>
#include <memory>
#include <stdio.h>
#include "base/logging.h"
#include "base/macros.h"
+#include "base/stringprintf.h"
#include "jni.h"
#include "openjdkjvmti/jvmti.h"
#include "ScopedLocalRef.h"
@@ -65,11 +67,13 @@
return (name == nullptr) ? nullptr : env->NewStringUTF(name);
case 1:
return (sig == nullptr) ? nullptr : env->NewStringUTF(sig);
+ case 2:
+ return env->NewStringUTF(StringPrintf("%" PRId64, frames[method_index].location).c_str());
}
LOG(FATAL) << "Unreachable";
UNREACHABLE();
};
- jobjectArray inner_array = CreateObjectArray(env, 2, "java/lang/String", inner_callback);
+ jobjectArray inner_array = CreateObjectArray(env, 3, "java/lang/String", inner_callback);
if (name != nullptr) {
jvmti_env->Deallocate(reinterpret_cast<unsigned char*>(name));