aboutsummaryrefslogtreecommitdiff
path: root/src/common/module.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/common/module.h')
-rw-r--r--src/common/module.h24
1 files changed, 17 insertions, 7 deletions
diff --git a/src/common/module.h b/src/common/module.h
index c1fd9f59..28e8e9c5 100644
--- a/src/common/module.h
+++ b/src/common/module.h
@@ -131,6 +131,10 @@ class Module {
// If this symbol has been folded with other symbols in the linked binary.
bool is_multiple = false;
+
+ // If the function's name should be filled out from a matching Extern,
+ // should they not match.
+ bool prefer_extern_name = false;
};
struct InlineOrigin {
@@ -142,10 +146,6 @@ class Module {
// The inlined function's name.
StringView name;
-
- File* file;
-
- int getFileID() const { return file ? file->source_id : -1; }
};
// A inlined call site.
@@ -224,7 +224,7 @@ class Module {
map<uint64_t, uint64_t> references_;
};
- InlineOriginMap inline_origin_map;
+ map<std::string, InlineOriginMap> inline_origin_maps;
// A source line.
struct Line {
@@ -317,7 +317,8 @@ class Module {
const string& architecture,
const string& id,
const string& code_id = "",
- bool enable_multiple_field = false);
+ bool enable_multiple_field = false,
+ bool prefer_extern_name = false);
~Module();
// Set the module's load address to LOAD_ADDRESS; addresses given
@@ -402,7 +403,7 @@ class Module {
// Set the source id numbers for all other files --- unused by the
// source line data --- to -1. We do this before writing out the
// symbol file, at which point we omit any unused files.
- void AssignSourceIds(set<InlineOrigin*, InlineOriginCompare>& inline_origins);
+ void AssignSourceIds();
// This function should be called before AssignSourceIds() to get the set of
// valid InlineOrigins*.
@@ -502,6 +503,15 @@ class Module {
// at
// https://chromium.googlesource.com/breakpad/breakpad/+/master/docs/symbol_files.md#records-3
bool enable_multiple_field_;
+
+ // If a Function and an Extern share the same address but have a different
+ // name, prefer the name of the Extern.
+ //
+ // Use this when dumping Mach-O .dSYMs built with -gmlt (Minimum Line Tables),
+ // as the Function's fully-qualified name will only be present in the STABS
+ // (which are placed in the Extern), not in the DWARF symbols (which are
+ // placed in the Function).
+ bool prefer_extern_name_;
};
} // namespace google_breakpad