Go to file
Kevin Buettner 1b485e6778 Add support for backtracing through Renesas RX exception frames.
This change adds support for backtracing through Renesas RX exception
frames.

Determination about the type of frame is made by scanning the
remainder of the function for a return instruction and then looking at
which, if any, return instruction is found.  A normal RTS instruction
indicates that the frame is a normal frame.  An RTFI instruction
indicates that it's a fast interrupt, and an RTE instruction indicates
that the frame is a (normal) exception frame.  If no return instruction
is found within the scanned region - which can happen when the end of
the function cannot be found - it is assumed to be a normal frame.

I was able to test that normal prologue scanning still works by
disabling the dwarf2 sniffer.  I've tested this code for normal
interrupts.  The fast interrupt case has not been tested.

gdb/ChangeLog:

	* rx-tdep.c (RX_USP_REGNUM, RX_BPC_REGNUM): New constants.
	(enum rx_frame_type): New.
	(struct rx_prologue): Add new field `frame_type'.
	(rx_analyze_prologue): Add `frame_type' parameter. Cache this
	parameter in the prologue struct.  Add code for recording
	locations of PC and PSW for fast interrupt and exception frames.
	(rx_skip_prologue): Adjust call to rx_analyze_prologue.
	(rx_analyze_frame_prologue): Add `frame_type' parameter.
	(rx_frame_type): New function.
	(rx_frame_base): Fetch frame type and pass it to rx_analyze_prologue.
	(rx_frame_this_id): Rename parameter `this_prologue_cache' to
	`this_cache'.
	(rx_frame_prev_register): Rename parameter `this_prologue_cache' to
	`this_cache'.  Add cases for RX_FRAME_TYPE_EXCEPTION and
	RX_FRAME_TYPE_FAST_INTERRUPT.
	(normal_frame_p, exception_frame_p, rx_frame_sniffer_common)
	(rx_frame_sniffer, rx_exception_sniffer): New functions.
	(rx_frame_unwind): Use rx_frame_sniffer instead of
	default_frame_sniffer.
	(rx_frame_unwind): New unwinder.
	(rx_gdbarch_init): Register new unwinder.
2015-07-02 17:21:18 -07:00
bfd Automatic date update in version.in 2015-07-03 00:00:08 +00:00
binutils Add support for DT_MIPS_RLD_MAP_REL. 2015-06-26 11:53:33 +01:00
config Sync dfp.m4 with gcc 2015-06-30 10:20:19 -07:00
cpu
elfcpp Add chdr_size, Chdr, Chdr_write and Chdr_data 2015-04-08 10:29:40 -07:00
etc
gas Assembler tests for Nios II R2 2015-07-01 16:11:47 -07:00
gdb Add support for backtracing through Renesas RX exception frames. 2015-07-02 17:21:18 -07:00
gold Patch for gold internal error while fixing erratum 843419. 2015-06-29 17:03:02 -07:00
gprof Updated translations for various binutils components. 2015-04-29 16:26:14 +01:00
include Opcodes and assembler support for Nios II R2 2015-07-01 16:08:03 -07:00
intl
ld Add Nios II arch flags and compatibility tests 2015-07-01 15:55:28 -07:00
libdecnumber Sync libdecnumber with gcc 2015-06-30 10:22:36 -07:00
libiberty Sync libiberty from GCC, replaying updates to configure scripts 2015-06-24 21:43:02 +02:00
opcodes Opcodes and assembler support for Nios II R2 2015-07-01 16:08:03 -07:00
readline
sim Fix snafu with latest addition to the ARM sim. 2015-07-02 16:19:09 +01:00
texinfo
zlib Add missing ChangeLog entry 2015-03-31 13:15:01 -07:00
.cvsignore
.gitattributes
.gitignore
ChangeLog Sync toplevel configure with gcc 2015-06-30 10:15:57 -07:00
compile
config-ml.in
config.guess Update config.guess and config.sub to the latest upstream version 2015-03-30 16:28:14 -04:00
config.rpath
config.sub Update config.guess and config.sub to the latest upstream version 2015-03-30 16:28:14 -04:00
configure Sync toplevel configure with gcc 2015-06-30 10:15:57 -07:00
configure.ac Sync toplevel configure with gcc 2015-06-30 10:15:57 -07:00
COPYING
COPYING3
COPYING3.LIB
COPYING.LIB
COPYING.LIBGLOSS
COPYING.NEWLIB
depcomp
djunpack.bat
install-sh
libtool.m4
lt~obsolete.m4
ltgcc.m4
ltmain.sh
ltoptions.m4
ltsugar.m4
ltversion.m4
MAINTAINERS
Makefile.def Configure zlib with --enable-host-shared for shared bfd 2015-05-01 08:34:08 -07:00
Makefile.in Sync libiberty from GCC, replaying updates to configure scripts 2015-06-24 21:43:02 +02:00
Makefile.tpl Sync libiberty from GCC, replaying updates to configure scripts 2015-06-24 21:43:02 +02:00
makefile.vms
missing
mkdep
mkinstalldirs
move-if-change
README
README-maintainer-mode
setup.com
src-release.sh Adjust src-release.sh for sim using the gdb create-version.sh. 2015-04-15 04:08:51 +02:00
symlink-tree
ylwrap

		   README for GNU development tools

This directory contains various GNU compilers, assemblers, linkers, 
debuggers, etc., plus their support routines, definitions, and documentation.

If you are receiving this as part of a GDB release, see the file gdb/README.
If with a binutils release, see binutils/README;  if with a libg++ release,
see libg++/README, etc.  That'll give you info about this
package -- supported targets, how to use it, how to report bugs, etc.

It is now possible to automatically configure and build a variety of
tools with one command.  To build all of the tools contained herein,
run the ``configure'' script here, e.g.:

	./configure 
	make

To install them (by default in /usr/local/bin, /usr/local/lib, etc),
then do:
	make install

(If the configure script can't determine your type of computer, give it
the name as an argument, for instance ``./configure sun4''.  You can
use the script ``config.sub'' to test whether a name is recognized; if
it is, config.sub translates it to a triplet specifying CPU, vendor,
and OS.)

If you have more than one compiler on your system, it is often best to
explicitly set CC in the environment before running configure, and to
also set CC when running make.  For example (assuming sh/bash/ksh):

	CC=gcc ./configure
	make

A similar example using csh:

	setenv CC gcc
	./configure
	make

Much of the code and documentation enclosed is copyright by
the Free Software Foundation, Inc.  See the file COPYING or
COPYING.LIB in the various directories, for a description of the
GNU General Public License terms under which you can copy the files.

REPORTING BUGS: Again, see gdb/README, binutils/README, etc., for info
on where and how to report problems.