Re: [PATCH v3 1/1] aarch64: mingw: Prevent relocation types from being overwritten

Evgeny Karpov <[email protected]> Mon, 27 Jul 2026 11:00:05 +0200
Newsgroups gmane.comp.gnu.binutils
Message-ID <[email protected]>
On Sat, 25 Jul 2026, Alan Modra wrote:
> > for strong evidence by using a similar approach,
> > rel->r_type = IMAGE_REL_ARM64_ABSOLUTE.
> > 
> > It might change later, however for now it can stay like this.
> > However as a personal opinion, "rel->r_type = IMAGE_REL_ARM64_ABSOLUTE"
> > looks like a workaround and "rel->r_ignore = 1" looks more clear
> > on what happens.
> 
> Changing r_type to a "do-nothing" code is the way x86 did things, and
> in both coff-i386.c and coff-x86_64.c you'll see r_type set to zero
> with the reloc howto_table having entry 0 an EMPTY_HOWTO.  The
> coff-aarch64.c howto for IMAGE_REL_ARM64_ABSOLUTE also does nothing.
> 
> Well, they are do-nothing except for various checks.  Hmm, and
> emitting a reloc address for dlltool to process.  In fact, I think
> things go wrong there.  When the x86 backend changes an R_SECTION
> to 0, in_reloc_p will return true because howto_table[0].pc_relative
> is false and howto->type is no longer R_SECTION.  That will result in
> the address of these relocs being emitted, which is wrong.  The value
> is an index that shouldn't be relocated.
> 
> aarch64 would have had a similar problem.  So I'm going to apply the
> patch I posted plus the following.

Thank you for the quick replies and these patches. The auto-import implementation
for aarch64-w64-mingw32 will be rebased onto the latest change.

Regards,
Evgeny