summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--view/elf/elfview.cpp8
1 files changed, 6 insertions, 2 deletions
diff --git a/view/elf/elfview.cpp b/view/elf/elfview.cpp
index 1279dead..a3d60456 100644
--- a/view/elf/elfview.cpp
+++ b/view/elf/elfview.cpp
@@ -1094,10 +1094,14 @@ bool ElfView::Init()
DefineAutoSymbol(new Symbol(DataSymbol, "__elf_hash_table", m_hashHeader, NoBinding));
// Gratuitously create sections for the symbol and string tables if none exist
- if (!GetSectionsAt(m_auxSymbolTable.offset).size())
+ if (m_auxSymbolTable.size && !GetSectionsAt(m_auxSymbolTable.offset).size())
AddAutoSection(".dynamic_symtab", m_auxSymbolTable.offset, m_auxSymbolTable.size, ReadOnlyDataSectionSemantics);
- if (!GetSectionsAt(m_dynamicStringTable.offset).size())
+ else if (!m_auxSymbolTable.size)
+ m_logger->LogWarn("Skipping zero-length .dynamic_symtab section at 0x%" PRIx64, m_auxSymbolTable.offset);
+ if (m_dynamicStringTable.size && !GetSectionsAt(m_dynamicStringTable.offset).size())
AddAutoSection(".dynamic_strtab", m_dynamicStringTable.offset, m_dynamicStringTable.size, ReadOnlyDataSectionSemantics);
+ else if (!m_dynamicStringTable.size)
+ m_logger->LogWarn("Skipping zero-length .dynamic_strtab section at 0x%" PRIx64, m_dynamicStringTable.offset);
}
// Parse and create types for ELF GNU hash table