diff options
Diffstat (limited to 'include/llvm/Object/IRSymtab.h')
-rw-r--r-- | include/llvm/Object/IRSymtab.h | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/include/llvm/Object/IRSymtab.h b/include/llvm/Object/IRSymtab.h index 824a67a672fa..5f6a024cd132 100644 --- a/include/llvm/Object/IRSymtab.h +++ b/include/llvm/Object/IRSymtab.h @@ -121,6 +121,9 @@ struct Uncommon { /// COFF-specific: the name of the symbol that a weak external resolves to /// if not defined. Str COFFWeakExternFallbackName; + + /// Specified section name, if any. + Str SectionName; }; struct Header { @@ -128,7 +131,7 @@ struct Header { /// when the format changes, but it does not need to be incremented if a /// change to LLVM would cause it to create a different symbol table. Word Version; - enum { kCurrentVersion = 0 }; + enum { kCurrentVersion = 1 }; /// The producer's version string (LLVM_VERSION_STRING " " LLVM_REVISION). /// Consumers should rebuild the symbol table from IR if the producer's @@ -165,6 +168,7 @@ struct Symbol { // Copied from storage::Uncommon. uint32_t CommonSize, CommonAlign; StringRef COFFWeakExternFallbackName; + StringRef SectionName; /// Returns the mangled symbol name. StringRef getName() const { return Name; } @@ -215,6 +219,8 @@ struct Symbol { assert(isWeak() && isIndirect()); return COFFWeakExternFallbackName; } + + StringRef getSectionName() const { return SectionName; } }; /// This class can be used to read a Symtab and Strtab produced by @@ -300,7 +306,10 @@ class Reader::SymbolRef : public Symbol { CommonSize = UncI->CommonSize; CommonAlign = UncI->CommonAlign; COFFWeakExternFallbackName = R->str(UncI->COFFWeakExternFallbackName); - } + SectionName = R->str(UncI->SectionName); + } else + // Reset this field so it can be queried unconditionally for all symbols. + SectionName = ""; } public: |