@@ -2170,8 +2170,7 @@ bool ElfView::Init()
2170
2170
DefineAutoSymbol (new Symbol (DataSymbol, " __elf_dynamic_table" , adjustedVirtualAddr, NoBinding));
2171
2171
}
2172
2172
2173
- // Add types for the dynamic symbol table
2174
- if (m_auxSymbolTable.size )
2173
+ if (m_auxSymbolTable.size || m_symbolTableSection.offset )
2175
2174
{
2176
2175
StructureBuilder symTableBuilder;
2177
2176
if (m_elf32)
@@ -2196,9 +2195,25 @@ bool ElfView::Init()
2196
2195
Ref<Type> symTableType = Type::StructureType (symTableStruct);
2197
2196
QualifiedName symTableName = m_elf32 ? string (" Elf32_Sym" ) : string (" Elf64_Sym" );
2198
2197
const string symTableTypeId = Type::GenerateAutoTypeId (" elf" , symTableName);
2199
- QualifiedName symTableTypeName = DefineType (symTableTypeId, symTableName, symTableType);
2200
- DefineDataVariable (m_auxSymbolTable.offset , Type::ArrayType (Type::NamedType (this , symTableTypeName), m_auxSymbolTable.size / m_auxSymbolTableEntrySize));
2201
- DefineAutoSymbol (new Symbol (DataSymbol, " __elf_symbol_table" , m_auxSymbolTable.offset , NoBinding));
2198
+
2199
+ // Add types for the dynamic symbol table
2200
+ if (m_auxSymbolTable.size )
2201
+ {
2202
+ auto defineAuxSymTableForView = [&](Ref<BinaryView> view) {
2203
+ QualifiedName symTableTypeName = view->DefineType (symTableTypeId, symTableName, symTableType);
2204
+ view->DefineDataVariable (m_auxSymbolTable.offset , Type::ArrayType (Type::NamedType (this , symTableTypeName), m_auxSymbolTable.size / m_auxSymbolTableEntrySize));
2205
+ view->DefineAutoSymbol (new Symbol (DataSymbol, " __elf_symbol_table" , m_auxSymbolTable.offset , NoBinding));
2206
+ };
2207
+ defineAuxSymTableForView (this );
2208
+ defineAuxSymTableForView (GetParentView ());
2209
+ }
2210
+
2211
+ if (m_symbolTableSection.offset )
2212
+ {
2213
+ QualifiedName symTableTypeName = GetParentView ()->DefineType (symTableTypeId, symTableName, symTableType);
2214
+ GetParentView ()->DefineDataVariable (m_symbolTableSection.offset , Type::ArrayType (Type::NamedType (this , symTableTypeName), m_symbolTableSection.size / m_auxSymbolTableEntrySize));
2215
+ GetParentView ()->DefineAutoSymbol (new Symbol (DataSymbol, " __elf_symbol_table" , m_symbolTableSection.offset , NoBinding));
2216
+ }
2202
2217
}
2203
2218
2204
2219
// In 32-bit mips with .got, add .extern symbol "RTL_Resolve"
0 commit comments