Hi Uros, > On 23 May 2019, at 07:33, Uros Bizjak <ubiz...@gmail.com> wrote: > > On Thu, May 23, 2019 at 1:09 AM Iain Sandoe <i...@sandoe.co.uk> wrote: >> >> Although this is a Darwin-specific change, I need to touch >> target-supports.exp and several tests in i386.exp. >> >> tested on x86_64-darwin and x86_64-linux-gnu >> doc change tested with “make pdf”, >> >> OK for trunk? >> backports? (where the tests fail). >> >> gcc/ >> >> * config/i386/darwin.h: Reject -mfentry*. >> * doc/sourcebuild.texi: Document mfentry target support. >> >> gcc/testsuite/ >> >> * lib/target-supports.exp (check_effective_target_mfentry): New. > > This procedure is written in a wrong way. You should either fix it as > suggested below, or write it in a way, similar to e.g. > check_effective_target_cet.
ah, the dangers of cut & paste, I had over-complicated the test. So, as below (no other changes) assuming that retesting passes? Iain # Return 1 if the compiler supports '-mfentry'. proc check_effective_target_mfentry { } { if { !([istarget i?86-*-*] || [istarget x86_64-*-*]) } { return 0 } return [check_no_compiler_messages mfentry object { void foo (void) { } } "-mfentry"] } > > Uros. > >> * gcc.target/i386/fentry-override.c: Require effective target mfentry, >> * gcc/testsuite/gcc.target/i386/fentry.c: Likewise >> * gcc.target/i386/fentryname1.c: Likewise >> * gcc.target/i386/fentryname2.c: Likewise >> * gcc.target/i386/fentryname3.c: Likewise >> * gcc.target/i386/nop-mcount.c: Likewise >> * gcc.target/i386/pr82699-2.c: Likewise >> * gcc.target/i386/pr82699-4.c: Likewise >> * gcc.target/i386/pr82699-5.c: Likewise >> * gcc.target/i386/pr82699-6.c: Likewise >> * gcc.target/i386/returninst1.c: Likewise >> * gcc.target/i386/returninst2.c: Likewise >> * gcc.target/i386/returninst3.c : Likewise >> >> diff --git a/gcc/config/i386/darwin.h b/gcc/config/i386/darwin.h >> index fe11ec9..1128428 100644 >> --- a/gcc/config/i386/darwin.h >> +++ b/gcc/config/i386/darwin.h >> @@ -132,7 +132,8 @@ extern int darwin_emit_branch_islands; >> #define CC1_SPEC "%(cc1_cpu) \ >> %{!mkernel:%{!static:%{!mdynamic-no-pic:-fPIC}}} \ >> %{g: %{!fno-eliminate-unused-debug-symbols: >> -feliminate-unused-debug-symbols }} \ >> - %{mx32:%eDarwin is not an mx32 platform}" \ >> + %{mx32:%eDarwin is not an mx32 platform} \ >> + %{mfentry*:%eDarwin does not support -mfentry or associated options}" \ >> DARWIN_CC1_SPEC >> >> #undef ASM_SPEC >> diff --git a/gcc/doc/sourcebuild.texi b/gcc/doc/sourcebuild.texi >> index cf12d74..546af7f 100644 >> --- a/gcc/doc/sourcebuild.texi >> +++ b/gcc/doc/sourcebuild.texi >> @@ -2382,6 +2382,10 @@ Target supports compiling @code{aes} instructions. >> @item fma4 >> Target supports compiling @code{fma4} instructions. >> >> +@item mfentry >> +Target supports the @code{-mfentry} option that alters the >> +position of profiling calls such that they precede the prologue. >> + >> @item ms_hook_prologue >> Target supports attribute @code{ms_hook_prologue}. >> >> diff --git a/gcc/testsuite/gcc.target/i386/fentry-override.c >> b/gcc/testsuite/gcc.target/i386/fentry-override.c >> index 7bc5fc4..efba1bf 100644 >> --- a/gcc/testsuite/gcc.target/i386/fentry-override.c >> +++ b/gcc/testsuite/gcc.target/i386/fentry-override.c >> @@ -1,5 +1,6 @@ >> /* Test -mfentry override */ >> /* { dg-do compile { target { *-*-linux* && { ! ia32 } } } } */ >> +/* { dg-require-effective-target mfentry } */ >> /* { dg-options "-mfentry" } */ >> /* { dg-final { scan-assembler-not "__fentry__" } } */ >> /* Origin: Andi Kleen */ >> diff --git a/gcc/testsuite/gcc.target/i386/fentry.c >> b/gcc/testsuite/gcc.target/i386/fentry.c >> index 2449e75..28edd10 100644 >> --- a/gcc/testsuite/gcc.target/i386/fentry.c >> +++ b/gcc/testsuite/gcc.target/i386/fentry.c >> @@ -1,5 +1,6 @@ >> /* Test -mfentry */ >> /* { dg-do compile { target { *-*-linux* && { ! ia32 } } } } */ >> +/* { dg-require-effective-target mfentry } */ >> /* { dg-options "-fprofile -mfentry" } */ >> /* { dg-final { scan-assembler "__fentry__" } } */ >> /* Origin: Andi Kleen */ >> diff --git a/gcc/testsuite/gcc.target/i386/fentryname1.c >> b/gcc/testsuite/gcc.target/i386/fentryname1.c >> index 6d2e76d..1265342 100644 >> --- a/gcc/testsuite/gcc.target/i386/fentryname1.c >> +++ b/gcc/testsuite/gcc.target/i386/fentryname1.c >> @@ -1,4 +1,5 @@ >> /* { dg-do compile } */ >> +/* { dg-require-effective-target mfentry } */ >> /* { dg-options "-pg -mfentry -mfentry-name=foo" } */ >> /* { dg-final { scan-assembler "call.*foo" } } */ >> /* { dg-final { scan-assembler "call.*bar" } } */ >> diff --git a/gcc/testsuite/gcc.target/i386/fentryname2.c >> b/gcc/testsuite/gcc.target/i386/fentryname2.c >> index 7d102bf..c51c5d1 100644 >> --- a/gcc/testsuite/gcc.target/i386/fentryname2.c >> +++ b/gcc/testsuite/gcc.target/i386/fentryname2.c >> @@ -1,4 +1,5 @@ >> /* { dg-do compile } */ >> +/* { dg-require-effective-target mfentry } */ >> /* { dg-options "-pg -mfentry -mrecord-mcount -mfentry-section=foo" } */ >> /* { dg-final { scan-assembler "section.*foo" } } */ >> /* { dg-final { scan-assembler "section.*bar" } } */ >> diff --git a/gcc/testsuite/gcc.target/i386/fentryname3.c >> b/gcc/testsuite/gcc.target/i386/fentryname3.c >> index 777f4e4..5688109 100644 >> --- a/gcc/testsuite/gcc.target/i386/fentryname3.c >> +++ b/gcc/testsuite/gcc.target/i386/fentryname3.c >> @@ -1,4 +1,5 @@ >> /* { dg-do compile } */ >> +/* { dg-require-effective-target mfentry } */ >> /* { dg-options "-pg -mfentry" } */ >> /* { dg-final { scan-assembler "section.*__entry_loc" } } */ >> /* { dg-final { scan-assembler "0x0f, 0x1f, 0x44, 0x00, 0x00" } } */ >> diff --git a/gcc/testsuite/gcc.target/i386/nop-mcount.c >> b/gcc/testsuite/gcc.target/i386/nop-mcount.c >> index a8e14bc..a5f8d27 100644 >> --- a/gcc/testsuite/gcc.target/i386/nop-mcount.c >> +++ b/gcc/testsuite/gcc.target/i386/nop-mcount.c >> @@ -1,5 +1,6 @@ >> /* Test -mnop-mcount */ >> /* { dg-do compile { target { *-*-linux* && nonpic } } } */ >> +/* { dg-require-effective-target mfentry } */ >> /* { dg-options "-pg -mfentry -mrecord-mcount -mnop-mcount" } */ >> /* { dg-final { scan-assembler-not "__fentry__" } } */ >> /* Origin: Andi Kleen */ >> diff --git a/gcc/testsuite/gcc.target/i386/pr82699-2.c >> b/gcc/testsuite/gcc.target/i386/pr82699-2.c >> index 07a4ccb..c43cf44 100644 >> --- a/gcc/testsuite/gcc.target/i386/pr82699-2.c >> +++ b/gcc/testsuite/gcc.target/i386/pr82699-2.c >> @@ -1,4 +1,5 @@ >> /* { dg-do compile { target *-*-linux* } } */ >> +/* { dg-require-effective-target mfentry } */ >> /* { dg-options "-O2 -fno-pic -fcf-protection -pg -mfentry >> -fasynchronous-unwind-tables" } */ >> /* { dg-final { scan-assembler-times {\t\.cfi_startproc\n\tendbr} 1 } } */ >> >> diff --git a/gcc/testsuite/gcc.target/i386/pr82699-4.c >> b/gcc/testsuite/gcc.target/i386/pr82699-4.c >> index 3cc03db..719566b 100644 >> --- a/gcc/testsuite/gcc.target/i386/pr82699-4.c >> +++ b/gcc/testsuite/gcc.target/i386/pr82699-4.c >> @@ -1,4 +1,5 @@ >> /* { dg-do compile { target { *-*-linux* && { ! ia32 } } } } */ >> +/* { dg-require-effective-target mfentry } */ >> /* { dg-options "-O2 -fpic -fcf-protection -pg -mfentry >> -fasynchronous-unwind-tables" } */ >> /* { dg-final { scan-assembler-times {\t\.cfi_startproc\n\tendbr} 1 } } */ >> >> diff --git a/gcc/testsuite/gcc.target/i386/pr82699-5.c >> b/gcc/testsuite/gcc.target/i386/pr82699-5.c >> index 0c547e2..ac3c1ae 100644 >> --- a/gcc/testsuite/gcc.target/i386/pr82699-5.c >> +++ b/gcc/testsuite/gcc.target/i386/pr82699-5.c >> @@ -1,4 +1,5 @@ >> /* { dg-do compile { target *-*-linux* } } */ >> +/* { dg-require-effective-target mfentry } */ >> /* { dg-options "-O2 -fcf-protection -mfentry -fasynchronous-unwind-tables" >> } */ >> /* { dg-additional-options "-fno-pic" { target ia32 } } */ >> /* { dg-final { scan-assembler-times {\t\.cfi_startproc\n\tendbr} 1 } } */ >> diff --git a/gcc/testsuite/gcc.target/i386/pr82699-6.c >> b/gcc/testsuite/gcc.target/i386/pr82699-6.c >> index ff6bae7..0b595f4 100644 >> --- a/gcc/testsuite/gcc.target/i386/pr82699-6.c >> +++ b/gcc/testsuite/gcc.target/i386/pr82699-6.c >> @@ -1,4 +1,5 @@ >> /* { dg-do compile { target *-*-linux* } } */ >> +/* { dg-require-effective-target mfentry } */ >> /* { dg-options "-fno-pic -O2 -fcf-protection -pg -mfentry -mrecord-mcount >> -mnop-mcount -fasynchronous-unwind-tables" } */ >> /* { dg-final { scan-assembler-times {\t\.cfi_startproc\n\tendbr} 1 } } */ >> >> diff --git a/gcc/testsuite/gcc.target/i386/returninst1.c >> b/gcc/testsuite/gcc.target/i386/returninst1.c >> index d7ecc41..133fdee 100644 >> --- a/gcc/testsuite/gcc.target/i386/returninst1.c >> +++ b/gcc/testsuite/gcc.target/i386/returninst1.c >> @@ -1,4 +1,5 @@ >> /* { dg-do compile { target { ! ia32 } } } */ >> +/* { dg-require-effective-target mfentry } */ >> /* { dg-options "-pg -mfentry -minstrument-return=call -mrecord-return" } */ >> /* { dg-final { scan-assembler "call.*__return__" } } */ >> /* { dg-final { scan-assembler "section.*return_loc" } } */ >> diff --git a/gcc/testsuite/gcc.target/i386/returninst2.c >> b/gcc/testsuite/gcc.target/i386/returninst2.c >> index 4724b40..3629310 100644 >> --- a/gcc/testsuite/gcc.target/i386/returninst2.c >> +++ b/gcc/testsuite/gcc.target/i386/returninst2.c >> @@ -1,4 +1,5 @@ >> /* { dg-do compile { target { ! ia32 } } } */ >> +/* { dg-require-effective-target mfentry } */ >> /* { dg-options "-pg -mfentry -minstrument-return=nop5 -mrecord-return" } */ >> /* { dg-final { scan-assembler-times "0x0f, 0x1f, 0x44, 0x00, 0x00" 3 } } */ >> /* { dg-final { scan-assembler "section.*return_loc" } } */ >> diff --git a/gcc/testsuite/gcc.target/i386/returninst3.c >> b/gcc/testsuite/gcc.target/i386/returninst3.c >> index 14b4445..b84cc77 100644 >> --- a/gcc/testsuite/gcc.target/i386/returninst3.c >> +++ b/gcc/testsuite/gcc.target/i386/returninst3.c >> @@ -1,4 +1,5 @@ >> /* { dg-do compile { target { ! ia32 } } } */ >> +/* { dg-require-effective-target mfentry } */ >> /* { dg-options "-pg -mfentry -minstrument-return=call" } */ >> /* { dg-final { scan-assembler-not "call.*__return__" } } */ >> >> diff --git a/gcc/testsuite/lib/target-supports.exp >> b/gcc/testsuite/lib/target-supports.exp >> index 3bd6e81..a153366 100644 >> --- a/gcc/testsuite/lib/target-supports.exp >> +++ b/gcc/testsuite/lib/target-supports.exp >> @@ -9359,3 +9359,17 @@ proc check_effective_target_llvm_binutils { } { >> expr { [istarget amdgcn*-*-*] >> || [check_effective_target_offload_gcn] }}] >> } >> + >> +# Return 1 if the compiler supports '-mfentry'. >> + >> +proc check_effective_target_mfentry { } { >> + return [check_cached_effective_target mentry_available { >> + if { !([istarget i?86-*-*] || [istarget x86_64-*-*]) } { >> + return 0 > > expr 0 > >> + } else { >> + return [check_no_compiler_messages mfentry object { > > no "return" here. > >> + void foo (void) { } >> + } "-mfentry"] >> + } >> + }] >> +}