[PATCH v13 1/1] aarch64: Implement Structured Exception Handling (SEH) on AArch64

Alice Carlotti alice.carlotti@arm.com
Wed Aug 12 10:13:58 GMT 2026


On Fri, Aug 07, 2026 at 04:37:11PM +0200, Evgeny Karpov wrote:
> The patch reuses shared helpers for SEH and implements SEH on AArch64.
> The implementation is based on
> (https://learn.microsoft.com/en-us/cpp/build/arm64-exception-handling?view=msvc-170)
> and pdata/xdata SEH records are emitted from md_finish.
> 
> When .pdata/.xdata is emitted, the function size is required.
> Function sizes are calculated as late as possible, and the code segment needs
> to be relaxed to be able to calculate the function sizes.
> 
> Initially, obj_coff_generate_pdata was called in write_object_file.
> Before the change, obj_coff_generate_pdata was used only to validate
> syntax, which was sufficient for that purpose. However, that location
> seems incorrect, as it is too late to emit .pdata/.xdata records
> in the AArch64 case.
> 
> md_finish has been declared for AArch64 and extended with
> seh_aarch64_write_data to emit .pdata/.xdata records after all
> assembly has been completed.
> 
> Signed-off-by: Evgeny Karpov <evgeny@kmaps.co>
> 
> gas/ChangeLog:
> 	* gas/config/obj-coff-seh-shared.c (defined): Update.
> 	(struct seh_seg_list): Use seh_context_t.
> 	* gas/config/obj-coff.c (defined): Update.
> 	* gas/config/tc-aarch64.c (defined): Add OBJ_COFF guard.
> 	(aarch64_md_finish): Add.
> 	* gas/config/tc-aarch64.h (defined): Add OBJ_COFF guard.
> 	(md_finish): Add.
> 	(aarch64_md_finish): Add.
> 	(seh_aarch64_write_data): Add.
> 	* testsuite/gas/pe/pe.exp: Add SEH tests.
> 	* write.c: Update.
> 	* write.h (subsegs_finish_section): Update.
> 	* config/obj-coff-seh-aarch64.c: New file.
> 	* config/obj-coff-seh-aarch64.h: New file.
> 	* testsuite/gas/pe/seh-aarch64-error.l: New test.
> 	* testsuite/gas/pe/seh-aarch64-error.s: New test.
> 	* testsuite/gas/pe/seh-aarch64-large-func.d: New test.
> 	* testsuite/gas/pe/seh-aarch64-large-func.s: New test.
> 	* testsuite/gas/pe/seh-aarch64.d: New test.
> 	* testsuite/gas/pe/seh-aarch64.s: New test.


Ok, thanks -  I've pushed this version.

Alice


More information about the Binutils mailing list