mirror of
https://git.suyu.dev/suyu/breakpad.git
synced 2025-12-28 02:05:04 +01:00
Parse additional line introduced in the microdump format and containing the GPU infromation in the following format:
G GL_VERSION|GL_VENDOR|GL_RENDERER. The GPU version, vendor and renderer are extracted during microdump parsing and populated in the appropriate fields in the SystemInfo struct. This is to match the changes introduced in crrev.com/1343713002 and crrev.com/1334473003 BUG=chromium:536769 R=primiano@chromium.org Review URL: https://codereview.chromium.org/1678463002 .
This commit is contained in:
parent
a8f79b0fde
commit
df280bb631
11 changed files with 56 additions and 1 deletions
|
|
@ -54,11 +54,13 @@ static const char kMicrodumpBegin[] = "-----BEGIN BREAKPAD MICRODUMP-----";
|
|||
static const char kMicrodumpEnd[] = "-----END BREAKPAD MICRODUMP-----";
|
||||
static const char kOsKey[] = ": O ";
|
||||
static const char kCpuKey[] = ": C ";
|
||||
static const char kGpuKey[] = ": G ";
|
||||
static const char kMmapKey[] = ": M ";
|
||||
static const char kStackKey[] = ": S ";
|
||||
static const char kStackFirstLineKey[] = ": S 0 ";
|
||||
static const char kArmArchitecture[] = "arm";
|
||||
static const char kArm64Architecture[] = "arm64";
|
||||
static const char kGpuUnknown[] = "UNKNOWN";
|
||||
|
||||
template<typename T>
|
||||
T HexStrToL(const string& str) {
|
||||
|
|
@ -292,6 +294,14 @@ Microdump::Microdump(const string& contents)
|
|||
} else {
|
||||
std::cerr << "Unsupported architecture: " << arch << std::endl;
|
||||
}
|
||||
} else if ((pos = line.find(kGpuKey)) != string::npos) {
|
||||
string gpu_str(line, pos + strlen(kGpuKey));
|
||||
if (strcmp(gpu_str.c_str(), kGpuUnknown) != 0) {
|
||||
std::istringstream gpu_tokens(gpu_str);
|
||||
std::getline(gpu_tokens, system_info_->gl_version, '|');
|
||||
std::getline(gpu_tokens, system_info_->gl_vendor, '|');
|
||||
std::getline(gpu_tokens, system_info_->gl_renderer, '|');
|
||||
}
|
||||
} else if ((pos = line.find(kMmapKey)) != string::npos) {
|
||||
string mmap_line(line, pos + strlen(kMmapKey));
|
||||
std::istringstream mmap_tokens(mmap_line);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue