Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 9e402bb2 authored by Yabin Cui's avatar Yabin Cui
Browse files

Revert "Revert "Revert "Revert "Add BacktraceOffline for offline backtracing.""""

This reverts commit 94ece832.

Change-Id: Ie06465c89a5fc115517130f9f2904cc855973155
parent 94ece832
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -99,6 +99,7 @@ debuggerd_c_includes := \
debuggerd_cpp_flags := \
    $(common_cppflags) \
    -Wno-missing-field-initializers \
    -fno-rtti \

# Only build the host tests on linux.
ifeq ($(HOST_OS),linux)
+14 −0
Original line number Diff line number Diff line
@@ -52,6 +52,12 @@ struct ucontext;
typedef ucontext ucontext_t;
#endif

struct backtrace_stackinfo_t {
  uint64_t start;
  uint64_t end;
  const uint8_t* data;
};

class Backtrace {
public:
  // Create the correct Backtrace object based on what is to be unwound.
@@ -66,6 +72,14 @@ public:
  // If map is not NULL, the map is still owned by the caller.
  static Backtrace* Create(pid_t pid, pid_t tid, BacktraceMap* map = NULL);

  // Create an offline Backtrace object that can be used to do an unwind without a process
  // that is still running. If cache_file is set to true, then elf information will be cached
  // for this call. The cached information survives until the calling process ends. This means
  // that subsequent calls to create offline Backtrace objects will continue to use the same
  // cache. It also assumes that the elf files used for each offline unwind are the same.
  static Backtrace* CreateOffline(pid_t pid, pid_t tid, BacktraceMap* map,
                                  const backtrace_stackinfo_t& stack, bool cache_file = false);

  virtual ~Backtrace();

  // Get the current stack trace and store in the backtrace_ structure.
+3 −0
Original line number Diff line number Diff line
@@ -31,6 +31,7 @@

#include <deque>
#include <string>
#include <vector>

struct backtrace_map_t {
  uintptr_t start = 0;
@@ -48,6 +49,8 @@ public:
  // is unsupported.
  static BacktraceMap* Create(pid_t pid, bool uncached = false);

  static BacktraceMap* Create(pid_t pid, const std::vector<backtrace_map_t>& maps);

  virtual ~BacktraceMap();

  // Fill in the map data structure for the given address.
+4 −0
Original line number Diff line number Diff line
@@ -69,7 +69,10 @@ LOCAL_LDLIBS := \
    $($(module)_ldlibs) \
    $($(module)_ldlibs_$(build_type)) \

LOCAL_STRIP_MODULE := $($(module)_strip_module)

ifeq ($(build_type),target)
  include $(LLVM_DEVICE_BUILD_MK)
  include $(BUILD_$(build_target))
endif

@@ -77,6 +80,7 @@ ifeq ($(build_type),host)
  # Only build if host builds are supported.
  ifeq ($(build_host),true)
    LOCAL_CFLAGS += -Wno-extern-c-compat -fno-omit-frame-pointer
    include $(LLVM_HOST_BUILD_MK)
    include $(BUILD_HOST_$(build_target))
  endif
endif
+25 −0
Original line number Diff line number Diff line
@@ -25,6 +25,7 @@ libbacktrace_common_conlyflags := \

libbacktrace_common_cppflags := \
	-std=gnu++11 \
	-I external/libunwind/include/tdep \

# The latest clang (r230699) does not allow SP/PC to be declared in inline asm lists.
libbacktrace_common_clang_cflags += \
@@ -37,6 +38,9 @@ build_host := true
endif
endif

LLVM_ROOT_PATH := external/llvm
include $(LLVM_ROOT_PATH)/llvm.mk

#-------------------------------------------------------------------------
# The libbacktrace library.
#-------------------------------------------------------------------------
@@ -44,6 +48,7 @@ libbacktrace_src_files := \
	Backtrace.cpp \
	BacktraceCurrent.cpp \
	BacktraceMap.cpp \
	BacktraceOffline.cpp \
	BacktracePtrace.cpp \
	thread_utils.c \
	ThreadEntry.cpp \
@@ -56,6 +61,20 @@ libbacktrace_shared_libraries := \
	liblog \
	libunwind \

# Use shared llvm library on device to save space.
libbacktrace_shared_libraries_target := \
	libLLVM \

# Use static llvm libraries on host to remove dependency on 32-bit llvm shared library
# which is not included in the prebuilt.
libbacktrace_static_libraries_host := \
	libLLVMObject \
	libLLVMBitReader \
	libLLVMMC \
	libLLVMMCParser \
	libLLVMCore \
	libLLVMSupport \

libbacktrace_ldlibs_host := \
	-lpthread \
	-lrt \
@@ -86,6 +105,8 @@ libbacktrace_test_cflags := \
libbacktrace_test_src_files := \
	backtrace_testlib.c \

libbacktrace_test_strip_module := false

module := libbacktrace_test
module_tag := debug
build_type := target
@@ -107,6 +128,7 @@ backtrace_test_cflags_target := \
	-DENABLE_PSS_TESTS \

backtrace_test_src_files := \
	backtrace_offline_test.cpp \
	backtrace_test.cpp \
	GetPss.cpp \
	thread_utils.c \
@@ -120,6 +142,7 @@ backtrace_test_shared_libraries := \
	libbacktrace \
	libbase \
	libcutils \
	libunwind \

backtrace_test_shared_libraries_target += \
	libdl \
@@ -127,6 +150,8 @@ backtrace_test_shared_libraries_target += \
backtrace_test_ldlibs_host += \
	-ldl \

backtrace_test_strip_module := false

module := backtrace_test
module_tag := debug
build_type := target
Loading