From 6e4c00a80fa86bcfefba9630a1ea8e2a47bef2de Mon Sep 17 00:00:00 2001 From: Brandon Miller Date: Wed, 28 May 2025 08:33:30 -0400 Subject: Support for Linux x86-64 x32 ABI --- view/elf/elfview.cpp | 12 +----------- 1 file changed, 1 insertion(+), 11 deletions(-) (limited to 'view/elf/elfview.cpp') diff --git a/view/elf/elfview.cpp b/view/elf/elfview.cpp index 6d19bc5f..bb193495 100644 --- a/view/elf/elfview.cpp +++ b/view/elf/elfview.cpp @@ -54,7 +54,7 @@ ElfView::ElfView(BinaryView* data, bool parseOnly): BinaryView("ELF", data->GetF CreateLogger("BinaryView"); m_logger = CreateLogger("BinaryView.ElfView"); m_elf32 = m_ident.fileClass == 1; - m_addressSize = (m_ident.fileClass == 1) ? 4 : 8; + m_addressSize = (m_ident.fileClass == 1 || (m_plat && m_plat->GetName() == "linux-32")) ? 4 : 8; m_endian = endian; m_relocatable = m_commonHeader.type == ET_DYN || m_commonHeader.type == ET_REL; m_objectFile = m_commonHeader.type == ET_REL; @@ -2874,16 +2874,6 @@ uint64_t ElfViewType::ParseHeaders(BinaryView* data, ElfIdent& ident, ElfCommonH commonHeader.arch = reader.Read16(); commonHeader.version = reader.Read32(); - // Promote the file class to 64-bit - // TODO potentially add a setting to allow the user to override header interpretation - if ((commonHeader.type == ET_EXEC) && (commonHeader.arch == EM_X86_64) && (ident.fileClass == 1)) - { - ident.fileClass = 2; - m_logger->LogWarn( - "Executable file claims to be 32-bit but specifies a 64-bit architecture. It is likely malformed or " - "malicious. Treating it as 64-bit."); - } - // parse Elf64Header if (ident.fileClass == 1) // 32-bit ELF { -- cgit v1.3.1