From: Markus Deuling <deuling@de.ibm.com>
To: GDB Patches <gdb-patches@sourceware.org>
Cc: Ulrich Weigand <uweigand@de.ibm.com>
Subject: [rfc]: Replace current_gdbarch in hppa
Date: Fri, 15 Feb 2008 06:48:00 -0000 [thread overview]
Message-ID: <47B5354A.4090404@de.ibm.com> (raw)
[-- Attachment #1: Type: text/plain, Size: 1144 bytes --]
Hi,
ups, sorry. Forgot the subject. Here's one ...
This patch replaces some current_gdbarch's in hppa. Tested by gdb_buildall.sh.
Ok to commit?
ChangeLog:
* hppa-tdep.h (find_global_pointer): Add gdbarch as parameter.
* hppa-hpux-tdep.c (hppa32_hpux_find_global_pointer): Likewise. Replace
current_gdbarch by gdbarch.
(hppa64_hpux_find_global_pointer): Likewise.
* hppa-tdep.c (hppa_find_global_pointer): Likewise.
(hppa32_push_dummy_call, hppa64_push_dummy_call): Update call for
find_global_pointer.
* hppabsd-tdep.c (hppabsd_find_global_pointer): Add gdbarch as
parameter.
* hppa-linux-tdep.c (hppa_linux_find_global_pointer): Likewise.
* hppa-linux-nat.c (hppa_linux_register_addr): Add gdbarch as parameter.
(fetch_register, store_register): Update call for
hppa_linux_register_addr.
* hppa-hpux-tdep.c (hppa_hpux_sr_for_addr): Add gdbarch as parameter and
replace current_gdbarch by gdbarch.
(hppa_hpux_push_dummy_code): Update call for hppa_hpux_sr_for_addr.
Regards,
Markus
--
Markus Deuling
GNU Toolchain for Linux on Cell BE
deuling@de.ibm.com
[-- Attachment #2: diff-hppa --]
[-- Type: text/plain, Size: 6255 bytes --]
diff -urpN src/gdb/hppabsd-tdep.c dev/gdb/hppabsd-tdep.c
--- src/gdb/hppabsd-tdep.c 2008-01-21 06:48:46.000000000 +0100
+++ dev/gdb/hppabsd-tdep.c 2008-02-15 07:18:00.000000000 +0100
@@ -28,7 +28,7 @@
#include "solib-svr4.h"
CORE_ADDR
-hppabsd_find_global_pointer (struct value *function)
+hppabsd_find_global_pointer (struct gdbarch *gdbarch, struct value *function)
{
CORE_ADDR faddr = value_as_address (function);
struct obj_section *faddr_sec;
diff -urpN src/gdb/hppa-hpux-tdep.c dev/gdb/hppa-hpux-tdep.c
--- src/gdb/hppa-hpux-tdep.c 2008-01-16 12:21:15.000000000 +0100
+++ dev/gdb/hppa-hpux-tdep.c 2008-02-15 06:54:44.000000000 +0100
@@ -741,7 +741,8 @@ hppa_hpux_sigtramp_unwind_sniffer (struc
}
static CORE_ADDR
-hppa32_hpux_find_global_pointer (struct value *function)
+hppa32_hpux_find_global_pointer (struct gdbarch *gdbarch,
+ struct value *function)
{
CORE_ADDR faddr;
@@ -760,11 +761,12 @@ hppa32_hpux_find_global_pointer (struct
return extract_unsigned_integer (buf, sizeof (buf));
}
- return gdbarch_tdep (current_gdbarch)->solib_get_got_by_pc (faddr);
+ return gdbarch_tdep (gdbarch)->solib_get_got_by_pc (faddr);
}
static CORE_ADDR
-hppa64_hpux_find_global_pointer (struct value *function)
+hppa64_hpux_find_global_pointer (struct gdbarch *gdbarch,
+ struct value *function)
{
CORE_ADDR faddr;
char buf[32];
@@ -778,7 +780,7 @@ hppa64_hpux_find_global_pointer (struct
}
else
{
- return gdbarch_tdep (current_gdbarch)->solib_get_got_by_pc (faddr);
+ return gdbarch_tdep (gdbarch)->solib_get_got_by_pc (faddr);
}
}
@@ -1031,11 +1033,11 @@ hppa_hpux_find_import_stub_for_addr (COR
}
static int
-hppa_hpux_sr_for_addr (CORE_ADDR addr)
+hppa_hpux_sr_for_addr (struct gdbarch *gdbarch, CORE_ADDR addr)
{
int sr;
/* The space register to use is encoded in the top 2 bits of the address. */
- sr = addr >> (gdbarch_tdep (current_gdbarch)->bytes_per_address * 8 - 2);
+ sr = addr >> (gdbarch_tdep (gdbarch)->bytes_per_address * 8 - 2);
return sr + 4;
}
@@ -1112,7 +1114,8 @@ hppa_hpux_push_dummy_code (struct gdbarc
/* The simple case is where we call a function in the same space that we are
currently in; in that case we don't really need to do anything. */
- if (hppa_hpux_sr_for_addr (pc) == hppa_hpux_sr_for_addr (funcaddr))
+ if (hppa_hpux_sr_for_addr (gdbarch, pc)
+ == hppa_hpux_sr_for_addr (gdbarch, funcaddr))
{
/* Intraspace call. */
*bp_addr = hppa_hpux_find_dummy_bpaddr (pc);
diff -urpN src/gdb/hppa-linux-nat.c dev/gdb/hppa-linux-nat.c
--- src/gdb/hppa-linux-nat.c 2008-01-01 23:53:10.000000000 +0100
+++ dev/gdb/hppa-linux-nat.c 2008-02-15 06:52:13.000000000 +0100
@@ -149,11 +149,12 @@ static const int u_offsets[] =
};
static CORE_ADDR
-hppa_linux_register_addr (int regno, CORE_ADDR blockend)
+hppa_linux_register_addr (struct gdbarch *gdbarch, int regno,
+ CORE_ADDR blockend)
{
CORE_ADDR addr;
- if ((unsigned) regno >= gdbarch_num_regs (current_gdbarch))
+ if ((unsigned) regno >= gdbarch_num_regs (gdbarch))
error (_("Invalid register number %d."), regno);
if (u_offsets[regno] == -1)
@@ -229,7 +230,8 @@ fetch_register (struct regcache *regcach
tid = PIDGET (inferior_ptid); /* Not a threaded program. */
errno = 0;
- val = ptrace (PTRACE_PEEKUSER, tid, hppa_linux_register_addr (regno, 0), 0);
+ val = ptrace (PTRACE_PEEKUSER, tid,
+ hppa_linux_register_addr (gdbarch, regno, 0), 0);
if (errno != 0)
error (_("Couldn't read register %s (#%d): %s."),
gdbarch_register_name (gdbarch, regno),
@@ -257,7 +259,8 @@ store_register (const struct regcache *r
errno = 0;
regcache_raw_collect (regcache, regno, &val);
- ptrace (PTRACE_POKEUSER, tid, hppa_linux_register_addr (regno, 0), val);
+ ptrace (PTRACE_POKEUSER, tid,
+ hppa_linux_register_addr (gdbarch, regno, 0), val);
if (errno != 0)
error (_("Couldn't write register %s (#%d): %s."),
gdbarch_register_name (gdbarch, regno),
diff -urpN src/gdb/hppa-linux-tdep.c dev/gdb/hppa-linux-tdep.c
--- src/gdb/hppa-linux-tdep.c 2008-01-01 23:53:10.000000000 +0100
+++ dev/gdb/hppa-linux-tdep.c 2008-02-15 07:18:56.000000000 +0100
@@ -325,7 +325,7 @@ hppa_linux_sigtramp_unwind_sniffer (stru
d_un.d_ptr value is the global pointer. */
static CORE_ADDR
-hppa_linux_find_global_pointer (struct value *function)
+hppa_linux_find_global_pointer (struct gdbarch *gdbarch, struct value *function)
{
struct obj_section *faddr_sect;
CORE_ADDR faddr;
diff -urpN src/gdb/hppa-tdep.c dev/gdb/hppa-tdep.c
--- src/gdb/hppa-tdep.c 2008-01-11 15:42:52.000000000 +0100
+++ dev/gdb/hppa-tdep.c 2008-02-15 06:55:23.000000000 +0100
@@ -828,7 +828,7 @@ hppa32_push_dummy_call (struct gdbarch *
if (struct_return)
regcache_cooked_write_unsigned (regcache, 28, struct_addr);
- gp = tdep->find_global_pointer (function);
+ gp = tdep->find_global_pointer (gdbarch, function);
if (gp != 0)
regcache_cooked_write_unsigned (regcache, 19, gp);
@@ -1087,7 +1087,7 @@ hppa64_push_dummy_call (struct gdbarch *
regcache_cooked_write_unsigned (regcache, HPPA_RET0_REGNUM, struct_addr);
/* Set up GR27 (%dp) to hold the global pointer (gp). */
- gp = tdep->find_global_pointer (function);
+ gp = tdep->find_global_pointer (gdbarch, function);
if (gp != 0)
regcache_cooked_write_unsigned (regcache, HPPA_DP_REGNUM, gp);
@@ -2705,7 +2705,7 @@ hppa_pseudo_register_read (struct gdbarc
}
static CORE_ADDR
-hppa_find_global_pointer (struct value *function)
+hppa_find_global_pointer (struct gdbarch *gdbarch, struct value *function)
{
return 0;
}
diff -urpN src/gdb/hppa-tdep.h dev/gdb/hppa-tdep.h
--- src/gdb/hppa-tdep.h 2008-01-01 23:53:10.000000000 +0100
+++ dev/gdb/hppa-tdep.h 2008-02-15 06:44:48.000000000 +0100
@@ -87,7 +87,7 @@ struct gdbarch_tdep
/* Given a function address, try to find the global pointer for the
corresponding shared object. */
- CORE_ADDR (*find_global_pointer) (struct value *);
+ CORE_ADDR (*find_global_pointer) (struct gdbarch *, struct value *);
/* For shared libraries, each call goes through a small piece of
trampoline code in the ".plt", or equivalent, section.
next reply other threads:[~2008-02-15 6:48 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-02-15 6:48 Markus Deuling [this message]
2008-02-15 18:39 ` Ulrich Weigand
2008-02-15 20:19 ` Pedro Alves
2008-02-15 20:22 ` Daniel Jacobowitz
2008-02-18 14:28 ` Markus Deuling
2008-02-18 14:37 ` Ulrich Weigand
2008-02-18 14:47 ` Markus Deuling
2008-02-18 16:04 ` Ulrich Weigand
2008-02-18 16:12 ` Markus Deuling
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=47B5354A.4090404@de.ibm.com \
--to=deuling@de.ibm.com \
--cc=gdb-patches@sourceware.org \
--cc=uweigand@de.ibm.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox