From: Saurabh Jha Date: Thu, 9 Oct 2025 14:04:45 +0000 (+0000) Subject: aarch64: mingw: emit seh_endproc as comment X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=6c9585ce44faeba5e0b6859871712f4895537d29;p=thirdparty%2Fgcc.git aarch64: mingw: emit seh_endproc as comment For mingw targets, there is no way to identify the end of function using assembly directives right now. This patch adds such directive as a comment. This is not a real directive because some other things, like Structured Exception Handling (SEH), needs to be supported before we can emit a real directive. However, emitting an end of function marker now will let us modify check-function-bodies in scanasm.exp, which in turn enables us to write dg-compile tests for mingw target. gcc/ChangeLog: * config/aarch64/aarch64-abi-ms.h (ASM_COMMENT_START): Specify start of comment. (ASM_OUTPUT_TYPE_DIRECTIVE): Moved from aarch64-coff.h. (ASM_DECLARE_FUNCTION_SIZE): Specify end of function as comment. * config/aarch64/aarch64-coff.h (ASM_OUTPUT_TYPE_DIRECTIVE): Moved to aarch64-abi-ms.h. (ASM_DECLARE_FUNCTION_SIZE): Moved to aarch64-abi-ms.h. gcc/testsuite/ChangeLog: * lib/scanasm.exp: Add support for mingw targets. --- diff --git a/gcc/config/aarch64/aarch64-abi-ms.h b/gcc/config/aarch64/aarch64-abi-ms.h index bc9ada01772..6eefe2188b6 100644 --- a/gcc/config/aarch64/aarch64-abi-ms.h +++ b/gcc/config/aarch64/aarch64-abi-ms.h @@ -31,4 +31,16 @@ along with GCC; see the file COPYING3. If not see #undef STATIC_CHAIN_REGNUM #define STATIC_CHAIN_REGNUM R17_REGNUM +#define ASM_COMMENT_START "//" + +/* ASM_OUTPUT_TYPE_DIRECTIVE is not yet supported by binutils for the + aarch64-w64-mingw32 target. */ +#define ASM_OUTPUT_TYPE_DIRECTIVE(STREAM, NAME, TYPE) + +/* Structured Exception Handling (SEH) is not yet supported by binutils + so adding seh_endproc as an assembly comment to mark the end of a + function. */ +#define ASM_DECLARE_FUNCTION_SIZE(FILE, FNAME, DECL) \ + fprintf (FILE, "\t" ASM_COMMENT_START " seh_endproc\n") + #endif /* GCC_AARCH64_ABI_MS_H. */ diff --git a/gcc/config/aarch64/aarch64-coff.h b/gcc/config/aarch64/aarch64-coff.h index 72607262e1b..42ae022720c 100644 --- a/gcc/config/aarch64/aarch64-coff.h +++ b/gcc/config/aarch64/aarch64-coff.h @@ -61,11 +61,6 @@ #define ASM_OUTPUT_SKIP(STREAM, NBYTES) \ fprintf (STREAM, "\t.space\t%d // skip\n", (int) (NBYTES)) -/* Definitions that are not yet supported by binutils for the - aarch64-w64-mingw32 target. */ -#define ASM_OUTPUT_TYPE_DIRECTIVE(STREAM, NAME, TYPE) -#define ASM_DECLARE_FUNCTION_SIZE(FILE, FNAME, DECL) - #define TEXT_SECTION_ASM_OP "\t.text" #define DATA_SECTION_ASM_OP "\t.data" #define BSS_SECTION_ASM_OP "\t.bss" diff --git a/gcc/testsuite/lib/scanasm.exp b/gcc/testsuite/lib/scanasm.exp index 51952a6a7f4..75303912f23 100644 --- a/gcc/testsuite/lib/scanasm.exp +++ b/gcc/testsuite/lib/scanasm.exp @@ -885,6 +885,8 @@ proc configure_check-function-bodies { config } { set up_config(end) {^\}$} } elseif { [istarget *-*-darwin*] } { set up_config(end) {^LFE[0-9]+} + } elseif { [istarget aarch64*-*-mingw32] } { + set up_config(end) {seh_endproc} } else { set up_config(end) {^\s*\.size} }