binutils Newspaper
JULY 29, 2026
Date
/
Architectures
Components
Topics
News & Policy
Other
objdump

objdump: Fix PE import table for 64-bit architectures

Corrects objdump's display of PE import tables on 64-bit architectures like aarch64.

GNU objdump has been fixed to correctly display the entire import table for Portable Executable (PE) files on 64-bit architectures. Previously, the output was truncated after the first import entry on architectures other than x86_64. The fix ensures that the import lookup table, which contains 64-bit entries on PE32+ formats, is parsed and displayed correctly.

In Details

The pe_print_idata function in bfd/peXXigen.c incorrectly distinguished between PE32 and PE32+ formats. It used a conditional COFF_WITH_pex64 that only covered x86_64, leading to the import lookup table (idata) being processed with 8-byte entries for other 64-bit architectures (like aarch64, loongarch64, riscv64) even though the PE32+ format specifies 64-bit entries. This commit expands the condition to include COFF_WITH_peAArch64, COFF_WITH_peLoongArch64, and COFF_WITH_peRiscV64.

For Context
objdump
A standard Unix utility that displays information from object files. It can show symbol tables, sections, relocation entries, and more.
PE file format
Portable Executable is a file format for executables, object code, dynamic libraries, and core dumps used in 32-bit and 64-bit versions of Windows operating systems. It's also used by some other systems.
Import table (idata)
A section within a PE executable that lists the functions and variables imported from dynamic-link libraries (DLLs). The loader uses this table to resolve external references.
PE32 vs PE32+
PE32 refers to the 32-bit version of the PE file format, while PE32+ is the 64-bit version. The 'plus' signifies support for 64-bit addresses and structures.
aarch64
The 64-bit ARM architecture.
Filed Under: binutilsobjdumppe formataarch64