rs6000: Enable -fasynchronous-unwind-tables by default
authorSegher Boessenkool <segher@kernel.crashing.org>
Tue, 10 Apr 2018 21:09:30 +0000 (23:09 +0200)
committerSegher Boessenkool <segher@gcc.gnu.org>
Tue, 10 Apr 2018 21:09:30 +0000 (23:09 +0200)
commit0359465c703ad3c214c52c772557ef1b3fe52183
treee169812cbe8cf83c834a123cdeefd4ee0e8c7c15
parentccdfb97546e2fed58cf7e1fc6cb579df968d5289
rs6000: Enable -fasynchronous-unwind-tables by default

To find out where on-entry register values live at any point in a
program, GDB currently tries to parse to parse the executable code.
This does not work very well, for example it gets confused if some
accesses to the stack use the frame pointer (r31) and some use the
stack pointer (r1).  A symptom is that backtraces can be cut short.

This patch enables -fasynchronous-unwind-tables by default for rs6000,
which causes us to emit DWARF unwind tables for all functions, solving
these problems.

This not do anything for sub-targets without DWARF, and only for ELF
sub-targets for now.

It increases executable size, but only modestly, and does not change
memory use, only the disk image.

* common/config/rs6000/rs6000-common.c (rs6000_option_init_struct):
Enable -fasynchronous-unwind-tables by default if OBJECT_FORMAT_ELF.

gcc/testsuite/
* gcc.target/powerpc/dfmode_off.c: Add -fno-asynchronous-unwind-tables.
* gcc.target/powerpc/dimode_off.c: Ditto.
* gcc.target/powerpc/tfmode_off.c: Ditto.
* gcc.target/powerpc/timode_off.c: Ditto.

From-SVN: r259298
gcc/ChangeLog
gcc/common/config/rs6000/rs6000-common.c
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.target/powerpc/dfmode_off.c
gcc/testsuite/gcc.target/powerpc/dimode_off.c
gcc/testsuite/gcc.target/powerpc/tfmode_off.c
gcc/testsuite/gcc.target/powerpc/timode_off.c