https://gcc.gnu.org/g:e259a182e1f100a7693657cea20a207fd1323b82
commit r17-1725-ge259a182e1f100a7693657cea20a207fd1323b82 Author: Iain Sandoe <[email protected]> Date: Sun Jun 21 11:43:51 2026 +0100 testsuite: Add target macho, document object format checks. There are already target supports tests for ELF and PE/COFF, this adds one for Mach-O and documents all three in sourcebuild. gcc/ChangeLog: * doc/sourcebuild.texi: Document object file checks. gcc/testsuite/ChangeLog: * lib/target-supports.exp: Add a check for Mach-O object file format. Signed-off-by: Iain Sandoe <[email protected]> Diff: --- gcc/doc/sourcebuild.texi | 23 +++++++++++++++++++++-- gcc/testsuite/lib/target-supports.exp | 22 ++++++++++++++++------ 2 files changed, 37 insertions(+), 8 deletions(-) diff --git a/gcc/doc/sourcebuild.texi b/gcc/doc/sourcebuild.texi index ef2ca9eab5e9..7850b9de9344 100644 --- a/gcc/doc/sourcebuild.texi +++ b/gcc/doc/sourcebuild.texi @@ -876,9 +876,9 @@ included, in this file you should guard declarations using these types inside appropriate @code{#ifdef RTX_CODE} or @code{#ifdef TREE_CODE} conditional code segments. -If the backend uses shared data structures that require @code{GTY} markers +If the backend uses shared data structures that require @code{GTY} markers for garbage collection (@pxref{Type Information}), you must declare those -in @file{@var{machine}.h} rather than @file{@var{machine}-protos.h}. +in @file{@var{machine}.h} rather than @file{@var{machine}-protos.h}. Any definitions required for building libgcc must also go in @file{@var{machine}.h}. @@ -1506,6 +1506,25 @@ By convention, keywords ending in @code{_nocache} can also include options specified for the particular test in an earlier @code{dg-options} or @code{dg-add-options} directive. +@subsubsection Object file format + +This identifies the object file format emitted by the compiler. Matching +assembler output often depends on content that differs between file formats. + +@table @code + +@item elf +Target uses the ELF file format (note that ELFv2 is matched specifically for +the powerpc platform, below). + +@item macho +Target uses the Mach-O file format (currently applies only to Darwin / macOS). + +@item pe +Target uses the PE/COFF file format (e.g. for Windows). + +@end table + @subsubsection Endianness @table @code diff --git a/gcc/testsuite/lib/target-supports.exp b/gcc/testsuite/lib/target-supports.exp index 668434e933ff..c6ebbed4f4b5 100644 --- a/gcc/testsuite/lib/target-supports.exp +++ b/gcc/testsuite/lib/target-supports.exp @@ -335,7 +335,7 @@ proc check_weak_available { } { # VxWorks supports it only since VxWorks 7 (assumed >= r2) for RTPs. # Kernel mode works fine as well for our testsuite's purposes. - + if { [istarget *-*-vxworks*] } { return [istarget *-*-vxworks7*] } @@ -560,6 +560,16 @@ proc check_effective_target_elf { } { } } +# Returns 1 if the target uses the Mach-O object format, 0 otherwise. + +proc check_effective_target_macho { } { + if { [gcc_target_object_format] == "mach-o" } { + return 1; + } else { + return 0; + } +} + # Returns 1 if the target uses the PE/COFF object format, 0 otherwise. proc check_effective_target_pe { } { @@ -6336,7 +6346,7 @@ foreach { armfunc armflag armdefs } { # /* { dg-add-options arm_cpu_xscale } */ # /* { dg-require-effective-target arm_xscale_multilib } */ -# NOTE: -mcpu does not override -mtune, so to ensure the tuning is consistent +# NOTE: -mcpu does not override -mtune, so to ensure the tuning is consistent # for tests using these flags all entries should set -mcpu and -mtune explicitly # This table should only be used to set -mcpu= (and associated @@ -13775,7 +13785,7 @@ proc check_effective_target_autoincdec { } { # proc check_effective_target_supports_stack_clash_protection { } { - if { [check_effective_target_x86] + if { [check_effective_target_x86] || [istarget powerpc*-*-*] || [istarget rs6000*-*-*] || [istarget aarch64*-**] || [istarget s390*-*-*] || [istarget loongarch64*-**] || [istarget riscv64*-**] } { @@ -14790,7 +14800,7 @@ proc check_nvptx_default_ptx_isa_version_at_least { major minor } { "#error unsupported" \ "#endif"] set src [join $src "\n"] - + set res [check_no_compiler_messages $name assembly $src ""] return $res @@ -14825,7 +14835,7 @@ proc check_nvptx_default_ptx_isa_target_architecture_at_least { ta } { "#error unsupported" \ "#endif"] set src [join $src "\n"] - + set res [check_no_compiler_messages $name assembly $src ""] return $res @@ -14940,7 +14950,7 @@ proc check_effective_target_alarm { } { #include <stdlib.h> #include <unistd.h> void do_exit(int i) { exit (0); } - int main (void) { + int main (void) { struct sigaction s; sigemptyset (&s.sa_mask); s.sa_handler = exit;
