binutils Newspaper
OCTOBER 6, 2026
gas — Proposed

ld, gas: Run AArch64 PE tests for aarch64-pc-cygwin

AArch64 PE tests are now enabled for the aarch64-pc-cygwin target, expanding test coverage.

This patch enables several AArch64 PE (Portable Executable) tests for the aarch64-pc-cygwin target. Previously, these tests were skipped because their gating conditions did not include Cygwin. The changes add aarch64-pc-cygwin to the relevant test gates, allowing existing tests for image base, .secrel32, .secidx, PDB, CodeView, and SEH to run. This expands test coverage without introducing new tests, leveraging the existing emulation and object format compatibility.

In the Thread 2 participants
  1. Dennis Ameling proposer

    Adds the `aarch64-pc-cygwin` target to the gating conditions for various AArch64 PE tests in `ld` and `gas`.

    “Add the target to those gates. This runs existing coverage rather than adding new tests: the image base, .secrel32 and .secidx link tests, the PDB tests, which this target supports, the gas PE and SEH tests, and the CodeView tests, CodeView being a PE debug format that the PDB support consumes.”
  2. Alice Carlotti reviewer

    Reviewed the proposed patch, noting the specific exclusion of the `pe-aarch64` test in `ld` due to differing image base behavior on Cygwin targets.

    “pe-aarch64 in ld is deliberately left out. It matches absolute addresses and so is specific to the 0x140000000 image base, whereas Cygwin targets set move_default_addr_high and default to 0x100400000.”

Technical Tradeoffs

  • Increases test coverage for the `aarch64-pc-cygwin` target.
  • Ensures existing tests correctly validate PE format features on this target.
  • Maintains separation for a specific `ld` test with different behavior on Cygwin.

In Details

This patch modifies test suite configuration files (.exp files) for gas and ld to include the aarch64-pc-cygwin target in the gating conditions for several AArch64 PE (Portable Executable) tests. These tests cover aspects like image base, section relocations (.secrel32, .secidx), PDB (Program Database), CodeView debug information, and SEH (Structured Exception Handling). The inclusion is justified because aarch64-pc-cygwin uses the same aarch64pe emulation and PE object format as other supported PE targets. A specific ld test (pe-aarch64) is intentionally excluded due to C…

For Context
AArch64
The 64-bit ARM architecture.
PE
Portable Executable, the file format used for executables, DLLs, and object files on 32-bit and 64-bit versions of Windows.
gas
The GNU Assembler, part of the GNU Binutils package, responsible for converting assembly language code into machine code.
ld
The GNU linker, part of the GNU Binutils package, responsible for combining object files and libraries into an executable or shared library.
aarch64-pc-cygwin
A target triple specifying the architecture (AArch64), vendor (pc), and operating system (Cygwin) for cross-compilation.
PDB
Program Database, a file format used by Microsoft Visual C++ for storing debugging information about an executable or DLL.
CodeView
A debug information format used by Microsoft compilers, often stored within PDB files.
SEH
Structured Exception Handling, a mechanism for handling runtime errors and exceptions in Windows.
Filed Under: AArch64PECygwintestinglinker