From: Andreas Krebbel Date: Thu, 12 Apr 2018 10:22:35 +0000 (+0000) Subject: IBM Z: Spectre: Prevent thunk cfi to be emitted with -fno-dwarf2-cfi-asm X-Git-Tag: releases/gcc-6.5.0~387 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=20542cd054b8eb3f86c6a9b6a531c1a32e08a583;p=thirdparty%2Fgcc.git IBM Z: Spectre: Prevent thunk cfi to be emitted with -fno-dwarf2-cfi-asm The CFI magic we emit as part of the indirect branch thunks in order to have somewhat sane unwind information must not be emitted with -fno-dwarf2-cfi-asm. gcc/ChangeLog: 2018-04-12 Andreas Krebbel Backport from mainline 2018-04-12 Andreas Krebbel * config/s390/s390.c (s390_output_indirect_thunk_function): Check also for flag_dwarf2_cfi_asm. gcc/testsuite/ChangeLog: 2018-04-12 Andreas Krebbel Backport from mainline 2018-04-12 Andreas Krebbel * gcc.target/s390/nobp-no-dwarf2-cfi.c: New test. From-SVN: r259342 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index e5c5e1836aef..5e4003a9dc4b 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,11 @@ +2018-04-12 Andreas Krebbel + + Backport from mainline + 2018-04-12 Andreas Krebbel + + * config/s390/s390.c (s390_output_indirect_thunk_function): Check + also for flag_dwarf2_cfi_asm. + 2018-04-11 Uros Bizjak * config/alpha/alpha.md (stack_probe_internal): Rename diff --git a/gcc/config/s390/s390.c b/gcc/config/s390/s390.c index b061a680680d..e5ff59407c19 100644 --- a/gcc/config/s390/s390.c +++ b/gcc/config/s390/s390.c @@ -15429,7 +15429,7 @@ s390_output_indirect_thunk_function (unsigned int regno, bool z10_p) Stopping in the thunk: backtrace will point to the thunk target is if it was interrupted by a signal. For a call this means that the call chain will be: caller->callee->thunk */ - if (flag_asynchronous_unwind_tables) + if (flag_asynchronous_unwind_tables && flag_dwarf2_cfi_asm) { fputs ("\t.cfi_signal_frame\n", asm_out_file); fprintf (asm_out_file, "\t.cfi_return_column %d\n", regno); diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 572b25233327..659277daab5b 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,10 @@ +2018-04-12 Andreas Krebbel + + Backport from mainline + 2018-04-12 Andreas Krebbel + + * gcc.target/s390/nobp-no-dwarf2-cfi.c: New test. + 2018-04-10 Thomas Schwinge PR target/85056 diff --git a/gcc/testsuite/gcc.target/s390/nobp-no-dwarf2-cfi.c b/gcc/testsuite/gcc.target/s390/nobp-no-dwarf2-cfi.c new file mode 100644 index 000000000000..75e32a1c7c00 --- /dev/null +++ b/gcc/testsuite/gcc.target/s390/nobp-no-dwarf2-cfi.c @@ -0,0 +1,19 @@ +/* { dg-do run } */ +/* { dg-options "-O3 -march=z900 --save-temps -mfunction-return-reg=thunk -mindirect-branch-table -fno-dwarf2-cfi-asm" } */ + +/* Make sure that we do not emit .cfi directives when -fno-dwarf2-cfi-asm is being used. */ + +int +main () +{ + return 0; +} + +/* 1 x main +/* { dg-final { scan-assembler-times "jg\t__s390_indirect_jump" 1 } } */ +/* { dg-final { scan-assembler "ex\t" } } */ + +/* { dg-final { scan-assembler-not "section\t.s390_indirect_jump" } } */ +/* { dg-final { scan-assembler-not "section\t.s390_indirect_call" } } */ +/* { dg-final { scan-assembler "section\t.s390_return_reg" } } */ +/* { dg-final { scan-assembler-not "section\t.s390_return_mem" } } */