[PATCH] Fix IAT (Import Address Table) alignment on AArch64

Evgeny Karpov evgeny.karpov@arm.com
Tue Apr 7 14:47:28 GMT 2026


On Tue, Apr 07, 2026, Jan Beulich wrote:
> On 07.04.2026 11:48, Evgeny Karpov wrote:
> > The IAT should be aligned to 8 bytes in aarch64-w64-mingw32, otherwise, it might
> > result in relocation issues.
> 
> What is it that makes this different on aarch64? IOW I wonder if this is
> going too far or not far enough.
> 
> > binutils/ChangeLog:
> > 
> > 	* dlltool.c (make_head): Update.
> 
> Please either omit the ChangeLog entry, or have it say something meaningful.

The updated decription:
---
The IAT should be aligned to 8 bytes in aarch64-w64-mingw32, otherwise, it might
result in relocation issues.

When a function is imported from DLL, it generates the following code:

adrp    x19, __imp_fn
ldr     x19, [x19, #:lo12:__imp_fn]

8 byte alignment is required for ldr relocation. Addresses are placed in IAT.
The size of the chunk on AArch64 is 8 bytes.
If IAT is not aligned to 8 bytes, the relocation issue appears.
This patch fixes this issue.

binutils/ChangeLog:

        * dlltool.c (make_head): Add 8 byte alignment.
---

Regards,
Evgeny


More information about the Binutils mailing list