* [COMMIT] OpenBSD/mips64 target and native support
@ 2004-10-23 12:16 Mark Kettenis
2004-10-25 15:24 ` Andrew Cagney
0 siblings, 1 reply; 9+ messages in thread
From: Mark Kettenis @ 2004-10-23 12:16 UTC (permalink / raw)
To: gdb-patches
This seems to be working pretty reasonably, so I checked it in. I
suppose not many people are running OpenBSD/mips64 (OpenBSD/sgi) yet,
but those that do, probably want a working debugger.
Anyway, I'm not adding a NEWS entry yet, since there are some issues
with dwarf2read.c that need to be resolved before the native stuff
really works.
Mark
Index: ChangeLog
from Mark Kettenis <kettenis@gnu.org>
* mips64obsd-nat.c, mips64obsd-tdep.c: New files.
* configure.host: Add mips64*-*-openbsd*.
* configure.tgt: Add mips64*-*-openbsd*.
* Makefile.in (ALLDEPFILES): Add mips64obsd-nat.o,
mips64obsd-tdep.c.
(mips64obsd-nat.o, mips64obsd-tdep.o): New dependecies.
* config/mips/obsd64.mh, config/mips/obsd64.mt: New files.
Index: configure.host
===================================================================
RCS file: /cvs/src/src/gdb/configure.host,v
retrieving revision 1.84
diff -u -p -r1.84 configure.host
--- configure.host 1 Sep 2004 20:46:41 -0000 1.84
+++ configure.host 23 Oct 2004 11:51:30 -0000
@@ -103,6 +103,7 @@ mips-sgi-irix6*) gdb_host=irix6 ;;
mips*-*-linux*) gdb_host=linux ;;
mips*-*-netbsd* | mips*-*-knetbsd*-gnu)
gdb_host=nbsd ;;
+mips64*-*-openbsd*) gdb_host=obsd64 ;;
ns32k-*-netbsd*) gdb_host=nbsdaout ;;
Index: configure.tgt
===================================================================
RCS file: /cvs/src/src/gdb/configure.tgt,v
retrieving revision 1.149
diff -u -p -r1.149 configure.tgt
--- configure.tgt 1 Oct 2004 07:29:34 -0000 1.149
+++ configure.tgt 23 Oct 2004 11:51:30 -0000
@@ -139,6 +139,7 @@ mips*-*-linux*) gdb_target=linux
;;
mips*-*-netbsd* | mips*-*-knetbsd*-gnu)
gdb_target=nbsd ;;
+mips64*-*-openbsd*) gdb_target=obsd64 ;;
mips*-*-vxworks*) gdb_target=vxmips ;;
mips*-*-*) gdb_target=embed ;;
Index: mips64obsd-nat.c
===================================================================
RCS file: mips64obsd-nat.c
diff -N mips64obsd-nat.c
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ mips64obsd-nat.c 23 Oct 2004 11:51:30 -0000
@@ -0,0 +1,112 @@
+/* Native-dependent code for OpenBSD/mips64.
+
+ Copyright 2004 Free Software Foundation, Inc.
+
+ This file is part of GDB.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA. */
+
+#include "defs.h"
+#include "inferior.h"
+#include "regcache.h"
+#include "target.h"
+
+#include <sys/types.h>
+#include <sys/ptrace.h>
+#include <machine/reg.h>
+
+#include "inf-ptrace.h"
+
+#define MIPS64OBSD_NUM_REGS 73
+
+/* Supply the general-purpose registers stored in GREGS to REGCACHE. */
+
+static void
+mips64obsd_supply_gregset (struct regcache *regcache, const void *gregs)
+{
+ const char *regs = gregs;
+ int regnum;
+
+ for (regnum = 0; regnum < MIPS64OBSD_NUM_REGS; regnum++)
+ regcache_raw_supply (regcache, regnum, regs + regnum * 8);
+}
+
+/* Collect the general-purpose registers from REGCACHE and store them
+ in GREGS. */
+
+static void
+mips64obsd_collect_gregset (const struct regcache *regcache,
+ void *gregs, int regnum)
+{
+ char *regs = gregs;
+ int i;
+
+ for (i = 0; i <= MIPS64OBSD_NUM_REGS; i++)
+ {
+ if (regnum == -1 || regnum == i)
+ regcache_raw_collect (regcache, i, regs + i * 8);
+ }
+}
+\f
+
+/* Fetch register REGNUM from the inferior. If REGNUM is -1, do this
+ for all registers. */
+
+static void
+mips64obsd_fetch_inferior_registers (int regnum)
+{
+ struct reg regs;
+
+ if (ptrace (PT_GETREGS, PIDGET (inferior_ptid),
+ (PTRACE_TYPE_ARG3) ®s, 0) == -1)
+ perror_with_name ("Couldn't get registers");
+
+ mips64obsd_supply_gregset (current_regcache, ®s);
+}
+
+/* Store register REGNUM back into the inferior. If REGNUM is -1, do
+ this for all registers. */
+
+static void
+mips64obsd_store_inferior_registers (int regnum)
+{
+ struct reg regs;
+
+ if (ptrace (PT_GETREGS, PIDGET (inferior_ptid),
+ (PTRACE_TYPE_ARG3) ®s, 0) == -1)
+ perror_with_name ("Couldn't get registers");
+
+ mips64obsd_collect_gregset (current_regcache, ®s, regnum);
+
+ if (ptrace (PT_SETREGS, PIDGET (inferior_ptid),
+ (PTRACE_TYPE_ARG3) ®s, 0) == -1)
+ perror_with_name ("Couldn't write registers");
+}
+\f
+
+/* Provide a prototype to silence -Wmissing-prototypes. */
+void _initialize_mips64obsd_nat (void);
+
+void
+_initialize_mips64obsd_nat (void)
+{
+ struct target_ops *t;
+
+ t = inf_ptrace_target ();
+ t->to_fetch_registers = mips64obsd_fetch_inferior_registers;
+ t->to_store_registers = mips64obsd_store_inferior_registers;
+ add_target (t);
+}
Index: mips64obsd-tdep.c
===================================================================
RCS file: mips64obsd-tdep.c
diff -N mips64obsd-tdep.c
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ mips64obsd-tdep.c 23 Oct 2004 11:51:30 -0000
@@ -0,0 +1,98 @@
+/* Target-dependent code for OpenBSD/mips64.
+
+ Copyright 2004 Free Software Foundation, Inc.
+
+ This file is part of GDB.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA. */
+
+#include "defs.h"
+#include "osabi.h"
+#include "regcache.h"
+#include "regset.h"
+
+#include "gdb_string.h"
+
+#include "mips-tdep.h"
+#include "solib-svr4.h"
+
+#define MIPS64OBSD_NUM_REGS 73
+
+/* Core file support. */
+
+/* Supply register REGNUM from the buffer specified by GREGS and LEN
+ in the general-purpose register set REGSET to register cache
+ REGCACHE. If REGNUM is -1, do this for all registers in REGSET. */
+
+static void
+mips64obsd_supply_gregset (const struct regset *regset,
+ struct regcache *regcache, int regnum,
+ const void *gregs, size_t len)
+{
+ const char *regs = gregs;
+ int i;
+
+ for (i = 0; i < MIPS64OBSD_NUM_REGS; i++)
+ {
+ if (regnum == i || regnum == -1)
+ regcache_raw_supply (regcache, i, regs + i * 8);
+ }
+}
+
+/* OpenBSD/mips64 register set. */
+
+static struct regset mips64obsd_gregset =
+{
+ NULL,
+ mips64obsd_supply_gregset
+};
+
+/* Return the appropriate register set for the core section identified
+ by SECT_NAME and SECT_SIZE. */
+
+static const struct regset *
+mips64obsd_regset_from_core_section (struct gdbarch *gdbarch,
+ const char *sect_name, size_t sect_size)
+{
+ if (strcmp (sect_name, ".reg") == 0 && sect_size >= MIPS64OBSD_NUM_REGS * 8)
+ return &mips64obsd_gregset;
+
+ return NULL;
+}
+\f
+
+static void
+mips64obsd_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch)
+{
+ set_gdbarch_regset_from_core_section
+ (gdbarch, mips64obsd_regset_from_core_section);
+
+ set_gdbarch_software_single_step (gdbarch, mips_software_single_step);
+
+ set_solib_svr4_fetch_link_map_offsets
+ (gdbarch, svr4_lp64_fetch_link_map_offsets);
+}
+
+\f
+/* Provide a prototype to silence -Wmissing-prototypes. */
+void _initialize_mips64obsd_tdep (void);
+
+void
+_initialize_mips64obsd_tdep (void)
+{
+ gdbarch_register_osabi (bfd_arch_mips, 0, GDB_OSABI_OPENBSD_ELF,
+ mips64obsd_init_abi);
+}
Index: config/mips/obsd64.mh
===================================================================
RCS file: config/mips/obsd64.mh
diff -N config/mips/obsd64.mh
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ config/mips/obsd64.mh 23 Oct 2004 11:51:30 -0000
@@ -0,0 +1,3 @@
+# Host: OpenBSD/mips64
+NATDEPFILES= fork-child.o inf-ptrace.o \
+ mips64obsd-nat.o
Index: config/mips/obsd64.mt
===================================================================
RCS file: config/mips/obsd64.mt
diff -N config/mips/obsd64.mt
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ config/mips/obsd64.mt 23 Oct 2004 11:51:30 -0000
@@ -0,0 +1,3 @@
+# Target: OpenBSD/mips64
+TDEPFILES= mips-tdep.o mips64obsd-tdep.o corelow.o solib.o solib-svr4.o
+DEPRECATED_TM_FILE= tm-nbsd.h
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [COMMIT] OpenBSD/mips64 target and native support
2004-10-23 12:16 [COMMIT] OpenBSD/mips64 target and native support Mark Kettenis
@ 2004-10-25 15:24 ` Andrew Cagney
2004-10-25 15:29 ` Daniel Jacobowitz
0 siblings, 1 reply; 9+ messages in thread
From: Andrew Cagney @ 2004-10-25 15:24 UTC (permalink / raw)
To: Mark Kettenis; +Cc: gdb-patches
Mark Kettenis wrote:
> This seems to be working pretty reasonably, so I checked it in. I
> suppose not many people are running OpenBSD/mips64 (OpenBSD/sgi) yet,
> but those that do, probably want a working debugger.
>
> Anyway, I'm not adding a NEWS entry yet, since there are some issues
> with dwarf2read.c that need to be resolved before the native stuff
> really works.
This part:
> +DEPRECATED_TM_FILE= tm-nbsd.h
is no longer acceptable.
Andrew
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [COMMIT] OpenBSD/mips64 target and native support
2004-10-25 15:24 ` Andrew Cagney
@ 2004-10-25 15:29 ` Daniel Jacobowitz
2004-10-25 19:01 ` Andrew Cagney
0 siblings, 1 reply; 9+ messages in thread
From: Daniel Jacobowitz @ 2004-10-25 15:29 UTC (permalink / raw)
To: Andrew Cagney; +Cc: Mark Kettenis, gdb-patches
On Mon, Oct 25, 2004 at 11:23:21AM -0400, Andrew Cagney wrote:
> Mark Kettenis wrote:
> >This seems to be working pretty reasonably, so I checked it in. I
> >suppose not many people are running OpenBSD/mips64 (OpenBSD/sgi) yet,
> >but those that do, probably want a working debugger.
> >
> >Anyway, I'm not adding a NEWS entry yet, since there are some issues
> >with dwarf2read.c that need to be resolved before the native stuff
> >really works.
>
> This part:
>
> >+DEPRECATED_TM_FILE= tm-nbsd.h
>
> is no longer acceptable.
Do you have an alternate suggestion?
It seems pretty strange to me to forbid new OS ports of MIPS targets
just because every single MIPS target including the core MIPS support
still uses DEPRECATED_TM_FILE.
--
Daniel Jacobowitz
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [COMMIT] OpenBSD/mips64 target and native support
2004-10-25 15:29 ` Daniel Jacobowitz
@ 2004-10-25 19:01 ` Andrew Cagney
2004-10-31 18:39 ` Andrew Cagney
0 siblings, 1 reply; 9+ messages in thread
From: Andrew Cagney @ 2004-10-25 19:01 UTC (permalink / raw)
To: Daniel Jacobowitz; +Cc: Mark Kettenis, gdb-patches
Daniel Jacobowitz wrote:
> On Mon, Oct 25, 2004 at 11:23:21AM -0400, Andrew Cagney wrote:
>
>>Mark Kettenis wrote:
>>
>>>This seems to be working pretty reasonably, so I checked it in. I
>>>suppose not many people are running OpenBSD/mips64 (OpenBSD/sgi) yet,
>>>but those that do, probably want a working debugger.
>>>
>>>Anyway, I'm not adding a NEWS entry yet, since there are some issues
>>>with dwarf2read.c that need to be resolved before the native stuff
>>>really works.
>>
>>This part:
>>
>>
>>>+DEPRECATED_TM_FILE= tm-nbsd.h
>>
>>is no longer acceptable.
>
>
> Do you have an alternate suggestion?
>
> It seems pretty strange to me to forbid new OS ports of MIPS targets
> just because every single MIPS target including the core MIPS support
> still uses DEPRECATED_TM_FILE.
I'm lost, what has this to do with the MIPS? When adding any new native
or target, DEPRECATED_TM_FILE is not acceptable.
Andrew
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [COMMIT] OpenBSD/mips64 target and native support
2004-10-25 19:01 ` Andrew Cagney
@ 2004-10-31 18:39 ` Andrew Cagney
2004-10-31 19:45 ` Mark Kettenis
0 siblings, 1 reply; 9+ messages in thread
From: Andrew Cagney @ 2004-10-31 18:39 UTC (permalink / raw)
To: Daniel Jacobowitz, Mark Kettenis; +Cc: gdb-patches
[-- Attachment #1: Type: text/plain, Size: 878 bytes --]
>>> This part:
>>>
>>>
>>>> +DEPRECATED_TM_FILE= tm-nbsd.h
>>>
>>>
>>> is no longer acceptable.
>>
>>
>>
>> Do you have an alternate suggestion?
>>
>> It seems pretty strange to me to forbid new OS ports of MIPS targets
>> just because every single MIPS target including the core MIPS support
>> still uses DEPRECATED_TM_FILE.
>
>
> I'm lost, what has this to do with the MIPS? When adding any new native
> or target, DEPRECATED_TM_FILE is not acceptable.
The situtation we have here is identical to that we encountered when we
first made it a requirement that not just new architectures, but also
extensions to exsting architectures, had to be multi-arch. We set the
standard and then helped developers exceed it.
Our only mistake was to "blink" when it came to the solib problem.
We've been "blinking" for too many years now.
I've committed the attached,
Andrew
[-- Attachment #2: diffs --]
[-- Type: text/plain, Size: 556 bytes --]
2004-10-31 Andrew Cagney <cagney@gnu.org>
* config/mips/obsd64.mt (DEPRECATED_TM_FILE): Delete.
Index: config/mips/obsd64.mt
===================================================================
RCS file: /cvs/src/src/gdb/config/mips/obsd64.mt,v
retrieving revision 1.1
diff -p -u -r1.1 obsd64.mt
--- config/mips/obsd64.mt 23 Oct 2004 12:14:02 -0000 1.1
+++ config/mips/obsd64.mt 31 Oct 2004 18:21:28 -0000
@@ -1,3 +1,2 @@
# Target: OpenBSD/mips64
TDEPFILES= mips-tdep.o mips64obsd-tdep.o corelow.o solib.o solib-svr4.o
-DEPRECATED_TM_FILE= tm-nbsd.h
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [COMMIT] OpenBSD/mips64 target and native support
2004-10-31 18:39 ` Andrew Cagney
@ 2004-10-31 19:45 ` Mark Kettenis
2004-10-31 20:07 ` Andrew Cagney
0 siblings, 1 reply; 9+ messages in thread
From: Mark Kettenis @ 2004-10-31 19:45 UTC (permalink / raw)
To: cagney; +Cc: drow, gdb-patches
Date: Sun, 31 Oct 2004 13:39:08 -0500
From: Andrew Cagney <cagney@gnu.org>
>>> This part:
>>>
>>>
>>>> +DEPRECATED_TM_FILE= tm-nbsd.h
>>>
>>>
>>> is no longer acceptable.
The situtation we have here is identical to that we encountered when we
first made it a requirement that not just new architectures, but also
extensions to exsting architectures, had to be multi-arch. We set the
standard and then helped developers exceed it.
Our only mistake was to "blink" when it came to the solib problem.
We've been "blinking" for too many years now.
So should I just commit the attached to get things moving?
IMHO, getting the solib h thingy fixed simply isn't top priority.
There are more important issues in GDB that deserve my attention.
Scaring away contributors by making unreasonable demands isn't a
sensible thing to do.
Mark
Index: ChangeLog
from Mark Kettenis <kettenis@gnu.org>
* config/i386/linux.mt (DEPRECATED_TM_FILE): Remove.
Index: config/i386/linux.mt
===================================================================
RCS file: /cvs/src/src/gdb/config/i386/linux.mt,v
retrieving revision 1.10
diff -u -p -r1.10 linux.mt
--- config/i386/linux.mt 13 Sep 2004 20:55:39 -0000 1.10
+++ config/i386/linux.mt 31 Oct 2004 19:21:53 -0000
@@ -1,4 +1,3 @@
# Target: Intel 386 running GNU/Linux
TDEPFILES= i386-tdep.o i386-linux-tdep.o glibc-tdep.o i387-tdep.o \
solib.o solib-svr4.o symfile-mem.o
-DEPRECATED_TM_FILE= tm-linux.h
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [COMMIT] OpenBSD/mips64 target and native support
2004-10-31 19:45 ` Mark Kettenis
@ 2004-10-31 20:07 ` Andrew Cagney
2004-10-31 22:28 ` Mark Kettenis
0 siblings, 1 reply; 9+ messages in thread
From: Andrew Cagney @ 2004-10-31 20:07 UTC (permalink / raw)
To: Mark Kettenis; +Cc: drow, gdb-patches
Mark Kettenis wrote:
> Date: Sun, 31 Oct 2004 13:39:08 -0500
> From: Andrew Cagney <cagney@gnu.org>
>
> >>> This part:
> >>>
> >>>
> >>>> +DEPRECATED_TM_FILE= tm-nbsd.h
> >>>
> >>>
> >>> is no longer acceptable.
>
> The situtation we have here is identical to that we encountered when we
> first made it a requirement that not just new architectures, but also
> extensions to exsting architectures, had to be multi-arch. We set the
> standard and then helped developers exceed it.
>
> Our only mistake was to "blink" when it came to the solib problem.
> We've been "blinking" for too many years now.
>
> So should I just commit the attached to get things moving?
If it was committed after 2004-09-13, sure. Oh, it wasn't.
> IMHO, getting the solib h thingy fixed simply isn't top priority.
> There are more important issues in GDB that deserve my attention.
> Scaring away contributors by making unreasonable demands isn't a
> sensible thing to do.
Our situtation here is identical to what we encountered with basic
multi-arch, the frame code, the regcace code, the function call code.
There, with our help and co-operation, people not just stepped up to,
but also exceeded the challenge.
Andrew
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [COMMIT] OpenBSD/mips64 target and native support
2004-10-31 20:07 ` Andrew Cagney
@ 2004-10-31 22:28 ` Mark Kettenis
2004-11-01 0:48 ` Andrew Cagney
0 siblings, 1 reply; 9+ messages in thread
From: Mark Kettenis @ 2004-10-31 22:28 UTC (permalink / raw)
To: cagney; +Cc: drow, gdb-patches
Date: Sun, 31 Oct 2004 15:07:16 -0500
From: Andrew Cagney <cagney@gnu.org>
> Scaring away contributors by making unreasonable demands isn't a
> sensible thing to do.
Our situtation here is identical to what we encountered with basic
multi-arch, the frame code, the regcace code, the function call code.
There, with our help and co-operation, people not just stepped up to,
but also exceeded the challenge.
I strongly disagree. The shared library code touches core parts of
GDB. There's no way an outsider is going to be able to fix that
properly, especially since changes will have to be tested on a
multitude of platforms. There is also absolutely no visible benefit
from making the required changes. This is something the shared
library maintainer and core maintainers have to sort out. It's going
to take quite a bit of time to do so.
In the mean time it is unfair to contributors to simply refuse
contribution of any new code.
Mark
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [COMMIT] OpenBSD/mips64 target and native support
2004-10-31 22:28 ` Mark Kettenis
@ 2004-11-01 0:48 ` Andrew Cagney
0 siblings, 0 replies; 9+ messages in thread
From: Andrew Cagney @ 2004-11-01 0:48 UTC (permalink / raw)
To: Mark Kettenis; +Cc: gdb-patches
Mark Kettenis wrote:
> Date: Sun, 31 Oct 2004 15:07:16 -0500
> From: Andrew Cagney <cagney@gnu.org>
>
> > Scaring away contributors by making unreasonable demands isn't a
> > sensible thing to do.
>
> Our situtation here is identical to what we encountered with basic
> multi-arch, the frame code, the regcace code, the function call code.
> There, with our help and co-operation, people not just stepped up to,
> but also exceeded the challenge.
>
> I strongly disagree. The shared library code touches core parts of
> GDB. There's no way an outsider is going to be able to fix that
> properly, especially since changes will have to be tested on a
> multitude of platforms. There is also absolutely no visible benefit
> from making the required changes. This is something the shared
> library maintainer and core maintainers have to sort out. It's going
> to take quite a bit of time to do so.
Blank [puzzled] expression.
This code is generic.
We already have optional svr4 shlibs working.
All our key platforms are svr4.
We've never required testing across a ``multitude of platforms''.
We strongly encourage cleanups.
So what's so hard about this? Especially when, the core maintainers
will be helping with the task.
Andrew
^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2004-11-01 0:48 UTC | newest]
Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2004-10-23 12:16 [COMMIT] OpenBSD/mips64 target and native support Mark Kettenis
2004-10-25 15:24 ` Andrew Cagney
2004-10-25 15:29 ` Daniel Jacobowitz
2004-10-25 19:01 ` Andrew Cagney
2004-10-31 18:39 ` Andrew Cagney
2004-10-31 19:45 ` Mark Kettenis
2004-10-31 20:07 ` Andrew Cagney
2004-10-31 22:28 ` Mark Kettenis
2004-11-01 0:48 ` Andrew Cagney
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox