diff options
-rw-r--r-- | src/common/linux/dump_stabs.cc | 40 | ||||
-rw-r--r-- | src/common/linux/dump_stabs_unittest.cc | 66 | ||||
-rw-r--r-- | src/common/linux/dwarf_cu_to_module.cc | 70 | ||||
-rw-r--r-- | src/common/linux/dwarf_cu_to_module_unittest.cc | 32 | ||||
-rw-r--r-- | src/common/linux/dwarf_line_to_module.cc | 8 | ||||
-rw-r--r-- | src/common/linux/dwarf_line_to_module_unittest.cc | 88 | ||||
-rw-r--r-- | src/common/linux/module.cc | 44 | ||||
-rw-r--r-- | src/common/linux/module.h | 22 | ||||
-rw-r--r-- | src/common/linux/module_unittest.cc | 64 |
9 files changed, 217 insertions, 217 deletions
diff --git a/src/common/linux/dump_stabs.cc b/src/common/linux/dump_stabs.cc index e61b274e..23e41aeb 100644 --- a/src/common/linux/dump_stabs.cc +++ b/src/common/linux/dump_stabs.cc @@ -1,4 +1,4 @@ -// Copyright (c) 2009, Google Inc. +// Copyright (c) 2010, Google Inc. // All rights reserved. // // Redistribution and use in source and binary forms, with or without @@ -78,10 +78,10 @@ bool DumpStabsHandler::StartFunction(const string &name, uint64_t address) { assert(!current_function_); Module::Function *f = new Module::Function; - f->name_ = Demangle(name); - f->address_ = address; - f->size_ = 0; // We compute this in DumpStabsHandler::Finalize(). - f->parameter_size_ = 0; // We don't provide this information. + f->name = Demangle(name); + f->address = address; + f->size = 0; // We compute this in DumpStabsHandler::Finalize(). + f->parameter_size = 0; // We don't provide this information. current_function_ = f; boundaries_.push_back(static_cast<Module::Address>(address)); return true; @@ -97,7 +97,7 @@ bool DumpStabsHandler::EndFunction(uint64_t address) { // (I don't really understand the above comment; just bringing it // along from the previous code, and leaving the behaivor unchanged. // If you know the whole story, please patch this comment. --jimb) - if (current_function_->address_ >= comp_unit_base_address_) + if (current_function_->address >= comp_unit_base_address_) functions_.push_back(current_function_); else delete current_function_; @@ -115,11 +115,11 @@ bool DumpStabsHandler::Line(uint64_t address, const char *name, int number) { current_source_file_name_ = name; } Module::Line line; - line.address_ = address; - line.size_ = 0; // We compute this in DumpStabsHandler::Finalize(). - line.file_ = current_source_file_; - line.number_ = number; - current_function_->lines_.push_back(line); + line.address = address; + line.size = 0; // We compute this in DumpStabsHandler::Finalize(). + line.file = current_source_file_; + line.number = number; + current_function_->lines.push_back(line); return true; } @@ -142,27 +142,27 @@ void DumpStabsHandler::Finalize() { Module::Function *f = *func_it; // Compute the function f's size. vector<Module::Address>::iterator boundary - = std::upper_bound(boundaries_.begin(), boundaries_.end(), f->address_); + = std::upper_bound(boundaries_.begin(), boundaries_.end(), f->address); if (boundary != boundaries_.end()) - f->size_ = *boundary - f->address_; + f->size = *boundary - f->address; else // If this is the last function in the module, and the STABS // reader was unable to give us its ending address, then assign // it a bogus, very large value. This will happen at most once // per module: since we've added all functions' addresses to the // boundary table, only one can be the last. - f->size_ = kFallbackSize; + f->size = kFallbackSize; // Compute sizes for each of the function f's lines --- if it has any. - if (!f->lines_.empty()) { - stable_sort(f->lines_.begin(), f->lines_.end(), + if (!f->lines.empty()) { + stable_sort(f->lines.begin(), f->lines.end(), Module::Line::CompareByAddress); - vector<Module::Line>::iterator last_line = f->lines_.end() - 1; - for (vector<Module::Line>::iterator line_it = f->lines_.begin(); + vector<Module::Line>::iterator last_line = f->lines.end() - 1; + for (vector<Module::Line>::iterator line_it = f->lines.begin(); line_it != last_line; line_it++) - line_it[0].size_ = line_it[1].address_ - line_it[0].address_; + line_it[0].size = line_it[1].address - line_it[0].address; // Compute the size of the last line from f's end address. - last_line->size_ = (f->address_ + f->size_) - last_line->address_; + last_line->size = (f->address + f->size) - last_line->address; } } // Now that everything has a size, add our functions to the module, and diff --git a/src/common/linux/dump_stabs_unittest.cc b/src/common/linux/dump_stabs_unittest.cc index ca09f43c..764b187f 100644 --- a/src/common/linux/dump_stabs_unittest.cc +++ b/src/common/linux/dump_stabs_unittest.cc @@ -1,4 +1,4 @@ -// Copyright (c) 2009, Google Inc. +// Copyright (c) 2010, Google Inc. // All rights reserved. // // Redistribution and use in source and binary forms, with or without @@ -60,16 +60,16 @@ TEST(DumpStabsHandler, SimpleCU) { m.GetFunctions(&functions, functions.end()); ASSERT_EQ((size_t) 1, functions.size()); Module::Function *function = functions[0]; - EXPECT_STREQ("function", function->name_.c_str()); - EXPECT_EQ(0xfde4abbed390c394LL, function->address_); - EXPECT_EQ(0x10U, function->size_); - EXPECT_EQ(0U, function->parameter_size_); - ASSERT_EQ((size_t) 1, function->lines_.size()); - Module::Line *line = &function->lines_[0]; - EXPECT_EQ(0xfde4abbed390c394LL, line->address_); - EXPECT_EQ(0x10U, line->size_); // derived from EndFunction - EXPECT_TRUE(line->file_ == file); - EXPECT_EQ(174823314, line->number_); + EXPECT_STREQ("function", function->name.c_str()); + EXPECT_EQ(0xfde4abbed390c394LL, function->address); + EXPECT_EQ(0x10U, function->size); + EXPECT_EQ(0U, function->parameter_size); + ASSERT_EQ((size_t) 1, function->lines.size()); + Module::Line *line = &function->lines[0]; + EXPECT_EQ(0xfde4abbed390c394LL, line->address); + EXPECT_EQ(0x10U, line->size); // derived from EndFunction + EXPECT_TRUE(line->file == file); + EXPECT_EQ(174823314, line->number); } TEST(InferSizes, LineSize) { @@ -101,23 +101,23 @@ TEST(InferSizes, LineSize) { ASSERT_EQ((size_t) 1, functions.size()); Module::Function *function = functions[0]; - EXPECT_STREQ("function", function->name_.c_str()); - EXPECT_EQ(0xb4513962eff94e92LL, function->address_); - EXPECT_EQ(0x1000100000000ULL, function->size_); // inferred from CU end - EXPECT_EQ(0U, function->parameter_size_); - ASSERT_EQ((size_t) 2, function->lines_.size()); - - Module::Line *line1 = &function->lines_[0]; - EXPECT_EQ(0xb4513962eff94e92LL, line1->address_); - EXPECT_EQ(0x100000000ULL, line1->size_); // derived from EndFunction - EXPECT_TRUE(line1->file_ == file1); - EXPECT_EQ(77396614, line1->number_); - - Module::Line *line2 = &function->lines_[1]; - EXPECT_EQ(0xb4513963eff94e92LL, line2->address_); - EXPECT_EQ(0x1000000000000ULL, line2->size_); // derived from EndFunction - EXPECT_TRUE(line2->file_ == file2); - EXPECT_EQ(87660088, line2->number_); + EXPECT_STREQ("function", function->name.c_str()); + EXPECT_EQ(0xb4513962eff94e92LL, function->address); + EXPECT_EQ(0x1000100000000ULL, function->size); // inferred from CU end + EXPECT_EQ(0U, function->parameter_size); + ASSERT_EQ((size_t) 2, function->lines.size()); + + Module::Line *line1 = &function->lines[0]; + EXPECT_EQ(0xb4513962eff94e92LL, line1->address); + EXPECT_EQ(0x100000000ULL, line1->size); // derived from EndFunction + EXPECT_TRUE(line1->file == file1); + EXPECT_EQ(77396614, line1->number); + + Module::Line *line2 = &function->lines[1]; + EXPECT_EQ(0xb4513963eff94e92LL, line2->address); + EXPECT_EQ(0x1000000000000ULL, line2->size); // derived from EndFunction + EXPECT_TRUE(line2->file == file2); + EXPECT_EQ(87660088, line2->number); } TEST(FunctionNames, Mangled) { @@ -148,11 +148,11 @@ TEST(FunctionNames, Mangled) { EXPECT_STREQ("std::vector<unsigned long long, " "std::allocator<unsigned long long> >::" "push_back(unsigned long long const&)", - function->name_.c_str()); - EXPECT_EQ(0xf2cfda63cef7f46dLL, function->address_); - EXPECT_LT(0U, function->size_); // should have used dummy size - EXPECT_EQ(0U, function->parameter_size_); - ASSERT_EQ(0U, function->lines_.size()); + function->name.c_str()); + EXPECT_EQ(0xf2cfda63cef7f46dLL, function->address); + EXPECT_LT(0U, function->size); // should have used dummy size + EXPECT_EQ(0U, function->parameter_size); + ASSERT_EQ(0U, function->lines.size()); } // TODO --- if we actually cared about STABS. Even without these we've diff --git a/src/common/linux/dwarf_cu_to_module.cc b/src/common/linux/dwarf_cu_to_module.cc index 8063d25f..c7cc3688 100644 --- a/src/common/linux/dwarf_cu_to_module.cc +++ b/src/common/linux/dwarf_cu_to_module.cc @@ -316,10 +316,10 @@ void DwarfCUToModule::FuncHandler::Finish() { // Create a Module::Function based on the data we've gathered, and // add it to the functions_ list. Module::Function *func = new Module::Function; - func->name_ = name_; - func->address_ = low_pc_; - func->size_ = high_pc_ - low_pc_; - func->parameter_size_ = 0; + func->name = name_; + func->address = low_pc_; + func->size = high_pc_ - low_pc_; + func->parameter_size = 0; cu_context_->functions.push_back(func); } } @@ -404,15 +404,15 @@ void DwarfCUToModule::WarningReporter::UncoveredFunction( const Module::Function &function) { UncoveredHeading(); fprintf(stderr, " function%s: %s\n", - function.size_ == 0 ? " (zero-length)" : "", - function.name_.c_str()); + function.size == 0 ? " (zero-length)" : "", + function.name.c_str()); } void DwarfCUToModule::WarningReporter::UncoveredLine(const Module::Line &line) { UncoveredHeading(); fprintf(stderr, " line%s: %s:%d at 0x%llx\n", - (line.size_ == 0 ? " (zero-length)" : ""), - line.file_->name_.c_str(), line.number_, line.address_); + (line.size == 0 ? " (zero-length)" : ""), + line.file->name.c_str(), line.number, line.address); } DwarfCUToModule::DwarfCUToModule(FileContext *file_context, @@ -545,7 +545,7 @@ inline bool within(const T &item, Module::Address address) { // Because Module::Address is unsigned, and unsigned arithmetic // wraps around, this will be false if ADDRESS falls before the // start of ITEM, or if it falls after ITEM's end. - return address - item.address_ < item.size_; + return address - item.address < item.size; } } @@ -579,7 +579,7 @@ void DwarfCUToModule::AssignLinesToFunctions() { const Module::Line *last_line_cited = NULL; // Make a single pass through both vectors from lower to higher - // addresses, populating each Function's lines_ vector with lines + // addresses, populating each Function's lines vector with lines // from our lines_ vector that fall within the function's address // range. vector<Module::Function *>::iterator func_it = functions->begin(); @@ -597,15 +597,15 @@ void DwarfCUToModule::AssignLinesToFunctions() { if (func_it != functions->end() && line_it != lines_.end()) { func = *func_it; line = &*line_it; - current = std::min(func->address_, line->address_); + current = std::min(func->address, line->address); } else if (line_it != lines_.end()) { func = NULL; line = &*line_it; - current = line->address_; + current = line->address; } else if (func_it != functions->end()) { func = *func_it; line = NULL; - current = (*func_it)->address_; + current = (*func_it)->address; } else { return; } @@ -640,25 +640,25 @@ void DwarfCUToModule::AssignLinesToFunctions() { // iterator. So neither iterator moves. // Assert the first invariant (see above). - assert(!func || current < func->address_ || within(*func, current)); - assert(!line || current < line->address_ || within(*line, current)); + assert(!func || current < func->address || within(*func, current)); + assert(!line || current < line->address || within(*line, current)); // The next transition after CURRENT. Module::Address next_transition; // Figure out which state we're in, add lines or warn, and compute // the next transition address. - if (func && current >= func->address_) { - if (line && current >= line->address_) { + if (func && current >= func->address) { + if (line && current >= line->address) { // Covered by both a line and a function. - Module::Address func_left = func->size_ - (current - func->address_); - Module::Address line_left = line->size_ - (current - line->address_); + Module::Address func_left = func->size - (current - func->address); + Module::Address line_left = line->size - (current - line->address); // This may overflow, but things work out. next_transition = current + std::min(func_left, line_left); Module::Line l = *line; - l.address_ = current; - l.size_ = next_transition - current; - func->lines_.push_back(l); + l.address = current; + l.size = next_transition - current; + func->lines.push_back(l); last_line_used = line; } else { // Covered by a function, but no line. @@ -666,14 +666,14 @@ void DwarfCUToModule::AssignLinesToFunctions() { reporter->UncoveredFunction(*func); last_function_cited = func; } - if (line && within(*func, line->address_)) - next_transition = line->address_; + if (line && within(*func, line->address)) + next_transition = line->address; else // If this overflows, we'll catch it below. - next_transition = func->address_ + func->size_; + next_transition = func->address + func->size; } } else { - if (line && current >= line->address_) { + if (line && current >= line->address) { // Covered by a line, but no function. // // If GCC emits padding after one function to align the start @@ -688,15 +688,15 @@ void DwarfCUToModule::AssignLinesToFunctions() { if (line != last_line_cited && !(func && line == last_line_used - && func->address_ - line->address_ == line->size_)) { + && func->address - line->address == line->size)) { reporter->UncoveredLine(*line); last_line_cited = line; } - if (func && within(*line, func->address_)) - next_transition = func->address_; + if (func && within(*line, func->address)) + next_transition = func->address; else // If this overflows, we'll catch it below. - next_transition = line->address_ + line->size_; + next_transition = line->address + line->size; } else { // Covered by neither a function nor a line. By the invariant, // both func and line begin after CURRENT. The next transition @@ -704,11 +704,11 @@ void DwarfCUToModule::AssignLinesToFunctions() { // is earliest. assert (func || line); if (func && line) - next_transition = std::min(func->address_, line->address_); + next_transition = std::min(func->address, line->address); else if (func) - next_transition = func->address_; + next_transition = func->address; else - next_transition = line->address_; + next_transition = line->address; } } @@ -724,12 +724,12 @@ void DwarfCUToModule::AssignLinesToFunctions() { // about what result we produce in that case, just as long as we don't // hang or crash. while (func_it != functions->end() - && current >= (*func_it)->address_ + && current >= (*func_it)->address && !within(**func_it, next_transition)) func_it++; func = (func_it != functions->end()) ? *func_it : NULL; while (line_it != lines_.end() - && current >= line_it->address_ + && current >= line_it->address && !within(*line_it, next_transition)) line_it++; line = (line_it != lines_.end()) ? &*line_it : NULL; diff --git a/src/common/linux/dwarf_cu_to_module_unittest.cc b/src/common/linux/dwarf_cu_to_module_unittest.cc index 30ce6ca2..bfaa8c51 100644 --- a/src/common/linux/dwarf_cu_to_module_unittest.cc +++ b/src/common/linux/dwarf_cu_to_module_unittest.cc @@ -276,10 +276,10 @@ const size_t CUFixtureBase::dummy_line_size_ = void CUFixtureBase::PushLine(Module::Address address, Module::Address size, const string &filename, int line_number) { Module::Line l; - l.address_ = address; - l.size_ = size; - l.file_ = module_.FindFile(filename); - l.number_ = line_number; + l.address = address; + l.size = size; + l.file = module_.FindFile(filename); + l.number = line_number; lines_.push_back(l); } @@ -539,17 +539,17 @@ void CUFixtureBase::TestFunction(int i, const string &name, ASSERT_LT((size_t) i, functions_.size()); Module::Function *function = functions_[i]; - EXPECT_EQ(name, function->name_); - EXPECT_EQ(address, function->address_); - EXPECT_EQ(size, function->size_); - EXPECT_EQ(0U, function->parameter_size_); + EXPECT_EQ(name, function->name); + EXPECT_EQ(address, function->address); + EXPECT_EQ(size, function->size); + EXPECT_EQ(0U, function->parameter_size); } void CUFixtureBase::TestLineCount(int i, size_t expected) { FillFunctions(); ASSERT_LT((size_t) i, functions_.size()); - ASSERT_EQ(expected, functions_[i]->lines_.size()); + ASSERT_EQ(expected, functions_[i]->lines.size()); } void CUFixtureBase::TestLine(int i, int j, @@ -557,13 +557,13 @@ void CUFixtureBase::TestLine(int i, int j, const string &filename, int number) { FillFunctions(); ASSERT_LT((size_t) i, functions_.size()); - ASSERT_LT((size_t) j, functions_[i]->lines_.size()); + ASSERT_LT((size_t) j, functions_[i]->lines.size()); - Module::Line *line = &functions_[i]->lines_[j]; - EXPECT_EQ(address, line->address_); - EXPECT_EQ(size, line->size_); - EXPECT_EQ(filename, line->file_->name_.c_str()); - EXPECT_EQ(number, line->number_); + Module::Line *line = &functions_[i]->lines[j]; + EXPECT_EQ(address, line->address); + EXPECT_EQ(size, line->size); + EXPECT_EQ(filename, line->file->name.c_str()); + EXPECT_EQ(number, line->number); } // Include caller locations for our test subroutines. @@ -1280,7 +1280,7 @@ TEST_F(Specifications, InterCU) { vector<Module::Function *> functions; m.GetFunctions(&functions, functions.end()); EXPECT_EQ(1U, functions.size()); - EXPECT_STREQ("class_A::member_func_B", functions[0]->name_.c_str()); + EXPECT_STREQ("class_A::member_func_B", functions[0]->name.c_str()); } TEST_F(Specifications, BadOffset) { diff --git a/src/common/linux/dwarf_line_to_module.cc b/src/common/linux/dwarf_line_to_module.cc index 745d324c..afef1c0e 100644 --- a/src/common/linux/dwarf_line_to_module.cc +++ b/src/common/linux/dwarf_line_to_module.cc @@ -108,11 +108,11 @@ void DwarfLineToModule::AddLine(uint64 address, uint64 length, return; } Module::Line line; - line.address_ = address; + line.address = address; // We set the size when we get the next line or the EndSequence call. - line.size_ = length; - line.file_ = file; - line.number_ = line_num; + line.size = length; + line.file = file; + line.number = line_num; lines_->push_back(line); } diff --git a/src/common/linux/dwarf_line_to_module_unittest.cc b/src/common/linux/dwarf_line_to_module_unittest.cc index ad0bcc8c..c13d6acf 100644 --- a/src/common/linux/dwarf_line_to_module_unittest.cc +++ b/src/common/linux/dwarf_line_to_module_unittest.cc @@ -48,13 +48,13 @@ TEST(Simple, One) { vector<Module::File *> files; m.GetFiles(&files); EXPECT_EQ(1U, files.size()); - EXPECT_STREQ("file1", files[0]->name_.c_str()); + EXPECT_STREQ("file1", files[0]->name.c_str()); EXPECT_EQ(1U, lines.size()); - EXPECT_EQ(0x6fd126fbf74f2680ULL, lines[0].address_); - EXPECT_EQ(0x63c9a14cf556712bULL, lines[0].size_); - EXPECT_TRUE(lines[0].file_ == files[0]); - EXPECT_EQ(0x4c090cbf, lines[0].number_); + EXPECT_EQ(0x6fd126fbf74f2680ULL, lines[0].address); + EXPECT_EQ(0x63c9a14cf556712bULL, lines[0].size); + EXPECT_TRUE(lines[0].file == files[0]); + EXPECT_EQ(0x4c090cbf, lines[0].number); } TEST(Simple, Many) { @@ -83,38 +83,38 @@ TEST(Simple, Many) { vector<Module::File *> files; m.GetFiles(&files); ASSERT_EQ(5U, files.size()); - EXPECT_STREQ("directory1/file1", files[0]->name_.c_str()); - EXPECT_STREQ("directory1/file2", files[1]->name_.c_str()); - EXPECT_STREQ("directory2/file1", files[2]->name_.c_str()); - EXPECT_STREQ("directory2/file2", files[3]->name_.c_str()); - EXPECT_STREQ("file3", files[4]->name_.c_str()); + EXPECT_STREQ("directory1/file1", files[0]->name.c_str()); + EXPECT_STREQ("directory1/file2", files[1]->name.c_str()); + EXPECT_STREQ("directory2/file1", files[2]->name.c_str()); + EXPECT_STREQ("directory2/file2", files[3]->name.c_str()); + EXPECT_STREQ("file3", files[4]->name.c_str()); ASSERT_EQ(5U, lines.size()); - EXPECT_EQ(0x69900c5d553b7274ULL, lines[0].address_); - EXPECT_EQ(0x90fded183f0d0d3cULL, lines[0].size_); - EXPECT_TRUE(lines[0].file_ == files[0]); - EXPECT_EQ(0x15b0f0a9, lines[0].number_); - - EXPECT_EQ(0x45811219a39b7101ULL, lines[1].address_); - EXPECT_EQ(0x25a5e6a924afc41fULL, lines[1].size_); - EXPECT_TRUE(lines[1].file_ == files[2]); - EXPECT_EQ(0x4d259ce9, lines[1].number_); - - EXPECT_EQ(0xfa90514c1dc9704bULL, lines[2].address_); - EXPECT_EQ(0x0063efeabc02f313ULL, lines[2].size_); - EXPECT_TRUE(lines[2].file_ == files[1]); - EXPECT_EQ(0x1ee9fa4f, lines[2].number_); - - EXPECT_EQ(0x556b55fb6a647b10ULL, lines[3].address_); - EXPECT_EQ(0x3f3089ca2bfd80f5ULL, lines[3].size_); - EXPECT_TRUE(lines[3].file_ == files[3]); - EXPECT_EQ(0x77fc280e, lines[3].number_); - - EXPECT_EQ(0xe2d72a37f8d9403aULL, lines[4].address_); - EXPECT_EQ(0x034dfab5b0d4d236ULL, lines[4].size_); - EXPECT_TRUE(lines[4].file_ == files[4]); - EXPECT_EQ(0x75047044, lines[4].number_); + EXPECT_EQ(0x69900c5d553b7274ULL, lines[0].address); + EXPECT_EQ(0x90fded183f0d0d3cULL, lines[0].size); + EXPECT_TRUE(lines[0].file == files[0]); + EXPECT_EQ(0x15b0f0a9, lines[0].number); + + EXPECT_EQ(0x45811219a39b7101ULL, lines[1].address); + EXPECT_EQ(0x25a5e6a924afc41fULL, lines[1].size); + EXPECT_TRUE(lines[1].file == files[2]); + EXPECT_EQ(0x4d259ce9, lines[1].number); + + EXPECT_EQ(0xfa90514c1dc9704bULL, lines[2].address); + EXPECT_EQ(0x0063efeabc02f313ULL, lines[2].size); + EXPECT_TRUE(lines[2].file == files[1]); + EXPECT_EQ(0x1ee9fa4f, lines[2].number); + + EXPECT_EQ(0x556b55fb6a647b10ULL, lines[3].address); + EXPECT_EQ(0x3f3089ca2bfd80f5ULL, lines[3].size); + EXPECT_TRUE(lines[3].file == files[3]); + EXPECT_EQ(0x77fc280e, lines[3].number); + + EXPECT_EQ(0xe2d72a37f8d9403aULL, lines[4].address); + EXPECT_EQ(0x034dfab5b0d4d236ULL, lines[4].size); + EXPECT_TRUE(lines[4].file == files[4]); + EXPECT_EQ(0x75047044, lines[4].number); } TEST(Filenames, Absolute) { @@ -130,9 +130,9 @@ TEST(Filenames, Absolute) { vector<Module::File *> files; m.GetFiles(&files); ASSERT_EQ(1U, files.size()); - EXPECT_STREQ("/absolute", files[0]->name_.c_str()); + EXPECT_STREQ("/absolute", files[0]->name.c_str()); ASSERT_EQ(1U, lines.size()); - EXPECT_TRUE(lines[0].file_ == files[0]); + EXPECT_TRUE(lines[0].file == files[0]); } TEST(Filenames, Relative) { @@ -148,9 +148,9 @@ TEST(Filenames, Relative) { vector<Module::File *> files; m.GetFiles(&files); ASSERT_EQ(1U, files.size()); - EXPECT_STREQ("directory1/relative", files[0]->name_.c_str()); + EXPECT_STREQ("directory1/relative", files[0]->name.c_str()); ASSERT_EQ(1U, lines.size()); - EXPECT_TRUE(lines[0].file_ == files[0]); + EXPECT_TRUE(lines[0].file == files[0]); } TEST(Filenames, StrangeFile) { @@ -163,7 +163,7 @@ TEST(Filenames, StrangeFile) { h.AddLine(1, 1, 1, 0, 0); ASSERT_EQ(1U, lines.size()); - EXPECT_STREQ("directory1/", lines[0].file_->name_.c_str()); + EXPECT_STREQ("directory1/", lines[0].file->name.c_str()); } TEST(Filenames, StrangeDirectory) { @@ -176,7 +176,7 @@ TEST(Filenames, StrangeDirectory) { h.AddLine(1, 1, 1, 0, 0); ASSERT_EQ(1U, lines.size()); - EXPECT_STREQ("/file1", lines[0].file_->name_.c_str()); + EXPECT_STREQ("/file1", lines[0].file->name.c_str()); } TEST(Filenames, StrangeDirectoryAndFile) { @@ -189,7 +189,7 @@ TEST(Filenames, StrangeDirectoryAndFile) { h.AddLine(1, 1, 1, 0, 0); ASSERT_EQ(1U, lines.size()); - EXPECT_STREQ("/", lines[0].file_->name_.c_str()); + EXPECT_STREQ("/", lines[0].file->name.c_str()); } // We should silently ignore attempts to define directory number zero, @@ -205,7 +205,7 @@ TEST(Errors, DirectoryZero) { h.AddLine(1, 1, 1, 0, 0); ASSERT_EQ(1U, lines.size()); - EXPECT_STREQ("relative", lines[0].file_->name_.c_str()); + EXPECT_STREQ("relative", lines[0].file->name.c_str()); } // We should refuse to add lines with bogus file numbers. We should @@ -235,7 +235,7 @@ TEST(Errors, BadDirectoryNumber) { h.AddLine(1, 1, 1, 0, 0); ASSERT_EQ(1U, lines.size()); - EXPECT_STREQ("baddirnumber1", lines[0].file_->name_.c_str()); + EXPECT_STREQ("baddirnumber1", lines[0].file->name.c_str()); } // We promise not to report empty lines. @@ -261,5 +261,5 @@ TEST(Errors, BigLine) { h.AddLine(0xffffffffffffffffULL, 2, 1, 0, 0); ASSERT_EQ(1U, lines.size()); - EXPECT_EQ(1U, lines[0].size_); + EXPECT_EQ(1U, lines[0].size); } diff --git a/src/common/linux/module.cc b/src/common/linux/module.cc index 70b70ab5..57352ff8 100644 --- a/src/common/linux/module.cc +++ b/src/common/linux/module.cc @@ -1,4 +1,4 @@ -// Copyright (c) 2009, Google Inc. +// Copyright (c) 2010, Google Inc. // All rights reserved. // // Redistribution and use in source and binary forms, with or without @@ -83,10 +83,10 @@ Module::File *Module::FindFile(const string &name) { if (destiny == files_.end() || *destiny->first != name) { // Repeated string comparison, boo hoo. File *file = new File; - file->name_ = name; - file->source_id_ = -1; + file->name = name; + file->source_id = -1; destiny = files_.insert(destiny, - FileByNameMap::value_type(&file->name_, file)); + FileByNameMap::value_type(&file->name, file)); } return destiny->second; } @@ -111,16 +111,16 @@ void Module::AssignSourceIds() { // First, give every source file an id of -1. for (FileByNameMap::iterator file_it = files_.begin(); file_it != files_.end(); file_it++) - file_it->second->source_id_ = -1; + file_it->second->source_id = -1; // Next, mark all files actually cited by our functions' line number // info, by setting each one's source id to zero. for (vector<Function *>::const_iterator func_it = functions_.begin(); func_it != functions_.end(); func_it++) { Function *func = *func_it; - for (vector<Line>::iterator line_it = func->lines_.begin(); - line_it != func->lines_.end(); line_it++) - line_it->file_->source_id_ = 0; + for (vector<Line>::iterator line_it = func->lines.begin(); + line_it != func->lines.end(); line_it++) + line_it->file->source_id = 0; } // Finally, assign source ids to those files that have been marked. @@ -130,8 +130,8 @@ void Module::AssignSourceIds() { int next_source_id = 0; for (FileByNameMap::iterator file_it = files_.begin(); file_it != files_.end(); file_it++) - if (! file_it->second->source_id_) - file_it->second->source_id_ = next_source_id++; + if (! file_it->second->source_id) + file_it->second->source_id = next_source_id++; } bool Module::ReportError() { @@ -152,9 +152,9 @@ bool Module::Write(FILE *stream) { for (FileByNameMap::iterator file_it = files_.begin(); file_it != files_.end(); file_it++) { File *file = file_it->second; - if (file->source_id_ >= 0) { + if (file->source_id >= 0) { if (0 > fprintf(stream, "FILE %d %s\n", - file->source_id_, file->name_.c_str())) + file->source_id, file->name.c_str())) return ReportError(); } } @@ -164,18 +164,18 @@ bool Module::Write(FILE *stream) { func_it != functions_.end(); func_it++) { Function *func = *func_it; if (0 > fprintf(stream, "FUNC %llx %llx %llx %s\n", - (unsigned long long) (func->address_ - load_address_), - (unsigned long long) func->size_, - (unsigned long long) func->parameter_size_, - func->name_.c_str())) + (unsigned long long) (func->address - load_address_), + (unsigned long long) func->size, + (unsigned long long) func->parameter_size, + func->name.c_str())) return ReportError(); - for (vector<Line>::iterator line_it = func->lines_.begin(); - line_it != func->lines_.end(); line_it++) + for (vector<Line>::iterator line_it = func->lines.begin(); + line_it != func->lines.end(); line_it++) if (0 > fprintf(stream, "%llx %llx %d %d\n", - (unsigned long long) (line_it->address_ - load_address_), - (unsigned long long) line_it->size_, - line_it->number_, - line_it->file_->source_id_)) + (unsigned long long) (line_it->address - load_address_), + (unsigned long long) line_it->size, + line_it->number, + line_it->file->source_id)) return ReportError(); } diff --git a/src/common/linux/module.h b/src/common/linux/module.h index ef9e114b..1feac8a7 100644 --- a/src/common/linux/module.h +++ b/src/common/linux/module.h @@ -67,12 +67,12 @@ class Module { // A source file. struct File { // The name of the source file. - string name_; + string name; // The file's source id. The Write member function clears this // field and assigns source ids a fresh, so any value placed here // before calling Write will be lost. - int source_id_; + int source_id; }; // A function. @@ -80,21 +80,21 @@ class Module { // For sorting by address. (Not style-guide compliant, but it's // stupid not to put this in the struct.) static bool CompareByAddress(const Function *x, const Function *y) { - return x->address_ < y->address_; + return x->address < y->address; } // The function's name. - string name_; + string name; // The start address and length of the function's code. - Address address_, size_; + Address address, size; // The function's parameter size. - Address parameter_size_; + Address parameter_size; // Source lines belonging to this function, sorted by increasing // address. - vector<Line> lines_; + vector<Line> lines; }; // A source line. @@ -102,12 +102,12 @@ class Module { // For sorting by address. (Not style-guide compliant, but it's // stupid not to put this in the struct.) static bool CompareByAddress(const Module::Line &x, const Module::Line &y) { - return x.address_ < y.address_; + return x.address < y.address; } - Address address_, size_; // The address and size of the line's code. - File *file_; // The source file. - int number_; // The source line number. + Address address, size; // The address and size of the line's code. + File *file; // The source file. + int number; // The source line number. }; // Create a new module with the given name, operating system, diff --git a/src/common/linux/module_unittest.cc b/src/common/linux/module_unittest.cc index 2520a236..975d2ff6 100644 --- a/src/common/linux/module_unittest.cc +++ b/src/common/linux/module_unittest.cc @@ -1,4 +1,4 @@ -// Copyright (c) 2009, Google Inc. +// Copyright (c) 2010, Google Inc. // All rights reserved. // // Redistribution and use in source and binary forms, with or without @@ -111,13 +111,13 @@ TEST(Write, OneLineFunc) { Module::File *file = m.FindFile("file_name.cc"); Module::Function *function = new(Module::Function); - function->name_ = "function_name"; - function->address_ = 0xe165bf8023b9d9abLL; - function->size_ = 0x1e4bb0eb1cbf5b09LL; - function->parameter_size_ = 0x772beee89114358aLL; + function->name = "function_name"; + function->address = 0xe165bf8023b9d9abLL; + function->size = 0x1e4bb0eb1cbf5b09LL; + function->parameter_size = 0x772beee89114358aLL; Module::Line line = { 0xe165bf8023b9d9abLL, 0x1e4bb0eb1cbf5b09LL, file, 67519080 }; - function->lines_.push_back(line); + function->lines.push_back(line); m.AddFunction(function); m.Write(f); @@ -145,18 +145,18 @@ TEST(Write, RelativeLoadAddress) { // A function. Module::Function *function = new(Module::Function); - function->name_ = "A_FLIBBERTIJIBBET::a_will_o_the_wisp(a clown)"; - function->address_ = 0xbec774ea5dd935f3LL; - function->size_ = 0x2922088f98d3f6fcLL; - function->parameter_size_ = 0xe5e9aa008bd5f0d0LL; + function->name = "A_FLIBBERTIJIBBET::a_will_o_the_wisp(a clown)"; + function->address = 0xbec774ea5dd935f3LL; + function->size = 0x2922088f98d3f6fcLL; + function->parameter_size = 0xe5e9aa008bd5f0d0LL; // Some source lines. The module should not sort these. Module::Line line1 = { 0xbec774ea5dd935f3LL, 0x1c2be6d6c5af2611LL, file1, 41676901 }; Module::Line line2 = { 0xdaf35bc123885c04LL, 0xcf621b8d324d0ebLL, file2, 67519080 }; - function->lines_.push_back(line2); - function->lines_.push_back(line1); + function->lines.push_back(line2); + function->lines.push_back(line1); m.AddFunction(function); @@ -185,18 +185,18 @@ TEST(Write, OmitUnusedFiles) { // Create a function. Module::Function *function = new(Module::Function); - function->name_ = "function_name"; - function->address_ = 0x9b926d464f0b9384LL; - function->size_ = 0x4f524a4ba795e6a6LL; - function->parameter_size_ = 0xbbe8133a6641c9b7LL; + function->name = "function_name"; + function->address = 0x9b926d464f0b9384LL; + function->size = 0x4f524a4ba795e6a6LL; + function->parameter_size = 0xbbe8133a6641c9b7LL; // Source files that refer to some files, but not others. Module::Line line1 = { 0x595fa44ebacc1086LL, 0x1e1e0191b066c5b3LL, file1, 137850127 }; Module::Line line2 = { 0x401ce8c8a12d25e3LL, 0x895751c41b8d2ce2LL, file3, 28113549 }; - function->lines_.push_back(line1); - function->lines_.push_back(line2); + function->lines.push_back(line1); + function->lines.push_back(line2); m.AddFunction(function); m.AssignSourceIds(); @@ -204,13 +204,13 @@ TEST(Write, OmitUnusedFiles) { vector<Module::File *> vec; m.GetFiles(&vec); EXPECT_EQ((size_t) 3, vec.size()); - EXPECT_STREQ("filename1", vec[0]->name_.c_str()); - EXPECT_NE(-1, vec[0]->source_id_); + EXPECT_STREQ("filename1", vec[0]->name.c_str()); + EXPECT_NE(-1, vec[0]->source_id); // Expect filename2 not to be used. - EXPECT_STREQ("filename2", vec[1]->name_.c_str()); - EXPECT_EQ(-1, vec[1]->source_id_); - EXPECT_STREQ("filename3", vec[2]->name_.c_str()); - EXPECT_NE(-1, vec[2]->source_id_); + EXPECT_STREQ("filename2", vec[1]->name.c_str()); + EXPECT_EQ(-1, vec[1]->source_id); + EXPECT_STREQ("filename3", vec[2]->name.c_str()); + EXPECT_NE(-1, vec[2]->source_id); FILE *f = checked_tmpfile(); m.Write(f); @@ -234,16 +234,16 @@ TEST(Construct, AddFunctions) { // Two functions. Module::Function *function1 = new(Module::Function); - function1->name_ = "_without_form"; - function1->address_ = 0xd35024aa7ca7da5cLL; - function1->size_ = 0x200b26e605f99071LL; - function1->parameter_size_ = 0xf14ac4fed48c4a99LL; + function1->name = "_without_form"; + function1->address = 0xd35024aa7ca7da5cLL; + function1->size = 0x200b26e605f99071LL; + function1->parameter_size = 0xf14ac4fed48c4a99LL; Module::Function *function2 = new(Module::Function); - function2->name_ = "_and_void"; - function2->address_ = 0x2987743d0b35b13fLL; - function2->size_ = 0xb369db048deb3010LL; - function2->parameter_size_ = 0x938e556cb5a79988LL; + function2->name = "_and_void"; + function2->address = 0x2987743d0b35b13fLL; + function2->size = 0xb369db048deb3010LL; + function2->parameter_size = 0x938e556cb5a79988LL; // Put them in a vector. vector<Module::Function *> vec; |