Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1)

Side by Side Diff: src/common/module.h

Issue 2052263002: Dump INFO CODE_ID containing Build ID in Linux dump_syms (Closed) Base URL: https://chromium.googlesource.com/breakpad/breakpad.git@master
Patch Set: Oops, it's supposed to be INFO CODE_ID Created 4 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « src/common/linux/file_id_unittest.cc ('k') | src/common/module.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // -*- mode: c++ -*- 1 // -*- mode: c++ -*-
2 2
3 // Copyright (c) 2010 Google Inc. 3 // Copyright (c) 2010 Google Inc.
4 // All rights reserved. 4 // All rights reserved.
5 // 5 //
6 // Redistribution and use in source and binary forms, with or without 6 // Redistribution and use in source and binary forms, with or without
7 // modification, are permitted provided that the following conditions are 7 // modification, are permitted provided that the following conditions are
8 // met: 8 // met:
9 // 9 //
10 // * Redistributions of source code must retain the above copyright 10 // * Redistributions of source code must retain the above copyright
(...skipping 161 matching lines...) Expand 10 before | Expand all | Expand 10 after
172 struct ExternCompare { 172 struct ExternCompare {
173 bool operator() (const Extern *lhs, 173 bool operator() (const Extern *lhs,
174 const Extern *rhs) const { 174 const Extern *rhs) const {
175 return lhs->address < rhs->address; 175 return lhs->address < rhs->address;
176 } 176 }
177 }; 177 };
178 178
179 // Create a new module with the given name, operating system, 179 // Create a new module with the given name, operating system,
180 // architecture, and ID string. 180 // architecture, and ID string.
181 Module(const string &name, const string &os, const string &architecture, 181 Module(const string &name, const string &os, const string &architecture,
182 const string &id); 182 const string &id, const string &code_id = "");
183 ~Module(); 183 ~Module();
184 184
185 // Set the module's load address to LOAD_ADDRESS; addresses given 185 // Set the module's load address to LOAD_ADDRESS; addresses given
186 // for functions and lines will be written to the Breakpad symbol 186 // for functions and lines will be written to the Breakpad symbol
187 // file as offsets from this address. Construction initializes this 187 // file as offsets from this address. Construction initializes this
188 // module's load address to zero: addresses written to the symbol 188 // module's load address to zero: addresses written to the symbol
189 // file will be the same as they appear in the Function, Line, and 189 // file will be the same as they appear in the Function, Line, and
190 // StackFrameEntry structures. 190 // StackFrameEntry structures.
191 // 191 //
192 // Note that this member function has no effect on addresses stored 192 // Note that this member function has no effect on addresses stored
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after
274 // If symbol_data is not NO_CFI then: 274 // If symbol_data is not NO_CFI then:
275 // - all CFI records. 275 // - all CFI records.
276 // Addresses in the output are all relative to the load address 276 // Addresses in the output are all relative to the load address
277 // established by SetLoadAddress. 277 // established by SetLoadAddress.
278 bool Write(std::ostream &stream, SymbolData symbol_data); 278 bool Write(std::ostream &stream, SymbolData symbol_data);
279 279
280 string name() const { return name_; } 280 string name() const { return name_; }
281 string os() const { return os_; } 281 string os() const { return os_; }
282 string architecture() const { return architecture_; } 282 string architecture() const { return architecture_; }
283 string identifier() const { return id_; } 283 string identifier() const { return id_; }
284 string code_identifier() const { return code_id_; }
284 285
285 private: 286 private:
286 // Report an error that has occurred writing the symbol file, using 287 // Report an error that has occurred writing the symbol file, using
287 // errno to find the appropriate cause. Return false. 288 // errno to find the appropriate cause. Return false.
288 static bool ReportError(); 289 static bool ReportError();
289 290
290 // Write RULE_MAP to STREAM, in the form appropriate for 'STACK CFI' 291 // Write RULE_MAP to STREAM, in the form appropriate for 'STACK CFI'
291 // records, without a final newline. Return true if all goes well; 292 // records, without a final newline. Return true if all goes well;
292 // if an error occurs, return false, and leave errno set. 293 // if an error occurs, return false, and leave errno set.
293 static bool WriteRuleMap(const RuleMap &rule_map, std::ostream &stream); 294 static bool WriteRuleMap(const RuleMap &rule_map, std::ostream &stream);
294 295
295 // Module header entries. 296 // Module header entries.
296 string name_, os_, architecture_, id_; 297 string name_, os_, architecture_, id_, code_id_;
297 298
298 // The module's nominal load address. Addresses for functions and 299 // The module's nominal load address. Addresses for functions and
299 // lines are absolute, assuming the module is loaded at this 300 // lines are absolute, assuming the module is loaded at this
300 // address. 301 // address.
301 Address load_address_; 302 Address load_address_;
302 303
303 // Relation for maps whose keys are strings shared with some other 304 // Relation for maps whose keys are strings shared with some other
304 // structure. 305 // structure.
305 struct CompareStringPtrs { 306 struct CompareStringPtrs {
306 bool operator()(const string *x, const string *y) const { return *x < *y; } 307 bool operator()(const string *x, const string *y) const { return *x < *y; }
(...skipping 20 matching lines...) Expand all
327 vector<StackFrameEntry *> stack_frame_entries_; 328 vector<StackFrameEntry *> stack_frame_entries_;
328 329
329 // The module owns all the externs that have been added to it; 330 // The module owns all the externs that have been added to it;
330 // destroying the module frees the Externs these point to. 331 // destroying the module frees the Externs these point to.
331 ExternSet externs_; 332 ExternSet externs_;
332 }; 333 };
333 334
334 } // namespace google_breakpad 335 } // namespace google_breakpad
335 336
336 #endif // COMMON_LINUX_MODULE_H__ 337 #endif // COMMON_LINUX_MODULE_H__
OLDNEW
« no previous file with comments | « src/common/linux/file_id_unittest.cc ('k') | src/common/module.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698