This is the mail archive of the gdb-patches@sources.redhat.com mailing list for the GDB project.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
Other format: | [Raw text] |
+static struct insn_pattern hppa_sigtramp[] = {>+ /* ldi 0, %r25 or ldi 1, %r25 */ >+ { 0x34190000, 0xfffffffd }, >+ /* ldi __NR_rt_sigreturn, %r20 */ >+ { 0x3414015a, 0xffffffff }, >+ /* be,l 0x100(%sr2, %r0), %sr0, %r31 */ >+ { 0xe4008200, 0xffffffff }, >+ /* nop */ >+ { 0x08000240, 0xffffffff }, >+ { 0, 0 } >+};
hmm, perhaps the mask can be integrated into tramp-frame.[hc], anyone?
well, hppa still can't use it because of the variable offset in the stack frame to locate the trampoline :(
+/* (This is derived from MD_FALLBACK_FRAME_STATE_FOR in gcc.)
+ + Unfortunately, because of various bugs and changes to the kernel,
+ we have several cases to deal with.
+
+ In 2.4, the signal trampoline is 4 bytes, and pc should point directly at + the beginning of the trampoline and struct rt_sigframe.
+
+ In <= 2.6.5-rc2-pa3, the signal trampoline is 9 bytes, and pc points at
+ the 4th word in the trampoline structure. This is wrong, it should point + at the 5th word. This is fixed in 2.6.5-rc2-pa4.
+
+ To detect these cases, we first take pc, align it to 64-bytes
+ to get the beginning of the signal frame, and then check offsets 0, 4
+ and 5 to see if we found the beginning of the trampoline. This will
+ tell us how to locate the sigcontext structure.
+
+ Note that with a 2.4 64-bit kernel, the signal context is not properly
+ passed back to userspace so the unwind will not work correctly. */
/* 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, struct frame_info *next_frame, struct trad_frame_cache *this_cache, CORE_ADDR func);
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |