mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-06-19 18:24:00 +00:00
Readobj: If NumbersOfSections is 0xffff, it's an COFF import library.
0xffff does not mean that there are 65535 sections in a COFF file but indicates that it's a COFF import library. This patch fixes SEGV error when an import library file is passed to llvm-readobj. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@194844 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@ -507,9 +507,10 @@ COFFObjectFile::COFFObjectFile(MemoryBuffer *Object, error_code &ec)
|
||||
CurPtr += COFFHeader->SizeOfOptionalHeader;
|
||||
}
|
||||
|
||||
if ((ec = getObject(SectionTable, Data, base() + CurPtr,
|
||||
COFFHeader->NumberOfSections * sizeof(coff_section))))
|
||||
return;
|
||||
if (!COFFHeader->isImportLibrary())
|
||||
if ((ec = getObject(SectionTable, Data, base() + CurPtr,
|
||||
COFFHeader->NumberOfSections * sizeof(coff_section))))
|
||||
return;
|
||||
|
||||
// Initialize the pointer to the symbol table.
|
||||
if (COFFHeader->PointerToSymbolTable != 0)
|
||||
@ -586,7 +587,9 @@ section_iterator COFFObjectFile::begin_sections() const {
|
||||
|
||||
section_iterator COFFObjectFile::end_sections() const {
|
||||
DataRefImpl ret;
|
||||
ret.p = reinterpret_cast<uintptr_t>(SectionTable + COFFHeader->NumberOfSections);
|
||||
int numSections = COFFHeader->isImportLibrary()
|
||||
? 0 : COFFHeader->NumberOfSections;
|
||||
ret.p = reinterpret_cast<uintptr_t>(SectionTable + numSections);
|
||||
return section_iterator(SectionRef(ret, this));
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user