Loading demangle/DemangleTest.cpp +21 −0 Original line number Diff line number Diff line Loading @@ -488,6 +488,27 @@ TEST(DemangleTest, BooleanLiterals) { demangler.Parse("_ZN3oneE3twoI5threeI4fourELb0ELb1EE")); } TEST(DemangleTest, non_virtual_thunk) { Demangler demangler; ASSERT_EQ("non-virtual thunk to one", demangler.Parse("_ZThn0_N3oneE")); ASSERT_EQ("non-virtual thunk to two", demangler.Parse("_ZThn0_3two")); ASSERT_EQ("non-virtual thunk to three", demangler.Parse("_ZTh0_5three")); ASSERT_EQ("non-virtual thunk to four", demangler.Parse("_ZTh_4four")); ASSERT_EQ("non-virtual thunk to five", demangler.Parse("_ZTh0123456789_4five")); ASSERT_EQ("non-virtual thunk to six", demangler.Parse("_ZThn0123456789_3six")); ASSERT_EQ("_ZThn0N3oneE", demangler.Parse("_ZThn0N3oneE")); ASSERT_EQ("_ZThn03two", demangler.Parse("_ZThn03two")); ASSERT_EQ("_ZTh05three", demangler.Parse("_ZTh05three")); ASSERT_EQ("_ZTh4four", demangler.Parse("_ZTh4four")); ASSERT_EQ("_ZTh01234567894five", demangler.Parse("_ZTh01234567894five")); ASSERT_EQ("_ZThn01234567893six", demangler.Parse("_ZThn01234567893six")); ASSERT_EQ("_ZT_N3oneE", demangler.Parse("_ZT_N3oneE")); ASSERT_EQ("_ZT0_N3oneE", demangler.Parse("_ZT0_N3oneE")); ASSERT_EQ("_ZTH_N3oneE", demangler.Parse("_ZTH_N3oneE")); } TEST(DemangleTest, demangle) { std::string str; Loading demangle/Demangler.cpp +25 −1 Original line number Diff line number Diff line Loading @@ -388,7 +388,7 @@ const char* Demangler::ParseFunctionName(const char* name) { saves_.pop_back(); } function_name_ = cur_state_.str; function_name_ += cur_state_.str; while (!cur_state_.suffixes.empty()) { function_suffix_ += cur_state_.suffixes.back(); cur_state_.suffixes.pop_back(); Loading Loading @@ -786,6 +786,30 @@ const char* Demangler::ParseFunctionTemplateArguments(const char* name) { } const char* Demangler::FindFunctionName(const char* name) { if (*name == 'T') { // non-virtual thunk, verify that it matches one of these patterns: // Thn[0-9]+_ // Th[0-9]+_ // Thn_ // Th_ name++; if (*name != 'h') { return nullptr; } name++; if (*name == 'n') { name++; } while (std::isdigit(*name)) { name++; } if (*name != '_') { return nullptr; } function_name_ = "non-virtual thunk to "; return name + 1; } if (*name == 'N') { parse_funcs_.push_back(&Demangler::ParseArgumentsAtTopLevel); parse_func_ = &Demangler::ParseFunctionName; Loading fastboot/Android.mk +0 −1 Original line number Diff line number Diff line Loading @@ -58,7 +58,6 @@ LOCAL_C_INCLUDES_windows := development/host/windows/usb/api LOCAL_STATIC_LIBRARIES := \ libziparchive \ libext4_utils \ libsparse \ libutils \ liblog \ Loading fastboot/fastboot.cpp +3 −4 Original line number Diff line number Diff line Loading @@ -1354,7 +1354,7 @@ static std::string fb_fix_numeric_var(std::string var) { static unsigned fb_get_flash_block_size(Transport* transport, std::string name) { std::string sizeString; if (!fb_getvar(transport, name.c_str(), &sizeString)) { if (!fb_getvar(transport, name.c_str(), &sizeString) || sizeString.empty()) { /* This device does not report flash block sizes, so return 0 */ return 0; } Loading @@ -1365,9 +1365,8 @@ static unsigned fb_get_flash_block_size(Transport* transport, std::string name) fprintf(stderr, "Couldn't parse %s '%s'.\n", name.c_str(), sizeString.c_str()); return 0; } if (size < 4096 || (size & (size - 1)) != 0) { fprintf(stderr, "Invalid %s %u: must be a power of 2 and at least 4096.\n", name.c_str(), size); if ((size & (size - 1)) != 0) { fprintf(stderr, "Invalid %s %u: must be a power of 2.\n", name.c_str(), size); return 0; } return size; Loading fastboot/fs.cpp +2 −1 Original line number Diff line number Diff line Loading @@ -23,7 +23,6 @@ #include <android-base/file.h> #include <android-base/stringprintf.h> #include <android-base/unique_fd.h> #include <ext4_utils/make_ext4fs.h> #include <sparse/sparse.h> using android::base::StringPrintf; Loading Loading @@ -120,6 +119,8 @@ static int generate_ext4_image(const char* fileName, long long partSize, int raid_stripe_width = eraseBlkSize / block_size; // stride should be the max of 8kb and logical block size if (logicalBlkSize != 0 && logicalBlkSize < 8192) raid_stride = 8192 / block_size; // stripe width should be >= stride if (raid_stripe_width < raid_stride) raid_stripe_width = raid_stride; ext_attr += StringPrintf(",stride=%d,stripe-width=%d", raid_stride, raid_stripe_width); } mke2fs_args.push_back("-E"); Loading Loading
demangle/DemangleTest.cpp +21 −0 Original line number Diff line number Diff line Loading @@ -488,6 +488,27 @@ TEST(DemangleTest, BooleanLiterals) { demangler.Parse("_ZN3oneE3twoI5threeI4fourELb0ELb1EE")); } TEST(DemangleTest, non_virtual_thunk) { Demangler demangler; ASSERT_EQ("non-virtual thunk to one", demangler.Parse("_ZThn0_N3oneE")); ASSERT_EQ("non-virtual thunk to two", demangler.Parse("_ZThn0_3two")); ASSERT_EQ("non-virtual thunk to three", demangler.Parse("_ZTh0_5three")); ASSERT_EQ("non-virtual thunk to four", demangler.Parse("_ZTh_4four")); ASSERT_EQ("non-virtual thunk to five", demangler.Parse("_ZTh0123456789_4five")); ASSERT_EQ("non-virtual thunk to six", demangler.Parse("_ZThn0123456789_3six")); ASSERT_EQ("_ZThn0N3oneE", demangler.Parse("_ZThn0N3oneE")); ASSERT_EQ("_ZThn03two", demangler.Parse("_ZThn03two")); ASSERT_EQ("_ZTh05three", demangler.Parse("_ZTh05three")); ASSERT_EQ("_ZTh4four", demangler.Parse("_ZTh4four")); ASSERT_EQ("_ZTh01234567894five", demangler.Parse("_ZTh01234567894five")); ASSERT_EQ("_ZThn01234567893six", demangler.Parse("_ZThn01234567893six")); ASSERT_EQ("_ZT_N3oneE", demangler.Parse("_ZT_N3oneE")); ASSERT_EQ("_ZT0_N3oneE", demangler.Parse("_ZT0_N3oneE")); ASSERT_EQ("_ZTH_N3oneE", demangler.Parse("_ZTH_N3oneE")); } TEST(DemangleTest, demangle) { std::string str; Loading
demangle/Demangler.cpp +25 −1 Original line number Diff line number Diff line Loading @@ -388,7 +388,7 @@ const char* Demangler::ParseFunctionName(const char* name) { saves_.pop_back(); } function_name_ = cur_state_.str; function_name_ += cur_state_.str; while (!cur_state_.suffixes.empty()) { function_suffix_ += cur_state_.suffixes.back(); cur_state_.suffixes.pop_back(); Loading Loading @@ -786,6 +786,30 @@ const char* Demangler::ParseFunctionTemplateArguments(const char* name) { } const char* Demangler::FindFunctionName(const char* name) { if (*name == 'T') { // non-virtual thunk, verify that it matches one of these patterns: // Thn[0-9]+_ // Th[0-9]+_ // Thn_ // Th_ name++; if (*name != 'h') { return nullptr; } name++; if (*name == 'n') { name++; } while (std::isdigit(*name)) { name++; } if (*name != '_') { return nullptr; } function_name_ = "non-virtual thunk to "; return name + 1; } if (*name == 'N') { parse_funcs_.push_back(&Demangler::ParseArgumentsAtTopLevel); parse_func_ = &Demangler::ParseFunctionName; Loading
fastboot/Android.mk +0 −1 Original line number Diff line number Diff line Loading @@ -58,7 +58,6 @@ LOCAL_C_INCLUDES_windows := development/host/windows/usb/api LOCAL_STATIC_LIBRARIES := \ libziparchive \ libext4_utils \ libsparse \ libutils \ liblog \ Loading
fastboot/fastboot.cpp +3 −4 Original line number Diff line number Diff line Loading @@ -1354,7 +1354,7 @@ static std::string fb_fix_numeric_var(std::string var) { static unsigned fb_get_flash_block_size(Transport* transport, std::string name) { std::string sizeString; if (!fb_getvar(transport, name.c_str(), &sizeString)) { if (!fb_getvar(transport, name.c_str(), &sizeString) || sizeString.empty()) { /* This device does not report flash block sizes, so return 0 */ return 0; } Loading @@ -1365,9 +1365,8 @@ static unsigned fb_get_flash_block_size(Transport* transport, std::string name) fprintf(stderr, "Couldn't parse %s '%s'.\n", name.c_str(), sizeString.c_str()); return 0; } if (size < 4096 || (size & (size - 1)) != 0) { fprintf(stderr, "Invalid %s %u: must be a power of 2 and at least 4096.\n", name.c_str(), size); if ((size & (size - 1)) != 0) { fprintf(stderr, "Invalid %s %u: must be a power of 2.\n", name.c_str(), size); return 0; } return size; Loading
fastboot/fs.cpp +2 −1 Original line number Diff line number Diff line Loading @@ -23,7 +23,6 @@ #include <android-base/file.h> #include <android-base/stringprintf.h> #include <android-base/unique_fd.h> #include <ext4_utils/make_ext4fs.h> #include <sparse/sparse.h> using android::base::StringPrintf; Loading Loading @@ -120,6 +119,8 @@ static int generate_ext4_image(const char* fileName, long long partSize, int raid_stripe_width = eraseBlkSize / block_size; // stride should be the max of 8kb and logical block size if (logicalBlkSize != 0 && logicalBlkSize < 8192) raid_stride = 8192 / block_size; // stripe width should be >= stride if (raid_stripe_width < raid_stride) raid_stripe_width = raid_stride; ext_attr += StringPrintf(",stride=%d,stripe-width=%d", raid_stride, raid_stripe_width); } mke2fs_args.push_back("-E"); Loading