This does not yet change any tests - but is expected to simplify cases
where scan-assembler is used that needs to be file syntax aware.
Tested with "make pdf" for the documentation, OK for trunk?
thanks
Iain
--- 8< ---
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]>
---
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 ef2ca9eab5e..7850b9de934 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 668434e933f..c6ebbed4f4b 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;
--
2.50.1 (Apple Git-155)