From a6e6223e9a2f6ca77e064fbe8b326ac7fa205872 Mon Sep 17 00:00:00 2001 From: Kamil Rytarowski Date: Thu, 13 Aug 2020 19:29:13 +0200 Subject: [PATCH] gdb: Implement native dumpcore function for NetBSD Define supports_dumpcore and dumpcore for NetBSD, that wraps the ptrace(2) call with the PT_DUMPCORE operation. gdb/ChangeLog: * nbsd-nat.h (nbsd_nat_target::supports_dumpcore) (nbsd_nat_target::dumpcore): New declarations. * nbsd-nat.c (nbsd_nat_target::supports_dumpcore) (nbsd_nat_target::dumpcore): New functions. --- gdb/nbsd-nat.c | 20 ++++++++++++++++++++ gdb/nbsd-nat.h | 2 ++ 2 files changed, 22 insertions(+) diff --git a/gdb/nbsd-nat.c b/gdb/nbsd-nat.c index 5b59f2130d7..52c4d185695 100644 --- a/gdb/nbsd-nat.c +++ b/gdb/nbsd-nat.c @@ -890,3 +890,23 @@ nbsd_nat_target::xfer_partial (enum target_object object, len, xfered_len); } } + +/* Implement the "supports_dumpcore" target_ops method. */ + +bool +nbsd_nat_target::supports_dumpcore () +{ + return true; +} + +/* Implement the "dumpcore" target_ops method. */ + +void +nbsd_nat_target::dumpcore (const char *filename) +{ + pid_t pid = inferior_ptid.pid (); + + if (ptrace (PT_DUMPCORE, pid, const_cast(filename), + strlen (filename)) == -1) + perror_with_name (("ptrace")); +} diff --git a/gdb/nbsd-nat.h b/gdb/nbsd-nat.h index 665a71a0f78..b09d5b1e3bb 100644 --- a/gdb/nbsd-nat.h +++ b/gdb/nbsd-nat.h @@ -55,6 +55,8 @@ struct nbsd_nat_target : public inf_ptrace_target const gdb_byte *writebuf, ULONGEST offset, ULONGEST len, ULONGEST *xfered_len) override; + bool supports_dumpcore () override; + void dumpcore (const char *filename) override; }; #endif /* nbsd-nat.h */ -- 2.30.2