From cfef91e424aacb27bd231c6d2d09ca84e20275e9 Mon Sep 17 00:00:00 2001 From: Jason Thorpe Date: Wed, 22 May 2002 04:30:46 +0000 Subject: [PATCH] * alphanbsd-tdep.c (alphanbsd_sigtramp_offset): Don't make assumptions about the host's byte order. --- gdb/ChangeLog | 5 +++++ gdb/alphanbsd-tdep.c | 22 +++++++++++----------- 2 files changed, 16 insertions(+), 11 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 5ecbadb7ec..d3757304a4 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,8 @@ +2002-05-22 Jason Thorpe + + * alphanbsd-tdep.c (alphanbsd_sigtramp_offset): Don't make + assumptions about the host's byte order. + 2002-05-22 Jason Thorpe * Makefile.in (alphanbsd-tdep.o, shnbsd-tdep.o): Add solib-svr4.h diff --git a/gdb/alphanbsd-tdep.c b/gdb/alphanbsd-tdep.c index 01a0f49681..519d8164ca 100644 --- a/gdb/alphanbsd-tdep.c +++ b/gdb/alphanbsd-tdep.c @@ -135,29 +135,29 @@ static struct core_fns alphanbsd_elfcore_fns = sequence and can then check whether we really are executing in the signal trampoline. If not, -1 is returned, otherwise the offset from the start of the return sequence is returned. */ -static const unsigned int sigtramp_retcode[] = +static const unsigned char sigtramp_retcode[] = { - 0xa61e0000, /* ldq a0, 0(sp) */ - 0x23de0010, /* lda sp, 16(sp) */ - 0x201f0127, /* lda v0, 295(zero) */ - 0x00000083, /* call_pal callsys */ + 0x00, 0x00, 0x1e, 0xa6, /* ldq a0, 0(sp) */ + 0x10, 0x00, 0xde, 0x23, /* lda sp, 16(sp) */ + 0x27, 0x01, 0x1f, 0x20, /* lda v0, 295(zero) */ + 0x83, 0x00, 0x00, 0x00, /* call_pal callsys */ }; -#define RETCODE_NWORDS \ - (sizeof (sigtramp_retcode) / sizeof (sigtramp_retcode[0])) +#define RETCODE_NWORDS 4 +#define RETCODE_SIZE (RETCODE_NWORDS * 4) LONGEST alphanbsd_sigtramp_offset (CORE_ADDR pc) { - unsigned int ret[4], w; + unsigned char ret[RETCODE_SIZE], w[4]; LONGEST off; int i; - if (read_memory_nobpt (pc, (char *) &w, 4) != 0) + if (read_memory_nobpt (pc, (char *) w, 4) != 0) return -1; for (i = 0; i < RETCODE_NWORDS; i++) { - if (w == sigtramp_retcode[i]) + if (memcmp (w, sigtramp_retcode + (i * 4), 4) == 0) break; } if (i == RETCODE_NWORDS) @@ -169,7 +169,7 @@ alphanbsd_sigtramp_offset (CORE_ADDR pc) if (read_memory_nobpt (pc, (char *) ret, sizeof (ret)) != 0) return -1; - if (memcmp (ret, sigtramp_retcode, sizeof (sigtramp_retcode)) == 0) + if (memcmp (ret, sigtramp_retcode, RETCODE_SIZE) == 0) return off; return -1;