Loading debuggerd/libdebuggerd/tombstone.cpp +15 −14 Original line number Diff line number Diff line Loading @@ -417,7 +417,7 @@ static void dump_all_maps(Backtrace* backtrace, BacktraceMap* map, log_t* log, p "memory map (%zu entr%s):", map->size(), map->size() == 1 ? "y" : "ies"); if (print_fault_address_marker) { if (map->begin() != map->end() && addr < map->begin()->start) { if (map->begin() != map->end() && addr < (*map->begin())->start) { _LOG(log, logtype::MAPS, "\n--->Fault address falls at %s before any mapped regions\n", get_addr_string(addr).c_str()); print_fault_address_marker = false; Loading @@ -429,49 +429,50 @@ static void dump_all_maps(Backtrace* backtrace, BacktraceMap* map, log_t* log, p } std::string line; for (BacktraceMap::const_iterator it = map->begin(); it != map->end(); ++it) { for (auto it = map->begin(); it != map->end(); ++it) { const backtrace_map_t* entry = *it; line = " "; if (print_fault_address_marker) { if (addr < it->start) { if (addr < entry->start) { _LOG(log, logtype::MAPS, "--->Fault address falls at %s between mapped regions\n", get_addr_string(addr).c_str()); print_fault_address_marker = false; } else if (addr >= it->start && addr < it->end) { } else if (addr >= entry->start && addr < entry->end) { line = "--->"; print_fault_address_marker = false; } } line += get_addr_string(it->start) + '-' + get_addr_string(it->end - 1) + ' '; if (it->flags & PROT_READ) { line += get_addr_string(entry->start) + '-' + get_addr_string(entry->end - 1) + ' '; if (entry->flags & PROT_READ) { line += 'r'; } else { line += '-'; } if (it->flags & PROT_WRITE) { if (entry->flags & PROT_WRITE) { line += 'w'; } else { line += '-'; } if (it->flags & PROT_EXEC) { if (entry->flags & PROT_EXEC) { line += 'x'; } else { line += '-'; } line += StringPrintf(" %8" PRIxPTR " %8" PRIxPTR, it->offset, it->end - it->start); line += StringPrintf(" %8" PRIxPTR " %8" PRIxPTR, entry->offset, entry->end - entry->start); bool space_needed = true; if (it->name.length() > 0) { if (entry->name.length() > 0) { space_needed = false; line += " " + it->name; line += " " + entry->name; std::string build_id; if ((it->flags & PROT_READ) && elf_get_build_id(backtrace, it->start, &build_id)) { if ((entry->flags & PROT_READ) && elf_get_build_id(backtrace, entry->start, &build_id)) { line += " (BuildId: " + build_id + ")"; } } if (it->load_bias != 0) { if (entry->load_bias != 0) { if (space_needed) { line += ' '; } line += StringPrintf(" (load bias 0x%" PRIxPTR ")", it->load_bias); line += StringPrintf(" (load bias 0x%" PRIxPTR ")", entry->load_bias); } _LOG(log, logtype::MAPS, "%s\n", line.c_str()); } Loading fastboot/Android.mk +1 −1 Original line number Diff line number Diff line Loading @@ -39,7 +39,7 @@ LOCAL_MODULE := fastboot LOCAL_MODULE_TAGS := debug LOCAL_MODULE_HOST_OS := darwin linux windows LOCAL_CFLAGS += -Wall -Wextra -Werror -Wunreachable-code LOCAL_REQUIRED_MODULES := mke2fs e2fsdroid make_f2fs LOCAL_REQUIRED_MODULES := mke2fs e2fsdroid mke2fs.conf make_f2fs LOCAL_SRC_FILES_linux := usb_linux.cpp LOCAL_STATIC_LIBRARIES_linux := libselinux Loading fastboot/fs.cpp +21 −12 Original line number Diff line number Diff line Loading @@ -23,11 +23,12 @@ #include <android-base/stringprintf.h> #include <android-base/unique_fd.h> using android::base::GetExecutableDirectory; using android::base::StringPrintf; using android::base::unique_fd; #ifdef WIN32 static int exec_e2fs_cmd(const char* /*path*/, char* const argv[]) { static int exec_e2fs_cmd(const char* /*path*/, const char** argv, const char** envp) { std::string cmd; int i = 0; while (argv[i] != nullptr) { Loading @@ -44,7 +45,13 @@ static int exec_e2fs_cmd(const char* /*path*/, char* const argv[]) { si.cb = sizeof(si); ZeroMemory(&pi, sizeof(pi)); SetEnvironmentVariableA("MKE2FS_CONFIG", ""); std::string env_str; if (envp != nullptr) { while (*envp != nullptr) { env_str += std::string(*envp) + std::string("\0", 1); envp++; } } if (!CreateProcessA(nullptr, // No module name (use command line) const_cast<char*>(cmd.c_str()), // Command line Loading @@ -52,7 +59,7 @@ static int exec_e2fs_cmd(const char* /*path*/, char* const argv[]) { nullptr, // Thread handle not inheritable FALSE, // Set handle inheritance to FALSE 0, // No creation flags nullptr, // Use parent's environment block env_str.empty() ? nullptr : LPSTR(env_str.c_str()), nullptr, // Use parent's starting directory &si, // Pointer to STARTUPINFO structure &pi) // Pointer to PROCESS_INFORMATION structure Loading @@ -72,12 +79,11 @@ static int exec_e2fs_cmd(const char* /*path*/, char* const argv[]) { return exit_code != 0; } #else static int exec_e2fs_cmd(const char* path, char* const argv[]) { static int exec_e2fs_cmd(const char* path, const char** argv, const char** envp) { int status; pid_t child; if ((child = fork()) == 0) { setenv("MKE2FS_CONFIG", "", 1); execvp(path, argv); execvpe(path, const_cast<char**>(argv), const_cast<char**>(envp)); _exit(EXIT_FAILURE); } if (child < 0) { Loading Loading @@ -131,7 +137,10 @@ static int generate_ext4_image(const char* fileName, long long partSize, mke2fs_args.push_back(size_str.c_str()); mke2fs_args.push_back(nullptr); int ret = exec_e2fs_cmd(mke2fs_args[0], const_cast<char**>(mke2fs_args.data())); const std::string mke2fs_env = "MKE2FS_CONFIG=" + GetExecutableDirectory() + "/mke2fs.conf"; std::vector<const char*> mke2fs_envp = {mke2fs_env.c_str(), nullptr}; int ret = exec_e2fs_cmd(mke2fs_args[0], mke2fs_args.data(), mke2fs_envp.data()); if (ret != 0) { fprintf(stderr, "mke2fs failed: %d\n", ret); return -1; Loading @@ -145,7 +154,7 @@ static int generate_ext4_image(const char* fileName, long long partSize, std::vector<const char*> e2fsdroid_args = {e2fsdroid_path.c_str(), "-f", initial_dir.c_str(), fileName, nullptr}; ret = exec_e2fs_cmd(e2fsdroid_args[0], const_cast<char**>(e2fsdroid_args.data())); ret = exec_e2fs_cmd(e2fsdroid_args[0], e2fsdroid_args.data(), nullptr); if (ret != 0) { fprintf(stderr, "e2fsdroid failed: %d\n", ret); return -1; Loading Loading @@ -173,7 +182,7 @@ static int generate_f2fs_image(const char* fileName, long long partSize, const s mkf2fs_args.push_back(fileName); mkf2fs_args.push_back(nullptr); int ret = exec_e2fs_cmd(mkf2fs_args[0], const_cast<char**>(mkf2fs_args.data())); int ret = exec_e2fs_cmd(mkf2fs_args[0], mkf2fs_args.data(), nullptr); if (ret != 0) { fprintf(stderr, "mkf2fs failed: %d\n", ret); return -1; Loading init/firmware_handler.cpp +2 −2 Original line number Diff line number Diff line Loading @@ -78,8 +78,8 @@ static void ProcessFirmwareEvent(const Uevent& uevent) { return; } static const char* firmware_dirs[] = {"/etc/firmware/", "/vendor/firmware/", "/firmware/image/"}; static const char* firmware_dirs[] = {"/etc/firmware/", "/odm/firmware/", "/vendor/firmware/", "/firmware/image/"}; try_loading_again: for (size_t i = 0; i < arraysize(firmware_dirs); i++) { Loading libbacktrace/BacktraceMap.cpp +4 −3 Original line number Diff line number Diff line Loading @@ -40,9 +40,10 @@ BacktraceMap::~BacktraceMap() { void BacktraceMap::FillIn(uintptr_t addr, backtrace_map_t* map) { ScopedBacktraceMapIteratorLock lock(this); for (BacktraceMap::const_iterator it = begin(); it != end(); ++it) { if (addr >= it->start && addr < it->end) { *map = *it; for (auto it = begin(); it != end(); ++it) { const backtrace_map_t* entry = *it; if (addr >= entry->start && addr < entry->end) { *map = *entry; return; } } Loading Loading
debuggerd/libdebuggerd/tombstone.cpp +15 −14 Original line number Diff line number Diff line Loading @@ -417,7 +417,7 @@ static void dump_all_maps(Backtrace* backtrace, BacktraceMap* map, log_t* log, p "memory map (%zu entr%s):", map->size(), map->size() == 1 ? "y" : "ies"); if (print_fault_address_marker) { if (map->begin() != map->end() && addr < map->begin()->start) { if (map->begin() != map->end() && addr < (*map->begin())->start) { _LOG(log, logtype::MAPS, "\n--->Fault address falls at %s before any mapped regions\n", get_addr_string(addr).c_str()); print_fault_address_marker = false; Loading @@ -429,49 +429,50 @@ static void dump_all_maps(Backtrace* backtrace, BacktraceMap* map, log_t* log, p } std::string line; for (BacktraceMap::const_iterator it = map->begin(); it != map->end(); ++it) { for (auto it = map->begin(); it != map->end(); ++it) { const backtrace_map_t* entry = *it; line = " "; if (print_fault_address_marker) { if (addr < it->start) { if (addr < entry->start) { _LOG(log, logtype::MAPS, "--->Fault address falls at %s between mapped regions\n", get_addr_string(addr).c_str()); print_fault_address_marker = false; } else if (addr >= it->start && addr < it->end) { } else if (addr >= entry->start && addr < entry->end) { line = "--->"; print_fault_address_marker = false; } } line += get_addr_string(it->start) + '-' + get_addr_string(it->end - 1) + ' '; if (it->flags & PROT_READ) { line += get_addr_string(entry->start) + '-' + get_addr_string(entry->end - 1) + ' '; if (entry->flags & PROT_READ) { line += 'r'; } else { line += '-'; } if (it->flags & PROT_WRITE) { if (entry->flags & PROT_WRITE) { line += 'w'; } else { line += '-'; } if (it->flags & PROT_EXEC) { if (entry->flags & PROT_EXEC) { line += 'x'; } else { line += '-'; } line += StringPrintf(" %8" PRIxPTR " %8" PRIxPTR, it->offset, it->end - it->start); line += StringPrintf(" %8" PRIxPTR " %8" PRIxPTR, entry->offset, entry->end - entry->start); bool space_needed = true; if (it->name.length() > 0) { if (entry->name.length() > 0) { space_needed = false; line += " " + it->name; line += " " + entry->name; std::string build_id; if ((it->flags & PROT_READ) && elf_get_build_id(backtrace, it->start, &build_id)) { if ((entry->flags & PROT_READ) && elf_get_build_id(backtrace, entry->start, &build_id)) { line += " (BuildId: " + build_id + ")"; } } if (it->load_bias != 0) { if (entry->load_bias != 0) { if (space_needed) { line += ' '; } line += StringPrintf(" (load bias 0x%" PRIxPTR ")", it->load_bias); line += StringPrintf(" (load bias 0x%" PRIxPTR ")", entry->load_bias); } _LOG(log, logtype::MAPS, "%s\n", line.c_str()); } Loading
fastboot/Android.mk +1 −1 Original line number Diff line number Diff line Loading @@ -39,7 +39,7 @@ LOCAL_MODULE := fastboot LOCAL_MODULE_TAGS := debug LOCAL_MODULE_HOST_OS := darwin linux windows LOCAL_CFLAGS += -Wall -Wextra -Werror -Wunreachable-code LOCAL_REQUIRED_MODULES := mke2fs e2fsdroid make_f2fs LOCAL_REQUIRED_MODULES := mke2fs e2fsdroid mke2fs.conf make_f2fs LOCAL_SRC_FILES_linux := usb_linux.cpp LOCAL_STATIC_LIBRARIES_linux := libselinux Loading
fastboot/fs.cpp +21 −12 Original line number Diff line number Diff line Loading @@ -23,11 +23,12 @@ #include <android-base/stringprintf.h> #include <android-base/unique_fd.h> using android::base::GetExecutableDirectory; using android::base::StringPrintf; using android::base::unique_fd; #ifdef WIN32 static int exec_e2fs_cmd(const char* /*path*/, char* const argv[]) { static int exec_e2fs_cmd(const char* /*path*/, const char** argv, const char** envp) { std::string cmd; int i = 0; while (argv[i] != nullptr) { Loading @@ -44,7 +45,13 @@ static int exec_e2fs_cmd(const char* /*path*/, char* const argv[]) { si.cb = sizeof(si); ZeroMemory(&pi, sizeof(pi)); SetEnvironmentVariableA("MKE2FS_CONFIG", ""); std::string env_str; if (envp != nullptr) { while (*envp != nullptr) { env_str += std::string(*envp) + std::string("\0", 1); envp++; } } if (!CreateProcessA(nullptr, // No module name (use command line) const_cast<char*>(cmd.c_str()), // Command line Loading @@ -52,7 +59,7 @@ static int exec_e2fs_cmd(const char* /*path*/, char* const argv[]) { nullptr, // Thread handle not inheritable FALSE, // Set handle inheritance to FALSE 0, // No creation flags nullptr, // Use parent's environment block env_str.empty() ? nullptr : LPSTR(env_str.c_str()), nullptr, // Use parent's starting directory &si, // Pointer to STARTUPINFO structure &pi) // Pointer to PROCESS_INFORMATION structure Loading @@ -72,12 +79,11 @@ static int exec_e2fs_cmd(const char* /*path*/, char* const argv[]) { return exit_code != 0; } #else static int exec_e2fs_cmd(const char* path, char* const argv[]) { static int exec_e2fs_cmd(const char* path, const char** argv, const char** envp) { int status; pid_t child; if ((child = fork()) == 0) { setenv("MKE2FS_CONFIG", "", 1); execvp(path, argv); execvpe(path, const_cast<char**>(argv), const_cast<char**>(envp)); _exit(EXIT_FAILURE); } if (child < 0) { Loading Loading @@ -131,7 +137,10 @@ static int generate_ext4_image(const char* fileName, long long partSize, mke2fs_args.push_back(size_str.c_str()); mke2fs_args.push_back(nullptr); int ret = exec_e2fs_cmd(mke2fs_args[0], const_cast<char**>(mke2fs_args.data())); const std::string mke2fs_env = "MKE2FS_CONFIG=" + GetExecutableDirectory() + "/mke2fs.conf"; std::vector<const char*> mke2fs_envp = {mke2fs_env.c_str(), nullptr}; int ret = exec_e2fs_cmd(mke2fs_args[0], mke2fs_args.data(), mke2fs_envp.data()); if (ret != 0) { fprintf(stderr, "mke2fs failed: %d\n", ret); return -1; Loading @@ -145,7 +154,7 @@ static int generate_ext4_image(const char* fileName, long long partSize, std::vector<const char*> e2fsdroid_args = {e2fsdroid_path.c_str(), "-f", initial_dir.c_str(), fileName, nullptr}; ret = exec_e2fs_cmd(e2fsdroid_args[0], const_cast<char**>(e2fsdroid_args.data())); ret = exec_e2fs_cmd(e2fsdroid_args[0], e2fsdroid_args.data(), nullptr); if (ret != 0) { fprintf(stderr, "e2fsdroid failed: %d\n", ret); return -1; Loading Loading @@ -173,7 +182,7 @@ static int generate_f2fs_image(const char* fileName, long long partSize, const s mkf2fs_args.push_back(fileName); mkf2fs_args.push_back(nullptr); int ret = exec_e2fs_cmd(mkf2fs_args[0], const_cast<char**>(mkf2fs_args.data())); int ret = exec_e2fs_cmd(mkf2fs_args[0], mkf2fs_args.data(), nullptr); if (ret != 0) { fprintf(stderr, "mkf2fs failed: %d\n", ret); return -1; Loading
init/firmware_handler.cpp +2 −2 Original line number Diff line number Diff line Loading @@ -78,8 +78,8 @@ static void ProcessFirmwareEvent(const Uevent& uevent) { return; } static const char* firmware_dirs[] = {"/etc/firmware/", "/vendor/firmware/", "/firmware/image/"}; static const char* firmware_dirs[] = {"/etc/firmware/", "/odm/firmware/", "/vendor/firmware/", "/firmware/image/"}; try_loading_again: for (size_t i = 0; i < arraysize(firmware_dirs); i++) { Loading
libbacktrace/BacktraceMap.cpp +4 −3 Original line number Diff line number Diff line Loading @@ -40,9 +40,10 @@ BacktraceMap::~BacktraceMap() { void BacktraceMap::FillIn(uintptr_t addr, backtrace_map_t* map) { ScopedBacktraceMapIteratorLock lock(this); for (BacktraceMap::const_iterator it = begin(); it != end(); ++it) { if (addr >= it->start && addr < it->end) { *map = *it; for (auto it = begin(); it != end(); ++it) { const backtrace_map_t* entry = *it; if (addr >= entry->start && addr < entry->end) { *map = *entry; return; } } Loading