testsuite, i386: Only check for cfi directives if supported [PR112729]
Checks
Context |
Check |
Description |
linaro-tcwg-bot/tcwg_gcc_build--master-arm |
success
|
Testing passed
|
linaro-tcwg-bot/tcwg_gcc_check--master-arm |
success
|
Testing passed
|
linaro-tcwg-bot/tcwg_gcc_build--master-aarch64 |
success
|
Testing passed
|
Commit Message
gcc.target/i386/apx-interrupt-1.c and two more tests FAIL on Solaris/x86
with the native assembler. Like Darwin as, it doesn't support cfi
directives. Instead of adding more and more targets in every affected
test, this patch introduces a cfi effective-target keyword to check for
the prerequisite.
Tested on i386-pc-solaris2.11 (as and gas), x86_64-pc-linux-gnu, and
x86_64-apple-darwin23.1.0.
Any comments on the CFI detection in target-supports.exp? Otherwise,
I'll commit the patch as is.
The tests still FAIL on Solaris/x86 and FreeBSD/x86_64 with gas due to
their -fno-omit-frame-pointer default; this will be addressed
separately.
Thanks.
Raine
Comments
Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE> writes:
> gcc.target/i386/apx-interrupt-1.c and two more tests FAIL on Solaris/x86
> with the native assembler. Like Darwin as, it doesn't support cfi
> directives. Instead of adding more and more targets in every affected
> test, this patch introduces a cfi effective-target keyword to check for
> the prerequisite.
>
> Tested on i386-pc-solaris2.11 (as and gas), x86_64-pc-linux-gnu, and
> x86_64-apple-darwin23.1.0.
>
> Any comments on the CFI detection in target-supports.exp? Otherwise,
> I'll commit the patch as is.
Given that nobody found fault with the CFI detection, I've rebased the
patch to account for the -fomit-frame-pointer changes, retested and
committed it to trunk.
> The tests still FAIL on Solaris/x86 and FreeBSD/x86_64 with gas due to
> their -fno-omit-frame-pointer default; this will be addressed
> separately.
This has been handled now.
Rainer
# HG changeset patch
# Parent 4c217a4922ab8f91e45518fef88ad562f71fc0a5
testsuite, i386: Only check for cfi directives if supported
@@ -2671,6 +2671,9 @@ The language for the compiler under test
@item c99_runtime
Target provides a full C99 runtime.
+@item cfi
+Target supports DWARF CFI directives.
+
@item correct_iso_cpp_string_wchar_protos
Target @code{string.h} and @code{wchar.h} headers provide C++ required
overloads for @code{strchr} etc. functions.
@@ -1,6 +1,5 @@
-/* { dg-do compile { target { ! ia32 } } } */
+/* { dg-do compile { target { { ! ia32 } && cfi } } } */
/* { dg-options "-mapx-features=egpr -m64 -O2 -mgeneral-regs-only -mno-cld -mno-push-args -maccumulate-outgoing-args" } */
-/* { dg-skip-if "does not emit .cfi_xxx" "*-*-darwin*" } */
extern void foo (void *) __attribute__ ((interrupt));
extern int bar (int);
@@ -1,6 +1,5 @@
-/* { dg-do compile { target { ! ia32 } } } */
+/* { dg-do compile { target { { ! ia32 } && cfi } } } */
/* { dg-options "-O2 -mapx-features=push2pop2" } */
-/* { dg-skip-if "does not emit .cfi_xxx" "*-*-darwin*" } */
extern int bar (int);
@@ -1,6 +1,5 @@
-/* { dg-do compile { target { ! ia32 } } } */
+/* { dg-do compile { target { { ! ia32 } && cfi } } } */
/* { dg-options "-O2 -mapx-features=push2pop2 -mforce-drap" } */
-/* { dg-skip-if "does not emit .cfi_xxx" "*-*-darwin*" } */
#include "apx-push2pop2-1.c"
@@ -10082,6 +10082,18 @@ proc check_effective_target_c99_runtime
}]
}
+# Return 1 if the target supports DWARF CFI directives.
+
+proc check_effective_target_cfi { } {
+ return [check_no_compiler_messages cfi assembly {
+ #ifdef __GCC_HAVE_DWARF2_CFI_ASM
+ /* ok */
+ #else
+ #error unsupported
+ #endif
+ } ""]
+}
+
# Return 1 if the target provides the D runtime.
proc check_effective_target_d_runtime { } {