diff options
25 files changed, 51 insertions, 94 deletions
diff --git a/debuggerd/crash_dump.cpp b/debuggerd/crash_dump.cpp index 35139801f..dfc74fb9d 100644 --- a/debuggerd/crash_dump.cpp +++ b/debuggerd/crash_dump.cpp @@ -47,13 +47,14 @@ #define ATRACE_TAG ATRACE_TAG_BIONIC #include <utils/Trace.h> -#include "backtrace.h" -#include "tombstone.h" -#include "utility.h" +#include "libdebuggerd/backtrace.h" +#include "libdebuggerd/tombstone.h" +#include "libdebuggerd/utility.h" #include "debuggerd/handler.h" -#include "protocol.h" #include "tombstoned/tombstoned.h" + +#include "protocol.h" #include "util.h" using android::base::unique_fd; diff --git a/debuggerd/handler/debuggerd_fallback.cpp b/debuggerd/handler/debuggerd_fallback.cpp index 43104ecbd..06d4a9b72 100644 --- a/debuggerd/handler/debuggerd_fallback.cpp +++ b/debuggerd/handler/debuggerd_fallback.cpp @@ -45,8 +45,8 @@ #include "tombstoned/tombstoned.h" #include "util.h" -#include "backtrace.h" -#include "tombstone.h" +#include "libdebuggerd/backtrace.h" +#include "libdebuggerd/tombstone.h" using android::base::unique_fd; diff --git a/debuggerd/libdebuggerd/arm/machine.cpp b/debuggerd/libdebuggerd/arm/machine.cpp index ac833aef2..bfb5ea4e9 100644 --- a/debuggerd/libdebuggerd/arm/machine.cpp +++ b/debuggerd/libdebuggerd/arm/machine.cpp @@ -17,6 +17,8 @@ #define LOG_TAG "DEBUG" +#include "libdebuggerd/machine.h" + #include <errno.h> #include <stdint.h> #include <string.h> @@ -25,8 +27,7 @@ #include <backtrace/Backtrace.h> #include <log/log.h> -#include "machine.h" -#include "utility.h" +#include "libdebuggerd/utility.h" void dump_memory_and_code(log_t* log, Backtrace* backtrace) { pt_regs regs; diff --git a/debuggerd/libdebuggerd/arm64/machine.cpp b/debuggerd/libdebuggerd/arm64/machine.cpp index fa73c99ac..ad1c95110 100644 --- a/debuggerd/libdebuggerd/arm64/machine.cpp +++ b/debuggerd/libdebuggerd/arm64/machine.cpp @@ -17,6 +17,8 @@ #define LOG_TAG "DEBUG" +#include "libdebuggerd/machine.h" + #include <elf.h> #include <errno.h> #include <stdint.h> @@ -27,8 +29,7 @@ #include <backtrace/Backtrace.h> #include <log/log.h> -#include "machine.h" -#include "utility.h" +#include "libdebuggerd/utility.h" void dump_memory_and_code(log_t* log, Backtrace* backtrace) { struct user_pt_regs regs; diff --git a/debuggerd/libdebuggerd/backtrace.cpp b/debuggerd/libdebuggerd/backtrace.cpp index 334d97f33..f616e1ba0 100644 --- a/debuggerd/libdebuggerd/backtrace.cpp +++ b/debuggerd/libdebuggerd/backtrace.cpp @@ -16,6 +16,8 @@ #define LOG_TAG "DEBUG" +#include "libdebuggerd/backtrace.h" + #include <errno.h> #include <dirent.h> #include <limits.h> @@ -34,9 +36,7 @@ #include <backtrace/Backtrace.h> #include <log/log.h> -#include "backtrace.h" - -#include "utility.h" +#include "libdebuggerd/utility.h" static void dump_process_header(log_t* log, pid_t pid, const char* process_name) { time_t t = time(NULL); diff --git a/debuggerd/libdebuggerd/elf_utils.cpp b/debuggerd/libdebuggerd/elf_utils.cpp index 4e798e243..a35102f63 100644 --- a/debuggerd/libdebuggerd/elf_utils.cpp +++ b/debuggerd/libdebuggerd/elf_utils.cpp @@ -16,6 +16,8 @@ #define LOG_TAG "DEBUG" +#include "libdebuggerd/elf_utils.h" + #include <elf.h> #include <stdint.h> #include <stdlib.h> @@ -27,8 +29,6 @@ #include <backtrace/Backtrace.h> #include <log/log.h> -#include "elf_utils.h" - #define NOTE_ALIGN(size) (((size) + 3) & ~3) template <typename HdrType, typename PhdrType, typename NhdrType> diff --git a/debuggerd/libdebuggerd/include/backtrace.h b/debuggerd/libdebuggerd/include/libdebuggerd/backtrace.h index fe738f1c7..fe738f1c7 100644 --- a/debuggerd/libdebuggerd/include/backtrace.h +++ b/debuggerd/libdebuggerd/include/libdebuggerd/backtrace.h diff --git a/debuggerd/libdebuggerd/include/elf_utils.h b/debuggerd/libdebuggerd/include/libdebuggerd/elf_utils.h index 11d0a4348..11d0a4348 100644 --- a/debuggerd/libdebuggerd/include/elf_utils.h +++ b/debuggerd/libdebuggerd/include/libdebuggerd/elf_utils.h diff --git a/debuggerd/libdebuggerd/include/machine.h b/debuggerd/libdebuggerd/include/libdebuggerd/machine.h index 5e5668253..5e5668253 100644 --- a/debuggerd/libdebuggerd/include/machine.h +++ b/debuggerd/libdebuggerd/include/libdebuggerd/machine.h diff --git a/debuggerd/libdebuggerd/include/open_files_list.h b/debuggerd/libdebuggerd/include/libdebuggerd/open_files_list.h index b37228d03..b37228d03 100644 --- a/debuggerd/libdebuggerd/include/open_files_list.h +++ b/debuggerd/libdebuggerd/include/libdebuggerd/open_files_list.h diff --git a/debuggerd/libdebuggerd/include/tombstone.h b/debuggerd/libdebuggerd/include/libdebuggerd/tombstone.h index 45740df7d..45740df7d 100644 --- a/debuggerd/libdebuggerd/include/tombstone.h +++ b/debuggerd/libdebuggerd/include/libdebuggerd/tombstone.h diff --git a/debuggerd/libdebuggerd/include/utility.h b/debuggerd/libdebuggerd/include/libdebuggerd/utility.h index f481b78b8..f481b78b8 100644 --- a/debuggerd/libdebuggerd/include/utility.h +++ b/debuggerd/libdebuggerd/include/libdebuggerd/utility.h diff --git a/debuggerd/libdebuggerd/mips/machine.cpp b/debuggerd/libdebuggerd/mips/machine.cpp index cbf272a36..1fc690b4a 100644 --- a/debuggerd/libdebuggerd/mips/machine.cpp +++ b/debuggerd/libdebuggerd/mips/machine.cpp @@ -16,6 +16,8 @@ #define LOG_TAG "DEBUG" +#include "libdebuggerd/machine.h" + #include <errno.h> #include <inttypes.h> #include <stdint.h> @@ -25,8 +27,7 @@ #include <backtrace/Backtrace.h> #include <log/log.h> -#include "machine.h" -#include "utility.h" +#include "libdebuggerd/utility.h" #define R(x) (static_cast<uintptr_t>(x)) diff --git a/debuggerd/libdebuggerd/mips64/machine.cpp b/debuggerd/libdebuggerd/mips64/machine.cpp index 0a8d53257..955e50728 100644 --- a/debuggerd/libdebuggerd/mips64/machine.cpp +++ b/debuggerd/libdebuggerd/mips64/machine.cpp @@ -16,6 +16,8 @@ #define LOG_TAG "DEBUG" +#include "libdebuggerd/machine.h" + #include <errno.h> #include <inttypes.h> #include <stdint.h> @@ -25,8 +27,7 @@ #include <backtrace/Backtrace.h> #include <log/log.h> -#include "machine.h" -#include "utility.h" +#include "libdebuggerd/utility.h" #define R(x) (static_cast<uintptr_t>(x)) diff --git a/debuggerd/libdebuggerd/open_files_list.cpp b/debuggerd/libdebuggerd/open_files_list.cpp index 5c7ea7083..e199db8b4 100644 --- a/debuggerd/libdebuggerd/open_files_list.cpp +++ b/debuggerd/libdebuggerd/open_files_list.cpp @@ -16,6 +16,8 @@ #define LOG_TAG "DEBUG" +#include "libdebuggerd/open_files_list.h" + #include <dirent.h> #include <errno.h> #include <stdio.h> @@ -31,9 +33,7 @@ #include <android-base/file.h> #include <log/log.h> -#include "open_files_list.h" - -#include "utility.h" +#include "libdebuggerd/utility.h" void populate_open_files_list(pid_t pid, OpenFilesList* list) { std::string fd_dir_name = "/proc/" + std::to_string(pid) + "/fd"; diff --git a/debuggerd/libdebuggerd/test/dump_memory_test.cpp b/debuggerd/libdebuggerd/test/dump_memory_test.cpp index 49f369018..0fad2cf7c 100644 --- a/debuggerd/libdebuggerd/test/dump_memory_test.cpp +++ b/debuggerd/libdebuggerd/test/dump_memory_test.cpp @@ -22,9 +22,10 @@ #include <gtest/gtest.h> #include <android-base/file.h> +#include "libdebuggerd/utility.h" + #include "BacktraceMock.h" #include "log_fake.h" -#include "utility.h" const char g_expected_full_dump[] = "\nmemory near r1:\n" diff --git a/debuggerd/libdebuggerd/test/elf_fake.cpp b/debuggerd/libdebuggerd/test/elf_fake.cpp index bb52b59c9..f8cbca771 100644 --- a/debuggerd/libdebuggerd/test/elf_fake.cpp +++ b/debuggerd/libdebuggerd/test/elf_fake.cpp @@ -14,6 +14,8 @@ * limitations under the License. */ +#include "elf_fake.h" + #include <stdint.h> #include <string> diff --git a/debuggerd/libdebuggerd/test/log_fake.cpp b/debuggerd/libdebuggerd/test/log_fake.cpp index 3336bcb50..68f401302 100644 --- a/debuggerd/libdebuggerd/test/log_fake.cpp +++ b/debuggerd/libdebuggerd/test/log_fake.cpp @@ -14,6 +14,8 @@ * limitations under the License. */ +#include "log_fake.h" + #include <errno.h> #include <stdarg.h> diff --git a/debuggerd/libdebuggerd/test/open_files_list_test.cpp b/debuggerd/libdebuggerd/test/open_files_list_test.cpp index 85e069510..acac72c22 100644 --- a/debuggerd/libdebuggerd/test/open_files_list_test.cpp +++ b/debuggerd/libdebuggerd/test/open_files_list_test.cpp @@ -24,7 +24,7 @@ #include "android-base/test_utils.h" -#include "open_files_list.h" +#include "libdebuggerd/open_files_list.h" // Check that we can produce a list of open files for the current process, and // that it includes a known open file. diff --git a/debuggerd/libdebuggerd/test/ptrace_fake.cpp b/debuggerd/libdebuggerd/test/ptrace_fake.cpp index f40cbd429..0d4080ebf 100644 --- a/debuggerd/libdebuggerd/test/ptrace_fake.cpp +++ b/debuggerd/libdebuggerd/test/ptrace_fake.cpp @@ -14,6 +14,8 @@ * limitations under the License. */ +#include "ptrace_fake.h" + #include <errno.h> #include <signal.h> #include <stdarg.h> @@ -21,8 +23,6 @@ #include <string> -#include "ptrace_fake.h" - siginfo_t g_fake_si = {.si_signo = 0}; void ptrace_set_fake_getsiginfo(const siginfo_t& si) { diff --git a/debuggerd/libdebuggerd/test/tombstone_test.cpp b/debuggerd/libdebuggerd/test/tombstone_test.cpp index 6be59e7ac..e79dd969a 100644 --- a/debuggerd/libdebuggerd/test/tombstone_test.cpp +++ b/debuggerd/libdebuggerd/test/tombstone_test.cpp @@ -22,7 +22,7 @@ #include <gtest/gtest.h> #include <android-base/file.h> -#include "utility.h" +#include "libdebuggerd/utility.h" #include "BacktraceMock.h" #include "elf_fake.h" diff --git a/debuggerd/libdebuggerd/tombstone.cpp b/debuggerd/libdebuggerd/tombstone.cpp index b809ed4bc..50d19bd1d 100644 --- a/debuggerd/libdebuggerd/tombstone.cpp +++ b/debuggerd/libdebuggerd/tombstone.cpp @@ -16,6 +16,8 @@ #define LOG_TAG "DEBUG" +#include "libdebuggerd/tombstone.h" + #include <dirent.h> #include <errno.h> #include <fcntl.h> @@ -43,22 +45,18 @@ #include <log/logprint.h> #include <private/android_filesystem_config.h> +// Needed to get DEBUGGER_SIGNAL. #include "debuggerd/handler.h" -#include "backtrace.h" -#include "elf_utils.h" -#include "machine.h" -#include "open_files_list.h" -#include "tombstone.h" +#include "libdebuggerd/backtrace.h" +#include "libdebuggerd/elf_utils.h" +#include "libdebuggerd/machine.h" +#include "libdebuggerd/open_files_list.h" using android::base::StringPrintf; #define STACK_WORDS 16 -#define MAX_TOMBSTONES 10 -#define TOMBSTONE_DIR "/data/tombstones" -#define TOMBSTONE_TEMPLATE (TOMBSTONE_DIR"/tombstone_%02d") - static bool signal_has_si_addr(int si_signo, int si_code) { // Manually sent signals won't have si_addr. if (si_code == SI_USER || si_code == SI_QUEUE || si_code == SI_TKILL) { @@ -764,59 +762,6 @@ static void dump_crash(log_t* log, BacktraceMap* map, BacktraceMap* map_new, } } -// open_tombstone - find an available tombstone slot, if any, of the -// form tombstone_XX where XX is 00 to MAX_TOMBSTONES-1, inclusive. If no -// file is available, we reuse the least-recently-modified file. -int open_tombstone(std::string* out_path) { - // In a single pass, find an available slot and, in case none - // exist, find and record the least-recently-modified file. - char path[128]; - int fd = -1; - int oldest = -1; - struct stat oldest_sb; - for (int i = 0; i < MAX_TOMBSTONES; i++) { - snprintf(path, sizeof(path), TOMBSTONE_TEMPLATE, i); - - struct stat sb; - if (stat(path, &sb) == 0) { - if (oldest < 0 || sb.st_mtime < oldest_sb.st_mtime) { - oldest = i; - oldest_sb.st_mtime = sb.st_mtime; - } - continue; - } - if (errno != ENOENT) continue; - - fd = open(path, O_CREAT | O_EXCL | O_WRONLY | O_NOFOLLOW | O_CLOEXEC, 0600); - if (fd < 0) continue; // raced ? - - if (out_path) { - *out_path = path; - } - fchown(fd, AID_SYSTEM, AID_SYSTEM); - return fd; - } - - if (oldest < 0) { - ALOGE("debuggerd: failed to find a valid tombstone, default to using tombstone 0.\n"); - oldest = 0; - } - - // we didn't find an available file, so we clobber the oldest one - snprintf(path, sizeof(path), TOMBSTONE_TEMPLATE, oldest); - fd = open(path, O_CREAT | O_TRUNC | O_WRONLY | O_NOFOLLOW | O_CLOEXEC, 0600); - if (fd < 0) { - ALOGE("debuggerd: failed to open tombstone file '%s': %s\n", path, strerror(errno)); - return -1; - } - - if (out_path) { - *out_path = path; - } - fchown(fd, AID_SYSTEM, AID_SYSTEM); - return fd; -} - void engrave_tombstone(int tombstone_fd, BacktraceMap* map, BacktraceMap* map_new, const OpenFilesList* open_files, pid_t pid, pid_t tid, const std::string& process_name, const std::map<pid_t, std::string>& threads, diff --git a/debuggerd/libdebuggerd/utility.cpp b/debuggerd/libdebuggerd/utility.cpp index 7f450e6bc..1b746527e 100644 --- a/debuggerd/libdebuggerd/utility.cpp +++ b/debuggerd/libdebuggerd/utility.cpp @@ -16,7 +16,7 @@ #define LOG_TAG "DEBUG" -#include "utility.h" +#include "libdebuggerd/utility.h" #include <errno.h> #include <signal.h> diff --git a/debuggerd/libdebuggerd/x86/machine.cpp b/debuggerd/libdebuggerd/x86/machine.cpp index af10817a4..09a64cdb6 100644 --- a/debuggerd/libdebuggerd/x86/machine.cpp +++ b/debuggerd/libdebuggerd/x86/machine.cpp @@ -16,6 +16,8 @@ #define LOG_TAG "DEBUG" +#include "libdebuggerd/machine.h" + #include <errno.h> #include <stdint.h> #include <string.h> @@ -24,8 +26,7 @@ #include <backtrace/Backtrace.h> #include <log/log.h> -#include "machine.h" -#include "utility.h" +#include "libdebuggerd/utility.h" void dump_memory_and_code(log_t* log, Backtrace* backtrace) { struct pt_regs r; diff --git a/debuggerd/libdebuggerd/x86_64/machine.cpp b/debuggerd/libdebuggerd/x86_64/machine.cpp index bf2c2b4e0..de1c26836 100644 --- a/debuggerd/libdebuggerd/x86_64/machine.cpp +++ b/debuggerd/libdebuggerd/x86_64/machine.cpp @@ -16,6 +16,8 @@ #define LOG_TAG "DEBUG" +#include "libdebuggerd/machine.h" + #include <errno.h> #include <stdint.h> #include <string.h> @@ -25,8 +27,7 @@ #include <backtrace/Backtrace.h> #include <log/log.h> -#include "machine.h" -#include "utility.h" +#include "libdebuggerd/utility.h" void dump_memory_and_code(log_t* log, Backtrace* backtrace) { struct user_regs_struct r; |