2002-05-12 06:14:19 +08:00
|
|
|
/* Common target-dependent code for NetBSD systems.
|
2006-01-16 02:28:58 +08:00
|
|
|
|
2022-01-01 22:56:03 +08:00
|
|
|
Copyright (C) 2002-2022 Free Software Foundation, Inc.
|
2006-01-16 02:28:58 +08:00
|
|
|
|
2002-05-12 06:14:19 +08:00
|
|
|
Contributed by Wasabi Systems, 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
|
2007-08-24 02:08:50 +08:00
|
|
|
the Free Software Foundation; either version 3 of the License, or
|
2002-05-12 06:14:19 +08:00
|
|
|
(at your option) any later version.
|
2007-08-24 02:08:50 +08:00
|
|
|
|
2002-05-12 06:14:19 +08:00
|
|
|
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.
|
2007-08-24 02:08:50 +08:00
|
|
|
|
2002-05-12 06:14:19 +08:00
|
|
|
You should have received a copy of the GNU General Public License
|
2007-08-24 02:08:50 +08:00
|
|
|
along with this program. If not, see <http://www.gnu.org/licenses/>. */
|
2002-05-12 06:14:19 +08:00
|
|
|
|
|
|
|
#include "defs.h"
|
2020-04-08 10:01:10 +08:00
|
|
|
#include "auxv.h"
|
2002-05-12 06:14:19 +08:00
|
|
|
#include "solib-svr4.h"
|
Normalize names of the NetBSD files
The files used to be named 'nbsd', which incorrectly reflects
the name of the OS and confuses it with other BSD derived OSes.
gdb/ChangeLog:
* Makefile.in (ALL_64_TARGET_OBS, ALL_TARGET_OBS)
HFILES_NO_SRCDIR, ALLDEPFILES): Rename files.
* alpha-bsd-nat.c: Adjust include.
* alpha-bsd-tdep.h: Adjust comment.
* alpha-nbsd-tdep.c: Rename to ...
* alpha-netbsd-tdep.c: ... this, adjust include.
* amd64-nbsd-nat.c: Rename to ...
* amd64-netbsd-nat.c: ... this, adjust include.
* amd64-nbsd-tdep.c: Rename to ...
* amd64-netbsd-tdep.c: ... this, adjust include.
* amd64-tdep.h: Adjust include.
* arm-nbsd-nat.c: Rename to ...
* arm-netbsd-nat.c: ... this, adjust include.
* arm-nbsd-tdep.c: Rename to ...
* arm-netbsd-tdep.c: ... this, adjust include.
* arm-nbsd-tdep.h: Rename to ...
* arm-netbsd-tdep.h: ... this, adjust include.
* configure.nat: Adjust file lists.
* configure.tgt: Likewise.
* hppa-nbsd-nat.c: Rename to ...
* hppa-netbsd-nat.c: ... this, adjust include.
* hppa-nbsd-tdep.c: Rename to ...
* hppa-netbsd-tdep.c: ... this, adjust include.
* i386-nbsd-nat.c: Rename to ...
* i386-netbsd-nat.c: ... this, adjust include.
* i386-nbsd-tdep.c: Rename to ...
* i386-netbsd-tdep.c: ... this, adjust include.
* m68k-bsd-nat.c: Adjust include.
* mips-nbsd-nat.c: Rename to ...
* mips-netbsd-nat.c: ... this, adjust include.
* mips-nbsd-tdep.c: Rename to ...
* mips-netbsd-tdep.c: ... this, adjust include.
* mips-nbsd-tdep.h: Rename to ...
* mips-netbsd-tdep.h: ... this.
* nbsd-nat.c: Rename to ...
* netbsd-nat.c: ... this, adjust include.
* nbsd-nat.h: Rename to ...
* netbsd-nat.h: ... this, adjust include.
* nbsd-tdep.c: Rename to ...
* netbsd-tdep.c: ... this, adjust include.
* nbsd-tdep.h: Rename to ...
* netbsd-tdep.h: ... this.
* ppc-nbsd-nat.c: Rename to ...
* ppc-netbsd-nat.c: ... this, adjust include.
* ppc-nbsd-tdep.c: Rename to ...
* ppc-netbsd-tdep.c: ... this, adjust include and comment.
* ppc-nbsd-tdep.h: Rename to ...
* ppc-netbsd-tdep.h: ... this.
* sh-nbsd-nat.c: Rename to ...
* sh-netbsd-nat.c: ... this, adjust include.
* sh-nbsd-tdep.c: Rename to ...
* sh-netbsd-tdep.c: ... this, adjust include.
* sparc-nbsd-nat.c: Rename to ...
* sparc-netbsd-nat.c: ... this.
* sparc-nbsd-tdep.c: Rename to ...
* sparc-netbsd-tdep.c: ... this, adjust include.
* sparc64-nbsd-nat.c: Rename to ...
* sparc64-netbsd-nat.c: ... this.
* sparc64-nbsd-tdep.c: Rename to ...
* sparc64-netbsd-tdep.c: ... this, adjust include.
* sparc64-tdep.h: Adjust comment.
* vax-bsd-nat.c: Adjust include.
* vax-nbsd-tdep.c: Rename to ...
* vax-netbsd-tdep.c: ... this, adjust include.
2020-10-07 03:36:22 +08:00
|
|
|
#include "netbsd-tdep.h"
|
2020-03-17 02:02:22 +08:00
|
|
|
#include "gdbarch.h"
|
2020-04-07 02:08:46 +08:00
|
|
|
#include "objfiles.h"
|
2020-04-29 21:33:33 +08:00
|
|
|
#include "xml-syscall.h"
|
2002-05-12 06:14:19 +08:00
|
|
|
|
2020-04-12 08:00:14 +08:00
|
|
|
/* Flags in the 'kve_protection' field in struct kinfo_vmentry. These
|
|
|
|
match the KVME_PROT_* constants in <sys/sysctl.h>. */
|
|
|
|
|
|
|
|
#define KINFO_VME_PROT_READ 0x00000001
|
|
|
|
#define KINFO_VME_PROT_WRITE 0x00000002
|
|
|
|
#define KINFO_VME_PROT_EXEC 0x00000004
|
|
|
|
|
|
|
|
/* Flags in the 'kve_flags' field in struct kinfo_vmentry. These
|
|
|
|
match the KVME_FLAG_* constants in <sys/sysctl.h>. */
|
|
|
|
|
|
|
|
#define KINFO_VME_FLAG_COW 0x00000001
|
|
|
|
#define KINFO_VME_FLAG_NEEDS_COPY 0x00000002
|
|
|
|
#define KINFO_VME_FLAG_NOCOREDUMP 0x00000004
|
|
|
|
#define KINFO_VME_FLAG_PAGEABLE 0x00000008
|
|
|
|
#define KINFO_VME_FLAG_GROWS_UP 0x00000010
|
|
|
|
#define KINFO_VME_FLAG_GROWS_DOWN 0x00000020
|
|
|
|
|
2006-01-16 02:28:58 +08:00
|
|
|
/* FIXME: kettenis/20060115: We should really eliminate the next two
|
|
|
|
functions completely. */
|
2002-05-12 06:14:19 +08:00
|
|
|
|
|
|
|
struct link_map_offsets *
|
|
|
|
nbsd_ilp32_solib_svr4_fetch_link_map_offsets (void)
|
|
|
|
{
|
2006-01-16 02:28:58 +08:00
|
|
|
return svr4_ilp32_fetch_link_map_offsets ();
|
2002-05-12 06:14:19 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
struct link_map_offsets *
|
|
|
|
nbsd_lp64_solib_svr4_fetch_link_map_offsets (void)
|
|
|
|
{
|
2006-01-16 02:28:58 +08:00
|
|
|
return svr4_lp64_fetch_link_map_offsets ();
|
2002-05-12 06:14:19 +08:00
|
|
|
}
|
2002-09-01 04:28:37 +08:00
|
|
|
|
|
|
|
int
|
2012-02-03 04:19:17 +08:00
|
|
|
nbsd_pc_in_sigtramp (CORE_ADDR pc, const char *func_name)
|
2002-09-01 04:28:37 +08:00
|
|
|
{
|
|
|
|
/* Check for libc-provided signal trampoline. All such trampolines
|
|
|
|
have function names which begin with "__sigtramp". */
|
|
|
|
|
|
|
|
return (func_name != NULL
|
2015-03-06 17:42:06 +08:00
|
|
|
&& startswith (func_name, "__sigtramp"));
|
2002-09-01 04:28:37 +08:00
|
|
|
}
|
2020-03-17 02:02:22 +08:00
|
|
|
|
|
|
|
/* This enum is derived from NETBSD's <sys/signal.h>. */
|
|
|
|
|
|
|
|
enum
|
|
|
|
{
|
|
|
|
NBSD_SIGHUP = 1,
|
|
|
|
NBSD_SIGINT = 2,
|
|
|
|
NBSD_SIGQUIT = 3,
|
|
|
|
NBSD_SIGILL = 4,
|
|
|
|
NBSD_SIGTRAP = 5,
|
|
|
|
NBSD_SIGABRT = 6,
|
|
|
|
NBSD_SIGEMT = 7,
|
|
|
|
NBSD_SIGFPE = 8,
|
|
|
|
NBSD_SIGKILL = 9,
|
|
|
|
NBSD_SIGBUS = 10,
|
|
|
|
NBSD_SIGSEGV = 11,
|
|
|
|
NBSD_SIGSYS = 12,
|
|
|
|
NBSD_SIGPIPE = 13,
|
|
|
|
NBSD_SIGALRM = 14,
|
|
|
|
NBSD_SIGTERM = 15,
|
|
|
|
NBSD_SIGURG = 16,
|
|
|
|
NBSD_SIGSTOP = 17,
|
|
|
|
NBSD_SIGTSTP = 18,
|
|
|
|
NBSD_SIGCONT = 19,
|
|
|
|
NBSD_SIGCHLD = 20,
|
|
|
|
NBSD_SIGTTIN = 21,
|
|
|
|
NBSD_SIGTTOU = 22,
|
|
|
|
NBSD_SIGIO = 23,
|
|
|
|
NBSD_SIGXCPU = 24,
|
|
|
|
NBSD_SIGXFSZ = 25,
|
|
|
|
NBSD_SIGVTALRM = 26,
|
|
|
|
NBSD_SIGPROF = 27,
|
|
|
|
NBSD_SIGWINCH = 28,
|
|
|
|
NBSD_SIGINFO = 29,
|
|
|
|
NBSD_SIGUSR1 = 30,
|
|
|
|
NBSD_SIGUSR2 = 31,
|
|
|
|
NBSD_SIGPWR = 32,
|
|
|
|
NBSD_SIGRTMIN = 33,
|
|
|
|
NBSD_SIGRTMAX = 63,
|
|
|
|
};
|
|
|
|
|
|
|
|
/* Implement the "gdb_signal_from_target" gdbarch method. */
|
|
|
|
|
|
|
|
static enum gdb_signal
|
|
|
|
nbsd_gdb_signal_from_target (struct gdbarch *gdbarch, int signal)
|
|
|
|
{
|
|
|
|
switch (signal)
|
|
|
|
{
|
|
|
|
case 0:
|
|
|
|
return GDB_SIGNAL_0;
|
|
|
|
|
|
|
|
case NBSD_SIGHUP:
|
|
|
|
return GDB_SIGNAL_HUP;
|
|
|
|
|
|
|
|
case NBSD_SIGINT:
|
|
|
|
return GDB_SIGNAL_INT;
|
|
|
|
|
|
|
|
case NBSD_SIGQUIT:
|
|
|
|
return GDB_SIGNAL_QUIT;
|
|
|
|
|
|
|
|
case NBSD_SIGILL:
|
|
|
|
return GDB_SIGNAL_ILL;
|
|
|
|
|
|
|
|
case NBSD_SIGTRAP:
|
|
|
|
return GDB_SIGNAL_TRAP;
|
|
|
|
|
|
|
|
case NBSD_SIGABRT:
|
|
|
|
return GDB_SIGNAL_ABRT;
|
|
|
|
|
|
|
|
case NBSD_SIGEMT:
|
|
|
|
return GDB_SIGNAL_EMT;
|
|
|
|
|
|
|
|
case NBSD_SIGFPE:
|
|
|
|
return GDB_SIGNAL_FPE;
|
|
|
|
|
|
|
|
case NBSD_SIGKILL:
|
|
|
|
return GDB_SIGNAL_KILL;
|
|
|
|
|
|
|
|
case NBSD_SIGBUS:
|
|
|
|
return GDB_SIGNAL_BUS;
|
|
|
|
|
|
|
|
case NBSD_SIGSEGV:
|
|
|
|
return GDB_SIGNAL_SEGV;
|
|
|
|
|
|
|
|
case NBSD_SIGSYS:
|
|
|
|
return GDB_SIGNAL_SYS;
|
|
|
|
|
|
|
|
case NBSD_SIGPIPE:
|
|
|
|
return GDB_SIGNAL_PIPE;
|
|
|
|
|
|
|
|
case NBSD_SIGALRM:
|
|
|
|
return GDB_SIGNAL_ALRM;
|
|
|
|
|
|
|
|
case NBSD_SIGTERM:
|
|
|
|
return GDB_SIGNAL_TERM;
|
|
|
|
|
|
|
|
case NBSD_SIGURG:
|
|
|
|
return GDB_SIGNAL_URG;
|
|
|
|
|
|
|
|
case NBSD_SIGSTOP:
|
|
|
|
return GDB_SIGNAL_STOP;
|
|
|
|
|
|
|
|
case NBSD_SIGTSTP:
|
|
|
|
return GDB_SIGNAL_TSTP;
|
|
|
|
|
|
|
|
case NBSD_SIGCONT:
|
|
|
|
return GDB_SIGNAL_CONT;
|
|
|
|
|
|
|
|
case NBSD_SIGCHLD:
|
|
|
|
return GDB_SIGNAL_CHLD;
|
|
|
|
|
|
|
|
case NBSD_SIGTTIN:
|
|
|
|
return GDB_SIGNAL_TTIN;
|
|
|
|
|
|
|
|
case NBSD_SIGTTOU:
|
|
|
|
return GDB_SIGNAL_TTOU;
|
|
|
|
|
|
|
|
case NBSD_SIGIO:
|
|
|
|
return GDB_SIGNAL_IO;
|
|
|
|
|
|
|
|
case NBSD_SIGXCPU:
|
|
|
|
return GDB_SIGNAL_XCPU;
|
|
|
|
|
|
|
|
case NBSD_SIGXFSZ:
|
|
|
|
return GDB_SIGNAL_XFSZ;
|
|
|
|
|
|
|
|
case NBSD_SIGVTALRM:
|
|
|
|
return GDB_SIGNAL_VTALRM;
|
|
|
|
|
|
|
|
case NBSD_SIGPROF:
|
|
|
|
return GDB_SIGNAL_PROF;
|
|
|
|
|
|
|
|
case NBSD_SIGWINCH:
|
|
|
|
return GDB_SIGNAL_WINCH;
|
|
|
|
|
|
|
|
case NBSD_SIGINFO:
|
|
|
|
return GDB_SIGNAL_INFO;
|
|
|
|
|
|
|
|
case NBSD_SIGUSR1:
|
|
|
|
return GDB_SIGNAL_USR1;
|
|
|
|
|
|
|
|
case NBSD_SIGUSR2:
|
|
|
|
return GDB_SIGNAL_USR2;
|
|
|
|
|
|
|
|
case NBSD_SIGPWR:
|
|
|
|
return GDB_SIGNAL_PWR;
|
|
|
|
|
|
|
|
/* SIGRTMIN and SIGRTMAX are not continuous in <gdb/signals.def>,
|
|
|
|
therefore we have to handle them here. */
|
|
|
|
case NBSD_SIGRTMIN:
|
|
|
|
return GDB_SIGNAL_REALTIME_33;
|
|
|
|
|
|
|
|
case NBSD_SIGRTMAX:
|
|
|
|
return GDB_SIGNAL_REALTIME_63;
|
|
|
|
}
|
|
|
|
|
|
|
|
if (signal >= NBSD_SIGRTMIN + 1 && signal <= NBSD_SIGRTMAX - 1)
|
|
|
|
{
|
|
|
|
int offset = signal - NBSD_SIGRTMIN + 1;
|
|
|
|
|
|
|
|
return (enum gdb_signal) ((int) GDB_SIGNAL_REALTIME_34 + offset);
|
|
|
|
}
|
|
|
|
|
|
|
|
return GDB_SIGNAL_UNKNOWN;
|
|
|
|
}
|
|
|
|
|
|
|
|
/* Implement the "gdb_signal_to_target" gdbarch method. */
|
|
|
|
|
|
|
|
static int
|
|
|
|
nbsd_gdb_signal_to_target (struct gdbarch *gdbarch,
|
gdb, gdbserver, gdbsupport: fix leading space vs tabs issues
Many spots incorrectly use only spaces for indentation (for example,
there are a lot of spots in ada-lang.c). I've always found it awkward
when I needed to edit one of these spots: do I keep the original wrong
indentation, or do I fix it? What if the lines around it are also
wrong, do I fix them too? I probably don't want to fix them in the same
patch, to avoid adding noise to my patch.
So I propose to fix as much as possible once and for all (hopefully).
One typical counter argument for this is that it makes code archeology
more difficult, because git-blame will show this commit as the last
change for these lines. My counter counter argument is: when
git-blaming, you often need to do "blame the file at the parent commit"
anyway, to go past some other refactor that touched the line you are
interested in, but is not the change you are looking for. So you
already need a somewhat efficient way to do this.
Using some interactive tool, rather than plain git-blame, makes this
trivial. For example, I use "tig blame <file>", where going back past
the commit that changed the currently selected line is one keystroke.
It looks like Magit in Emacs does it too (though I've never used it).
Web viewers of Github and Gitlab do it too. My point is that it won't
really make archeology more difficult.
The other typical counter argument is that it will cause conflicts with
existing patches. That's true... but it's a one time cost, and those
are not conflicts that are difficult to resolve. I have also tried "git
rebase --ignore-whitespace", it seems to work well. Although that will
re-introduce the faulty indentation, so one needs to take care of fixing
the indentation in the patch after that (which is easy).
gdb/ChangeLog:
* aarch64-linux-tdep.c: Fix indentation.
* aarch64-ravenscar-thread.c: Fix indentation.
* aarch64-tdep.c: Fix indentation.
* aarch64-tdep.h: Fix indentation.
* ada-lang.c: Fix indentation.
* ada-lang.h: Fix indentation.
* ada-tasks.c: Fix indentation.
* ada-typeprint.c: Fix indentation.
* ada-valprint.c: Fix indentation.
* ada-varobj.c: Fix indentation.
* addrmap.c: Fix indentation.
* addrmap.h: Fix indentation.
* agent.c: Fix indentation.
* aix-thread.c: Fix indentation.
* alpha-bsd-nat.c: Fix indentation.
* alpha-linux-tdep.c: Fix indentation.
* alpha-mdebug-tdep.c: Fix indentation.
* alpha-nbsd-tdep.c: Fix indentation.
* alpha-obsd-tdep.c: Fix indentation.
* alpha-tdep.c: Fix indentation.
* amd64-bsd-nat.c: Fix indentation.
* amd64-darwin-tdep.c: Fix indentation.
* amd64-linux-nat.c: Fix indentation.
* amd64-linux-tdep.c: Fix indentation.
* amd64-nat.c: Fix indentation.
* amd64-obsd-tdep.c: Fix indentation.
* amd64-tdep.c: Fix indentation.
* amd64-windows-tdep.c: Fix indentation.
* annotate.c: Fix indentation.
* arc-tdep.c: Fix indentation.
* arch-utils.c: Fix indentation.
* arch/arm-get-next-pcs.c: Fix indentation.
* arch/arm.c: Fix indentation.
* arm-linux-nat.c: Fix indentation.
* arm-linux-tdep.c: Fix indentation.
* arm-nbsd-tdep.c: Fix indentation.
* arm-pikeos-tdep.c: Fix indentation.
* arm-tdep.c: Fix indentation.
* arm-tdep.h: Fix indentation.
* arm-wince-tdep.c: Fix indentation.
* auto-load.c: Fix indentation.
* auxv.c: Fix indentation.
* avr-tdep.c: Fix indentation.
* ax-gdb.c: Fix indentation.
* ax-general.c: Fix indentation.
* bfin-linux-tdep.c: Fix indentation.
* block.c: Fix indentation.
* block.h: Fix indentation.
* blockframe.c: Fix indentation.
* bpf-tdep.c: Fix indentation.
* break-catch-sig.c: Fix indentation.
* break-catch-syscall.c: Fix indentation.
* break-catch-throw.c: Fix indentation.
* breakpoint.c: Fix indentation.
* breakpoint.h: Fix indentation.
* bsd-uthread.c: Fix indentation.
* btrace.c: Fix indentation.
* build-id.c: Fix indentation.
* buildsym-legacy.h: Fix indentation.
* buildsym.c: Fix indentation.
* c-typeprint.c: Fix indentation.
* c-valprint.c: Fix indentation.
* c-varobj.c: Fix indentation.
* charset.c: Fix indentation.
* cli/cli-cmds.c: Fix indentation.
* cli/cli-decode.c: Fix indentation.
* cli/cli-decode.h: Fix indentation.
* cli/cli-script.c: Fix indentation.
* cli/cli-setshow.c: Fix indentation.
* coff-pe-read.c: Fix indentation.
* coffread.c: Fix indentation.
* compile/compile-cplus-types.c: Fix indentation.
* compile/compile-object-load.c: Fix indentation.
* compile/compile-object-run.c: Fix indentation.
* completer.c: Fix indentation.
* corefile.c: Fix indentation.
* corelow.c: Fix indentation.
* cp-abi.h: Fix indentation.
* cp-namespace.c: Fix indentation.
* cp-support.c: Fix indentation.
* cp-valprint.c: Fix indentation.
* cris-linux-tdep.c: Fix indentation.
* cris-tdep.c: Fix indentation.
* darwin-nat-info.c: Fix indentation.
* darwin-nat.c: Fix indentation.
* darwin-nat.h: Fix indentation.
* dbxread.c: Fix indentation.
* dcache.c: Fix indentation.
* disasm.c: Fix indentation.
* dtrace-probe.c: Fix indentation.
* dwarf2/abbrev.c: Fix indentation.
* dwarf2/attribute.c: Fix indentation.
* dwarf2/expr.c: Fix indentation.
* dwarf2/frame.c: Fix indentation.
* dwarf2/index-cache.c: Fix indentation.
* dwarf2/index-write.c: Fix indentation.
* dwarf2/line-header.c: Fix indentation.
* dwarf2/loc.c: Fix indentation.
* dwarf2/macro.c: Fix indentation.
* dwarf2/read.c: Fix indentation.
* dwarf2/read.h: Fix indentation.
* elfread.c: Fix indentation.
* eval.c: Fix indentation.
* event-top.c: Fix indentation.
* exec.c: Fix indentation.
* exec.h: Fix indentation.
* expprint.c: Fix indentation.
* f-lang.c: Fix indentation.
* f-typeprint.c: Fix indentation.
* f-valprint.c: Fix indentation.
* fbsd-nat.c: Fix indentation.
* fbsd-tdep.c: Fix indentation.
* findvar.c: Fix indentation.
* fork-child.c: Fix indentation.
* frame-unwind.c: Fix indentation.
* frame-unwind.h: Fix indentation.
* frame.c: Fix indentation.
* frv-linux-tdep.c: Fix indentation.
* frv-tdep.c: Fix indentation.
* frv-tdep.h: Fix indentation.
* ft32-tdep.c: Fix indentation.
* gcore.c: Fix indentation.
* gdb_bfd.c: Fix indentation.
* gdbarch.sh: Fix indentation.
* gdbarch.c: Re-generate
* gdbarch.h: Re-generate.
* gdbcore.h: Fix indentation.
* gdbthread.h: Fix indentation.
* gdbtypes.c: Fix indentation.
* gdbtypes.h: Fix indentation.
* glibc-tdep.c: Fix indentation.
* gnu-nat.c: Fix indentation.
* gnu-nat.h: Fix indentation.
* gnu-v2-abi.c: Fix indentation.
* gnu-v3-abi.c: Fix indentation.
* go32-nat.c: Fix indentation.
* guile/guile-internal.h: Fix indentation.
* guile/scm-cmd.c: Fix indentation.
* guile/scm-frame.c: Fix indentation.
* guile/scm-iterator.c: Fix indentation.
* guile/scm-math.c: Fix indentation.
* guile/scm-ports.c: Fix indentation.
* guile/scm-pretty-print.c: Fix indentation.
* guile/scm-value.c: Fix indentation.
* h8300-tdep.c: Fix indentation.
* hppa-linux-nat.c: Fix indentation.
* hppa-linux-tdep.c: Fix indentation.
* hppa-nbsd-nat.c: Fix indentation.
* hppa-nbsd-tdep.c: Fix indentation.
* hppa-obsd-nat.c: Fix indentation.
* hppa-tdep.c: Fix indentation.
* hppa-tdep.h: Fix indentation.
* i386-bsd-nat.c: Fix indentation.
* i386-darwin-nat.c: Fix indentation.
* i386-darwin-tdep.c: Fix indentation.
* i386-dicos-tdep.c: Fix indentation.
* i386-gnu-nat.c: Fix indentation.
* i386-linux-nat.c: Fix indentation.
* i386-linux-tdep.c: Fix indentation.
* i386-nto-tdep.c: Fix indentation.
* i386-obsd-tdep.c: Fix indentation.
* i386-sol2-nat.c: Fix indentation.
* i386-tdep.c: Fix indentation.
* i386-tdep.h: Fix indentation.
* i386-windows-tdep.c: Fix indentation.
* i387-tdep.c: Fix indentation.
* i387-tdep.h: Fix indentation.
* ia64-libunwind-tdep.c: Fix indentation.
* ia64-libunwind-tdep.h: Fix indentation.
* ia64-linux-nat.c: Fix indentation.
* ia64-linux-tdep.c: Fix indentation.
* ia64-tdep.c: Fix indentation.
* ia64-tdep.h: Fix indentation.
* ia64-vms-tdep.c: Fix indentation.
* infcall.c: Fix indentation.
* infcmd.c: Fix indentation.
* inferior.c: Fix indentation.
* infrun.c: Fix indentation.
* iq2000-tdep.c: Fix indentation.
* language.c: Fix indentation.
* linespec.c: Fix indentation.
* linux-fork.c: Fix indentation.
* linux-nat.c: Fix indentation.
* linux-tdep.c: Fix indentation.
* linux-thread-db.c: Fix indentation.
* lm32-tdep.c: Fix indentation.
* m2-lang.c: Fix indentation.
* m2-typeprint.c: Fix indentation.
* m2-valprint.c: Fix indentation.
* m32c-tdep.c: Fix indentation.
* m32r-linux-tdep.c: Fix indentation.
* m32r-tdep.c: Fix indentation.
* m68hc11-tdep.c: Fix indentation.
* m68k-bsd-nat.c: Fix indentation.
* m68k-linux-nat.c: Fix indentation.
* m68k-linux-tdep.c: Fix indentation.
* m68k-tdep.c: Fix indentation.
* machoread.c: Fix indentation.
* macrocmd.c: Fix indentation.
* macroexp.c: Fix indentation.
* macroscope.c: Fix indentation.
* macrotab.c: Fix indentation.
* macrotab.h: Fix indentation.
* main.c: Fix indentation.
* mdebugread.c: Fix indentation.
* mep-tdep.c: Fix indentation.
* mi/mi-cmd-catch.c: Fix indentation.
* mi/mi-cmd-disas.c: Fix indentation.
* mi/mi-cmd-env.c: Fix indentation.
* mi/mi-cmd-stack.c: Fix indentation.
* mi/mi-cmd-var.c: Fix indentation.
* mi/mi-cmds.c: Fix indentation.
* mi/mi-main.c: Fix indentation.
* mi/mi-parse.c: Fix indentation.
* microblaze-tdep.c: Fix indentation.
* minidebug.c: Fix indentation.
* minsyms.c: Fix indentation.
* mips-linux-nat.c: Fix indentation.
* mips-linux-tdep.c: Fix indentation.
* mips-nbsd-tdep.c: Fix indentation.
* mips-tdep.c: Fix indentation.
* mn10300-linux-tdep.c: Fix indentation.
* mn10300-tdep.c: Fix indentation.
* moxie-tdep.c: Fix indentation.
* msp430-tdep.c: Fix indentation.
* namespace.h: Fix indentation.
* nat/fork-inferior.c: Fix indentation.
* nat/gdb_ptrace.h: Fix indentation.
* nat/linux-namespaces.c: Fix indentation.
* nat/linux-osdata.c: Fix indentation.
* nat/netbsd-nat.c: Fix indentation.
* nat/x86-dregs.c: Fix indentation.
* nbsd-nat.c: Fix indentation.
* nbsd-tdep.c: Fix indentation.
* nios2-linux-tdep.c: Fix indentation.
* nios2-tdep.c: Fix indentation.
* nto-procfs.c: Fix indentation.
* nto-tdep.c: Fix indentation.
* objfiles.c: Fix indentation.
* objfiles.h: Fix indentation.
* opencl-lang.c: Fix indentation.
* or1k-tdep.c: Fix indentation.
* osabi.c: Fix indentation.
* osabi.h: Fix indentation.
* osdata.c: Fix indentation.
* p-lang.c: Fix indentation.
* p-typeprint.c: Fix indentation.
* p-valprint.c: Fix indentation.
* parse.c: Fix indentation.
* ppc-linux-nat.c: Fix indentation.
* ppc-linux-tdep.c: Fix indentation.
* ppc-nbsd-nat.c: Fix indentation.
* ppc-nbsd-tdep.c: Fix indentation.
* ppc-obsd-nat.c: Fix indentation.
* ppc-ravenscar-thread.c: Fix indentation.
* ppc-sysv-tdep.c: Fix indentation.
* ppc64-tdep.c: Fix indentation.
* printcmd.c: Fix indentation.
* proc-api.c: Fix indentation.
* producer.c: Fix indentation.
* producer.h: Fix indentation.
* prologue-value.c: Fix indentation.
* prologue-value.h: Fix indentation.
* psymtab.c: Fix indentation.
* python/py-arch.c: Fix indentation.
* python/py-bpevent.c: Fix indentation.
* python/py-event.c: Fix indentation.
* python/py-event.h: Fix indentation.
* python/py-finishbreakpoint.c: Fix indentation.
* python/py-frame.c: Fix indentation.
* python/py-framefilter.c: Fix indentation.
* python/py-inferior.c: Fix indentation.
* python/py-infthread.c: Fix indentation.
* python/py-objfile.c: Fix indentation.
* python/py-prettyprint.c: Fix indentation.
* python/py-registers.c: Fix indentation.
* python/py-signalevent.c: Fix indentation.
* python/py-stopevent.c: Fix indentation.
* python/py-stopevent.h: Fix indentation.
* python/py-threadevent.c: Fix indentation.
* python/py-tui.c: Fix indentation.
* python/py-unwind.c: Fix indentation.
* python/py-value.c: Fix indentation.
* python/py-xmethods.c: Fix indentation.
* python/python-internal.h: Fix indentation.
* python/python.c: Fix indentation.
* ravenscar-thread.c: Fix indentation.
* record-btrace.c: Fix indentation.
* record-full.c: Fix indentation.
* record.c: Fix indentation.
* reggroups.c: Fix indentation.
* regset.h: Fix indentation.
* remote-fileio.c: Fix indentation.
* remote.c: Fix indentation.
* reverse.c: Fix indentation.
* riscv-linux-tdep.c: Fix indentation.
* riscv-ravenscar-thread.c: Fix indentation.
* riscv-tdep.c: Fix indentation.
* rl78-tdep.c: Fix indentation.
* rs6000-aix-tdep.c: Fix indentation.
* rs6000-lynx178-tdep.c: Fix indentation.
* rs6000-nat.c: Fix indentation.
* rs6000-tdep.c: Fix indentation.
* rust-lang.c: Fix indentation.
* rx-tdep.c: Fix indentation.
* s12z-tdep.c: Fix indentation.
* s390-linux-tdep.c: Fix indentation.
* score-tdep.c: Fix indentation.
* ser-base.c: Fix indentation.
* ser-mingw.c: Fix indentation.
* ser-uds.c: Fix indentation.
* ser-unix.c: Fix indentation.
* serial.c: Fix indentation.
* sh-linux-tdep.c: Fix indentation.
* sh-nbsd-tdep.c: Fix indentation.
* sh-tdep.c: Fix indentation.
* skip.c: Fix indentation.
* sol-thread.c: Fix indentation.
* solib-aix.c: Fix indentation.
* solib-darwin.c: Fix indentation.
* solib-frv.c: Fix indentation.
* solib-svr4.c: Fix indentation.
* solib.c: Fix indentation.
* source.c: Fix indentation.
* sparc-linux-tdep.c: Fix indentation.
* sparc-nbsd-tdep.c: Fix indentation.
* sparc-obsd-tdep.c: Fix indentation.
* sparc-ravenscar-thread.c: Fix indentation.
* sparc-tdep.c: Fix indentation.
* sparc64-linux-tdep.c: Fix indentation.
* sparc64-nbsd-tdep.c: Fix indentation.
* sparc64-obsd-tdep.c: Fix indentation.
* sparc64-tdep.c: Fix indentation.
* stabsread.c: Fix indentation.
* stack.c: Fix indentation.
* stap-probe.c: Fix indentation.
* stubs/ia64vms-stub.c: Fix indentation.
* stubs/m32r-stub.c: Fix indentation.
* stubs/m68k-stub.c: Fix indentation.
* stubs/sh-stub.c: Fix indentation.
* stubs/sparc-stub.c: Fix indentation.
* symfile-mem.c: Fix indentation.
* symfile.c: Fix indentation.
* symfile.h: Fix indentation.
* symmisc.c: Fix indentation.
* symtab.c: Fix indentation.
* symtab.h: Fix indentation.
* target-float.c: Fix indentation.
* target.c: Fix indentation.
* target.h: Fix indentation.
* tic6x-tdep.c: Fix indentation.
* tilegx-linux-tdep.c: Fix indentation.
* tilegx-tdep.c: Fix indentation.
* top.c: Fix indentation.
* tracefile-tfile.c: Fix indentation.
* tracepoint.c: Fix indentation.
* tui/tui-disasm.c: Fix indentation.
* tui/tui-io.c: Fix indentation.
* tui/tui-regs.c: Fix indentation.
* tui/tui-stack.c: Fix indentation.
* tui/tui-win.c: Fix indentation.
* tui/tui-winsource.c: Fix indentation.
* tui/tui.c: Fix indentation.
* typeprint.c: Fix indentation.
* ui-out.h: Fix indentation.
* unittests/copy_bitwise-selftests.c: Fix indentation.
* unittests/memory-map-selftests.c: Fix indentation.
* utils.c: Fix indentation.
* v850-tdep.c: Fix indentation.
* valarith.c: Fix indentation.
* valops.c: Fix indentation.
* valprint.c: Fix indentation.
* valprint.h: Fix indentation.
* value.c: Fix indentation.
* value.h: Fix indentation.
* varobj.c: Fix indentation.
* vax-tdep.c: Fix indentation.
* windows-nat.c: Fix indentation.
* windows-tdep.c: Fix indentation.
* xcoffread.c: Fix indentation.
* xml-syscall.c: Fix indentation.
* xml-tdesc.c: Fix indentation.
* xstormy16-tdep.c: Fix indentation.
* xtensa-config.c: Fix indentation.
* xtensa-linux-nat.c: Fix indentation.
* xtensa-linux-tdep.c: Fix indentation.
* xtensa-tdep.c: Fix indentation.
gdbserver/ChangeLog:
* ax.cc: Fix indentation.
* dll.cc: Fix indentation.
* inferiors.h: Fix indentation.
* linux-low.cc: Fix indentation.
* linux-nios2-low.cc: Fix indentation.
* linux-ppc-ipa.cc: Fix indentation.
* linux-ppc-low.cc: Fix indentation.
* linux-x86-low.cc: Fix indentation.
* linux-xtensa-low.cc: Fix indentation.
* regcache.cc: Fix indentation.
* server.cc: Fix indentation.
* tracepoint.cc: Fix indentation.
gdbsupport/ChangeLog:
* common-exceptions.h: Fix indentation.
* event-loop.cc: Fix indentation.
* fileio.cc: Fix indentation.
* filestuff.cc: Fix indentation.
* gdb-dlfcn.cc: Fix indentation.
* gdb_string_view.h: Fix indentation.
* job-control.cc: Fix indentation.
* signals.cc: Fix indentation.
Change-Id: I4bad7ae6be0fbe14168b8ebafb98ffe14964a695
2020-11-02 23:26:14 +08:00
|
|
|
enum gdb_signal signal)
|
2020-03-17 02:02:22 +08:00
|
|
|
{
|
|
|
|
switch (signal)
|
|
|
|
{
|
|
|
|
case GDB_SIGNAL_0:
|
|
|
|
return 0;
|
|
|
|
|
|
|
|
case GDB_SIGNAL_HUP:
|
|
|
|
return NBSD_SIGHUP;
|
|
|
|
|
|
|
|
case GDB_SIGNAL_INT:
|
|
|
|
return NBSD_SIGINT;
|
|
|
|
|
|
|
|
case GDB_SIGNAL_QUIT:
|
|
|
|
return NBSD_SIGQUIT;
|
|
|
|
|
|
|
|
case GDB_SIGNAL_ILL:
|
|
|
|
return NBSD_SIGILL;
|
|
|
|
|
|
|
|
case GDB_SIGNAL_TRAP:
|
|
|
|
return NBSD_SIGTRAP;
|
|
|
|
|
|
|
|
case GDB_SIGNAL_ABRT:
|
|
|
|
return NBSD_SIGABRT;
|
|
|
|
|
|
|
|
case GDB_SIGNAL_EMT:
|
|
|
|
return NBSD_SIGEMT;
|
|
|
|
|
|
|
|
case GDB_SIGNAL_FPE:
|
|
|
|
return NBSD_SIGFPE;
|
|
|
|
|
|
|
|
case GDB_SIGNAL_KILL:
|
|
|
|
return NBSD_SIGKILL;
|
|
|
|
|
|
|
|
case GDB_SIGNAL_BUS:
|
|
|
|
return NBSD_SIGBUS;
|
|
|
|
|
|
|
|
case GDB_SIGNAL_SEGV:
|
|
|
|
return NBSD_SIGSEGV;
|
|
|
|
|
|
|
|
case GDB_SIGNAL_SYS:
|
|
|
|
return NBSD_SIGSYS;
|
|
|
|
|
|
|
|
case GDB_SIGNAL_PIPE:
|
|
|
|
return NBSD_SIGPIPE;
|
|
|
|
|
|
|
|
case GDB_SIGNAL_ALRM:
|
|
|
|
return NBSD_SIGALRM;
|
|
|
|
|
|
|
|
case GDB_SIGNAL_TERM:
|
|
|
|
return NBSD_SIGTERM;
|
|
|
|
|
|
|
|
case GDB_SIGNAL_URG:
|
|
|
|
return NBSD_SIGSTOP;
|
|
|
|
|
|
|
|
case GDB_SIGNAL_TSTP:
|
|
|
|
return NBSD_SIGTSTP;
|
|
|
|
|
|
|
|
case GDB_SIGNAL_CONT:
|
|
|
|
return NBSD_SIGCONT;
|
|
|
|
|
|
|
|
case GDB_SIGNAL_CHLD:
|
|
|
|
return NBSD_SIGCHLD;
|
|
|
|
|
|
|
|
case GDB_SIGNAL_TTIN:
|
|
|
|
return NBSD_SIGTTIN;
|
|
|
|
|
|
|
|
case GDB_SIGNAL_TTOU:
|
|
|
|
return NBSD_SIGTTOU;
|
|
|
|
|
|
|
|
case GDB_SIGNAL_IO:
|
|
|
|
return NBSD_SIGIO;
|
|
|
|
|
|
|
|
case GDB_SIGNAL_XCPU:
|
|
|
|
return NBSD_SIGXCPU;
|
|
|
|
|
|
|
|
case GDB_SIGNAL_XFSZ:
|
|
|
|
return NBSD_SIGXFSZ;
|
|
|
|
|
|
|
|
case GDB_SIGNAL_VTALRM:
|
|
|
|
return NBSD_SIGVTALRM;
|
|
|
|
|
|
|
|
case GDB_SIGNAL_PROF:
|
|
|
|
return NBSD_SIGPROF;
|
|
|
|
|
|
|
|
case GDB_SIGNAL_WINCH:
|
|
|
|
return NBSD_SIGWINCH;
|
|
|
|
|
|
|
|
case GDB_SIGNAL_INFO:
|
|
|
|
return NBSD_SIGINFO;
|
|
|
|
|
|
|
|
case GDB_SIGNAL_USR1:
|
|
|
|
return NBSD_SIGUSR1;
|
|
|
|
|
|
|
|
case GDB_SIGNAL_USR2:
|
|
|
|
return NBSD_SIGUSR2;
|
|
|
|
|
|
|
|
case GDB_SIGNAL_PWR:
|
|
|
|
return NBSD_SIGPWR;
|
|
|
|
|
|
|
|
/* GDB_SIGNAL_REALTIME_33 is not continuous in <gdb/signals.def>,
|
|
|
|
therefore we have to handle it here. */
|
|
|
|
case GDB_SIGNAL_REALTIME_33:
|
|
|
|
return NBSD_SIGRTMIN;
|
|
|
|
|
|
|
|
/* Same comment applies to _64. */
|
|
|
|
case GDB_SIGNAL_REALTIME_63:
|
|
|
|
return NBSD_SIGRTMAX;
|
|
|
|
}
|
|
|
|
|
|
|
|
if (signal >= GDB_SIGNAL_REALTIME_34
|
|
|
|
&& signal <= GDB_SIGNAL_REALTIME_62)
|
|
|
|
{
|
|
|
|
int offset = signal - GDB_SIGNAL_REALTIME_32;
|
|
|
|
|
|
|
|
return NBSD_SIGRTMIN + 1 + offset;
|
|
|
|
}
|
|
|
|
|
|
|
|
return -1;
|
|
|
|
}
|
|
|
|
|
2020-04-07 02:08:46 +08:00
|
|
|
/* Shared library resolver handling. */
|
|
|
|
|
|
|
|
static CORE_ADDR
|
|
|
|
nbsd_skip_solib_resolver (struct gdbarch *gdbarch, CORE_ADDR pc)
|
|
|
|
{
|
|
|
|
struct bound_minimal_symbol msym;
|
|
|
|
|
|
|
|
msym = lookup_minimal_symbol ("_rtld_bind_start", NULL, NULL);
|
2022-01-28 21:09:50 +08:00
|
|
|
if (msym.minsym && msym.value_address () == pc)
|
2020-04-07 02:08:46 +08:00
|
|
|
return frame_unwind_caller_pc (get_current_frame ());
|
|
|
|
else
|
|
|
|
return find_solib_trampoline_target (get_current_frame (), pc);
|
|
|
|
}
|
|
|
|
|
2020-07-26 20:10:56 +08:00
|
|
|
struct nbsd_gdbarch_data
|
|
|
|
{
|
2022-06-02 05:31:15 +08:00
|
|
|
struct type *siginfo_type = nullptr;
|
2020-07-26 20:10:56 +08:00
|
|
|
};
|
|
|
|
|
2022-06-02 05:31:15 +08:00
|
|
|
static const registry<gdbarch>::key<nbsd_gdbarch_data>
|
|
|
|
nbsd_gdbarch_data_handle;
|
2020-07-26 20:10:56 +08:00
|
|
|
|
|
|
|
static struct nbsd_gdbarch_data *
|
|
|
|
get_nbsd_gdbarch_data (struct gdbarch *gdbarch)
|
|
|
|
{
|
2022-06-02 05:31:15 +08:00
|
|
|
struct nbsd_gdbarch_data *result = nbsd_gdbarch_data_handle.get (gdbarch);
|
|
|
|
if (result == nullptr)
|
|
|
|
result = nbsd_gdbarch_data_handle.emplace (gdbarch);
|
|
|
|
return result;
|
2020-07-26 20:10:56 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
/* Implement the "get_siginfo_type" gdbarch method. */
|
|
|
|
|
|
|
|
static struct type *
|
|
|
|
nbsd_get_siginfo_type (struct gdbarch *gdbarch)
|
|
|
|
{
|
|
|
|
nbsd_gdbarch_data *nbsd_gdbarch_data = get_nbsd_gdbarch_data (gdbarch);
|
|
|
|
if (nbsd_gdbarch_data->siginfo_type != NULL)
|
|
|
|
return nbsd_gdbarch_data->siginfo_type;
|
|
|
|
|
|
|
|
type *char_type = builtin_type (gdbarch)->builtin_char;
|
|
|
|
type *int_type = builtin_type (gdbarch)->builtin_int;
|
|
|
|
type *long_type = builtin_type (gdbarch)->builtin_long;
|
|
|
|
|
|
|
|
type *void_ptr_type
|
|
|
|
= lookup_pointer_type (builtin_type (gdbarch)->builtin_void);
|
|
|
|
|
|
|
|
type *int32_type = builtin_type (gdbarch)->builtin_int32;
|
|
|
|
type *uint32_type = builtin_type (gdbarch)->builtin_uint32;
|
|
|
|
type *uint64_type = builtin_type (gdbarch)->builtin_uint64;
|
|
|
|
|
2022-09-21 23:05:21 +08:00
|
|
|
bool lp64 = void_ptr_type->length () == 8;
|
2020-07-26 20:10:56 +08:00
|
|
|
size_t char_bits = gdbarch_addressable_memory_unit_size (gdbarch) * 8;
|
|
|
|
|
|
|
|
/* pid_t */
|
|
|
|
type *pid_type = arch_type (gdbarch, TYPE_CODE_TYPEDEF,
|
2022-09-21 23:05:21 +08:00
|
|
|
int32_type->length () * char_bits, "pid_t");
|
2022-07-31 00:07:39 +08:00
|
|
|
pid_type->set_target_type (int32_type);
|
2020-07-26 20:10:56 +08:00
|
|
|
|
|
|
|
/* uid_t */
|
|
|
|
type *uid_type = arch_type (gdbarch, TYPE_CODE_TYPEDEF,
|
2022-09-21 23:05:21 +08:00
|
|
|
uint32_type->length () * char_bits, "uid_t");
|
2022-07-31 00:07:39 +08:00
|
|
|
uid_type->set_target_type (uint32_type);
|
2020-07-26 20:10:56 +08:00
|
|
|
|
|
|
|
/* clock_t */
|
|
|
|
type *clock_type = arch_type (gdbarch, TYPE_CODE_TYPEDEF,
|
2022-09-21 23:05:21 +08:00
|
|
|
int_type->length () * char_bits, "clock_t");
|
2022-07-31 00:07:39 +08:00
|
|
|
clock_type->set_target_type (int_type);
|
2020-07-26 20:10:56 +08:00
|
|
|
|
|
|
|
/* lwpid_t */
|
|
|
|
type *lwpid_type = arch_type (gdbarch, TYPE_CODE_TYPEDEF,
|
2022-09-21 23:05:21 +08:00
|
|
|
int32_type->length () * char_bits,
|
2020-07-26 20:10:56 +08:00
|
|
|
"lwpid_t");
|
2022-07-31 00:07:39 +08:00
|
|
|
lwpid_type->set_target_type (int32_type);
|
2020-07-26 20:10:56 +08:00
|
|
|
|
|
|
|
/* union sigval */
|
|
|
|
type *sigval_type = arch_composite_type (gdbarch, NULL, TYPE_CODE_UNION);
|
|
|
|
sigval_type->set_name (gdbarch_obstack_strdup (gdbarch, "sigval"));
|
|
|
|
append_composite_type_field (sigval_type, "sival_int", int_type);
|
|
|
|
append_composite_type_field (sigval_type, "sival_ptr", void_ptr_type);
|
|
|
|
|
|
|
|
/* union _option */
|
|
|
|
type *option_type = arch_composite_type (gdbarch, NULL, TYPE_CODE_UNION);
|
|
|
|
option_type->set_name (gdbarch_obstack_strdup (gdbarch, "_option"));
|
|
|
|
append_composite_type_field (option_type, "_pe_other_pid", pid_type);
|
|
|
|
append_composite_type_field (option_type, "_pe_lwp", lwpid_type);
|
|
|
|
|
|
|
|
/* union _reason */
|
|
|
|
type *reason_type = arch_composite_type (gdbarch, NULL, TYPE_CODE_UNION);
|
|
|
|
|
|
|
|
/* _rt */
|
|
|
|
type *t = arch_composite_type (gdbarch, NULL, TYPE_CODE_STRUCT);
|
|
|
|
append_composite_type_field (t, "_pid", pid_type);
|
|
|
|
append_composite_type_field (t, "_uid", uid_type);
|
|
|
|
append_composite_type_field (t, "_value", sigval_type);
|
|
|
|
append_composite_type_field (reason_type, "_rt", t);
|
|
|
|
|
|
|
|
/* _child */
|
|
|
|
t = arch_composite_type (gdbarch, NULL, TYPE_CODE_STRUCT);
|
|
|
|
append_composite_type_field (t, "_pid", pid_type);
|
|
|
|
append_composite_type_field (t, "_uid", uid_type);
|
|
|
|
append_composite_type_field (t, "_status", int_type);
|
|
|
|
append_composite_type_field (t, "_utime", clock_type);
|
|
|
|
append_composite_type_field (t, "_stime", clock_type);
|
|
|
|
append_composite_type_field (reason_type, "_child", t);
|
|
|
|
|
|
|
|
/* _fault */
|
|
|
|
t = arch_composite_type (gdbarch, NULL, TYPE_CODE_STRUCT);
|
|
|
|
append_composite_type_field (t, "_addr", void_ptr_type);
|
|
|
|
append_composite_type_field (t, "_trap", int_type);
|
|
|
|
append_composite_type_field (t, "_trap2", int_type);
|
|
|
|
append_composite_type_field (t, "_trap3", int_type);
|
|
|
|
append_composite_type_field (reason_type, "_fault", t);
|
|
|
|
|
|
|
|
/* _poll */
|
|
|
|
t = arch_composite_type (gdbarch, NULL, TYPE_CODE_STRUCT);
|
|
|
|
append_composite_type_field (t, "_band", long_type);
|
|
|
|
append_composite_type_field (t, "_fd", int_type);
|
|
|
|
append_composite_type_field (reason_type, "_poll", t);
|
|
|
|
|
|
|
|
/* _syscall */
|
|
|
|
t = arch_composite_type (gdbarch, NULL, TYPE_CODE_STRUCT);
|
|
|
|
append_composite_type_field (t, "_sysnum", int_type);
|
|
|
|
append_composite_type_field (t, "_retval",
|
|
|
|
init_vector_type (int_type, 2));
|
|
|
|
append_composite_type_field (t, "_error", int_type);
|
|
|
|
append_composite_type_field (t, "_args",
|
|
|
|
init_vector_type (uint64_type, 8));
|
|
|
|
append_composite_type_field (reason_type, "_syscall", t);
|
|
|
|
|
|
|
|
/* _ptrace_state */
|
|
|
|
t = arch_composite_type (gdbarch, NULL, TYPE_CODE_STRUCT);
|
|
|
|
append_composite_type_field (t, "_pe_report_event", int_type);
|
|
|
|
append_composite_type_field (t, "_option", option_type);
|
|
|
|
append_composite_type_field (reason_type, "_ptrace_state", t);
|
|
|
|
|
|
|
|
/* struct _ksiginfo */
|
|
|
|
type *ksiginfo_type = arch_composite_type (gdbarch, NULL, TYPE_CODE_STRUCT);
|
|
|
|
ksiginfo_type->set_name (gdbarch_obstack_strdup (gdbarch, "_ksiginfo"));
|
|
|
|
append_composite_type_field (ksiginfo_type, "_signo", int_type);
|
|
|
|
append_composite_type_field (ksiginfo_type, "_code", int_type);
|
|
|
|
append_composite_type_field (ksiginfo_type, "_errno", int_type);
|
|
|
|
if (lp64)
|
|
|
|
append_composite_type_field (ksiginfo_type, "_pad", int_type);
|
|
|
|
append_composite_type_field (ksiginfo_type, "_reason", reason_type);
|
|
|
|
|
|
|
|
/* union siginfo */
|
|
|
|
type *siginfo_type = arch_composite_type (gdbarch, NULL, TYPE_CODE_UNION);
|
|
|
|
siginfo_type->set_name (gdbarch_obstack_strdup (gdbarch, "siginfo"));
|
|
|
|
append_composite_type_field (siginfo_type, "si_pad",
|
|
|
|
init_vector_type (char_type, 128));
|
|
|
|
append_composite_type_field (siginfo_type, "_info", ksiginfo_type);
|
|
|
|
|
|
|
|
nbsd_gdbarch_data->siginfo_type = siginfo_type;
|
|
|
|
|
|
|
|
return siginfo_type;
|
|
|
|
}
|
|
|
|
|
2021-07-06 21:40:44 +08:00
|
|
|
/* See netbsd-tdep.h. */
|
2020-03-17 02:02:22 +08:00
|
|
|
|
2020-04-12 08:00:14 +08:00
|
|
|
void
|
|
|
|
nbsd_info_proc_mappings_header (int addr_bit)
|
|
|
|
{
|
2022-01-03 02:46:15 +08:00
|
|
|
gdb_printf (_("Mapped address spaces:\n\n"));
|
2020-04-12 08:00:14 +08:00
|
|
|
if (addr_bit == 64)
|
|
|
|
{
|
2022-01-03 02:46:15 +08:00
|
|
|
gdb_printf (" %18s %18s %10s %10s %9s %s\n",
|
|
|
|
"Start Addr",
|
|
|
|
" End Addr",
|
|
|
|
" Size", " Offset", "Flags ", "File");
|
2020-04-12 08:00:14 +08:00
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
2022-01-03 02:46:15 +08:00
|
|
|
gdb_printf ("\t%10s %10s %10s %10s %9s %s\n",
|
|
|
|
"Start Addr",
|
|
|
|
" End Addr",
|
|
|
|
" Size", " Offset", "Flags ", "File");
|
2020-04-12 08:00:14 +08:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
/* Helper function to generate mappings flags for a single VM map
|
|
|
|
entry in 'info proc mappings'. */
|
|
|
|
|
|
|
|
static const char *
|
|
|
|
nbsd_vm_map_entry_flags (int kve_flags, int kve_protection)
|
|
|
|
{
|
|
|
|
static char vm_flags[9];
|
|
|
|
|
|
|
|
vm_flags[0] = (kve_protection & KINFO_VME_PROT_READ) ? 'r' : '-';
|
|
|
|
vm_flags[1] = (kve_protection & KINFO_VME_PROT_WRITE) ? 'w' : '-';
|
|
|
|
vm_flags[2] = (kve_protection & KINFO_VME_PROT_EXEC) ? 'x' : '-';
|
|
|
|
vm_flags[3] = ' ';
|
|
|
|
vm_flags[4] = (kve_flags & KINFO_VME_FLAG_COW) ? 'C' : '-';
|
|
|
|
vm_flags[5] = (kve_flags & KINFO_VME_FLAG_NEEDS_COPY) ? 'N' : '-';
|
|
|
|
vm_flags[6] = (kve_flags & KINFO_VME_FLAG_PAGEABLE) ? 'P' : '-';
|
|
|
|
vm_flags[7] = (kve_flags & KINFO_VME_FLAG_GROWS_UP) ? 'U'
|
|
|
|
: (kve_flags & KINFO_VME_FLAG_GROWS_DOWN) ? 'D' : '-';
|
|
|
|
vm_flags[8] = '\0';
|
|
|
|
|
|
|
|
return vm_flags;
|
|
|
|
}
|
|
|
|
|
|
|
|
void
|
|
|
|
nbsd_info_proc_mappings_entry (int addr_bit, ULONGEST kve_start,
|
|
|
|
ULONGEST kve_end, ULONGEST kve_offset,
|
|
|
|
int kve_flags, int kve_protection,
|
|
|
|
const char *kve_path)
|
|
|
|
{
|
|
|
|
if (addr_bit == 64)
|
|
|
|
{
|
2022-01-03 02:46:15 +08:00
|
|
|
gdb_printf (" %18s %18s %10s %10s %9s %s\n",
|
|
|
|
hex_string (kve_start),
|
|
|
|
hex_string (kve_end),
|
|
|
|
hex_string (kve_end - kve_start),
|
|
|
|
hex_string (kve_offset),
|
|
|
|
nbsd_vm_map_entry_flags (kve_flags, kve_protection),
|
|
|
|
kve_path);
|
2020-04-12 08:00:14 +08:00
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
2022-01-03 02:46:15 +08:00
|
|
|
gdb_printf ("\t%10s %10s %10s %10s %9s %s\n",
|
|
|
|
hex_string (kve_start),
|
|
|
|
hex_string (kve_end),
|
|
|
|
hex_string (kve_end - kve_start),
|
|
|
|
hex_string (kve_offset),
|
|
|
|
nbsd_vm_map_entry_flags (kve_flags, kve_protection),
|
|
|
|
kve_path);
|
2020-04-12 08:00:14 +08:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2020-04-29 07:57:38 +08:00
|
|
|
/* Implement the "get_syscall_number" gdbarch method. */
|
|
|
|
|
|
|
|
static LONGEST
|
|
|
|
nbsd_get_syscall_number (struct gdbarch *gdbarch, thread_info *thread)
|
|
|
|
{
|
|
|
|
|
|
|
|
/* NetBSD doesn't use gdbarch_get_syscall_number since NetBSD
|
|
|
|
native targets fetch the system call number from the
|
|
|
|
'si_sysnum' member of siginfo_t in nbsd_nat_target::wait.
|
|
|
|
However, system call catching requires this function to be
|
|
|
|
set. */
|
|
|
|
|
internal_error: remove need to pass __FILE__/__LINE__
Currently, every internal_error call must be passed __FILE__/__LINE__
explicitly, like:
internal_error (__FILE__, __LINE__, "foo %d", var);
The need to pass in explicit __FILE__/__LINE__ is there probably
because the function predates widespread and portable variadic macros
availability. We can use variadic macros nowadays, and in fact, we
already use them in several places, including the related
gdb_assert_not_reached.
So this patch renames the internal_error function to something else,
and then reimplements internal_error as a variadic macro that expands
__FILE__/__LINE__ itself.
The result is that we now should call internal_error like so:
internal_error ("foo %d", var);
Likewise for internal_warning.
The patch adjusts all calls sites. 99% of the adjustments were done
with a perl/sed script.
The non-mechanical changes are in gdbsupport/errors.h,
gdbsupport/gdb_assert.h, and gdb/gdbarch.py.
Approved-By: Simon Marchi <simon.marchi@efficios.com>
Change-Id: Ia6f372c11550ca876829e8fd85048f4502bdcf06
2022-10-18 00:12:20 +08:00
|
|
|
internal_error (_("nbsd_get_sycall_number called"));
|
2020-04-29 07:57:38 +08:00
|
|
|
}
|
|
|
|
|
2021-07-06 21:40:44 +08:00
|
|
|
/* See netbsd-tdep.h. */
|
2020-04-12 08:00:14 +08:00
|
|
|
|
2020-03-17 02:02:22 +08:00
|
|
|
void
|
|
|
|
nbsd_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch)
|
|
|
|
{
|
|
|
|
set_gdbarch_gdb_signal_from_target (gdbarch, nbsd_gdb_signal_from_target);
|
|
|
|
set_gdbarch_gdb_signal_to_target (gdbarch, nbsd_gdb_signal_to_target);
|
2020-04-07 02:08:46 +08:00
|
|
|
set_gdbarch_skip_solib_resolver (gdbarch, nbsd_skip_solib_resolver);
|
2020-04-08 10:01:10 +08:00
|
|
|
set_gdbarch_auxv_parse (gdbarch, svr4_auxv_parse);
|
2020-07-26 20:10:56 +08:00
|
|
|
set_gdbarch_get_siginfo_type (gdbarch, nbsd_get_siginfo_type);
|
2020-04-29 07:57:38 +08:00
|
|
|
|
|
|
|
/* `catch syscall' */
|
2020-04-29 21:33:33 +08:00
|
|
|
set_xml_syscall_file_name (gdbarch, "syscalls/netbsd.xml");
|
2020-04-29 07:57:38 +08:00
|
|
|
set_gdbarch_get_syscall_number (gdbarch, nbsd_get_syscall_number);
|
2020-03-17 02:02:22 +08:00
|
|
|
}
|