2004-07-20 Andrew Cagney <cagney@gnu.org>

* tramp-frame.h (struct tramp_frame): Change "insn" to a struct
	containing both bytes and mask.  Add "frame_type".
	* tramp-frame.c (tramp_frame_start): Update.
	(tramp_frame_prepend_unwinder): Update.
	* mips-linux-tdep.c (mips_linux_o32_sigframe)
	(mips_linux_o32_rt_sigframe, mips_linux_n32_rt_sigframe)
	(mips_linux_n64_rt_sigframe): Update.  Make "static const".
	* ppcnbsd-tdep.c (tramp_frame ppcnbsd_sigtramp): Update.
This commit is contained in:
Andrew Cagney
2004-07-20 15:11:37 +00:00
parent e12904d27f
commit 2cd8546d13
5 changed files with 63 additions and 26 deletions

View File

@@ -22,6 +22,8 @@
#ifndef TRAMP_FRAME_H
#define TRAMP_FRAME_H
#include "frame.h" /* For "enum frame_type". */
struct trad_frame;
struct frame_info;
struct trad_frame_cache;
@@ -45,16 +47,24 @@ struct trad_frame_cache;
struct tramp_frame
{
/* The trampoline's entire instruction sequence. Search for this in
the inferior at or around the frame's PC. It is assumed that the
PC is INSN_SIZE aligned, and that each element of TRAMP contains
one INSN_SIZE instruction. It is also assumed that TRAMP[0]
contains the first instruction of the trampoline and hence the
address of the instruction matching TRAMP[0] is the trampoline's
"func" address. The instruction sequence shall be terminated by
/* The trampoline's type, some a signal trampolines, some are normal
call-frame trampolines (aka thunks). */
enum frame_type frame_type;
/* The trampoline's entire instruction sequence. It consists of a
bytes/mask pair. Search for this in the inferior at or around
the frame's PC. It is assumed that the PC is INSN_SIZE aligned,
and that each element of TRAMP contains one INSN_SIZE
instruction. It is also assumed that INSN[0] contains the first
instruction of the trampoline and hence the address of the
instruction matching INSN[0] is the trampoline's "func" address.
The instruction sequence is terminated by
TRAMP_SENTINEL_INSN. */
int insn_size;
ULONGEST insn[8];
struct
{
ULONGEST bytes;
ULONGEST mask;
} insn[8];
/* Initialize a trad-frame cache corresponding to the tramp-frame.
FUNC is the address of the instruction TRAMP[0] in memory. */
void (*init) (const struct tramp_frame *self,