+2018-11-30 John Baldwin <jhb@FreeBSD.org>
+
+ * fbsd-nat.c [__FreeBSD_version >= 700009] (USE_SIGINFO): Macro
+ defined.
+ (union sigval32, struct siginfo32, fbsd_siginfo_size)
+ (fbsd_convert_siginfo): Make conditional on USE_SIGINFO instead
+ of KERN_PROC_AUXV and PT_LWPINFO.
+ (fbsd_nat_target::xfer_partial): Define method unconditionally.
+ Make TARGET_OBJECT_SIGNAL_INFO conditional on USE_SIGINFO.
+ Make TARGET_OBJECT_AUXV conditional on KERN_PROC_AUXV.
+ Make TARGET_OBJECT_FREEBSD_VMMAP and
+ TARGET_OBJECT_FREEBSD_PS_STRINGS conditional on KERN_PROC_VMMAP
+ and KERN_PROC_PS_STRINGS.
+ * fbsd-nat.h: Include <sys/proc.h>.
+ (fbsd_nat_target::xfer_partial): Declare method unconditionally.
+
2018-11-30 Andrew Burgess <andrew.burgess@embecosm.com>
* riscv-linux-nat.c: Add 'inferior.h' and 'target-descriptions.h'
return true;
}
-#ifdef KERN_PROC_AUXV
+/*
+ * The current layout of siginfo_t on FreeBSD was adopted in SVN
+ * revision 153154 which shipped in FreeBSD versions 7.0 and later.
+ * Don't bother supporting the older layout on older kernels. The
+ * older format was also never used in core dump notes.
+ */
+#if __FreeBSD_version >= 700009
+#define USE_SIGINFO
+#endif
-#ifdef PT_LWPINFO
+#ifdef USE_SIGINFO
/* Return the size of siginfo for the current inferior. */
#ifdef __LP64__
switch (object)
{
-#ifdef PT_LWPINFO
+#ifdef USE_SIGINFO
case TARGET_OBJECT_SIGNAL_INFO:
{
struct ptrace_lwpinfo pl;
return TARGET_XFER_OK;
}
#endif
+#ifdef KERN_PROC_AUXV
case TARGET_OBJECT_AUXV:
{
gdb::byte_vector buf_storage;
}
return TARGET_XFER_E_IO;
}
+#endif
+#if defined(KERN_PROC_VMMAP) && defined(KERN_PROC_PS_STRINGS)
case TARGET_OBJECT_FREEBSD_VMMAP:
case TARGET_OBJECT_FREEBSD_PS_STRINGS:
{
*xfered_len = len;
return TARGET_XFER_OK;
}
+#endif
default:
return inf_ptrace_target::xfer_partial (object, annex,
readbuf, writebuf, offset,
len, xfered_len);
}
}
-#endif
#ifdef PT_LWPINFO
static int debug_fbsd_lwp;
#define FBSD_NAT_H
#include "inf-ptrace.h"
+#include <sys/proc.h>
#ifdef TRAP_BRKPT
/* MIPS does not set si_code for SIGTRAP. sparc64 reports
bool info_proc (const char *, enum info_proc_what) override;
-#ifdef KERN_PROC_AUXV
enum target_xfer_status xfer_partial (enum target_object object,
const char *annex,
gdb_byte *readbuf,
const gdb_byte *writebuf,
ULONGEST offset, ULONGEST len,
ULONGEST *xfered_len) override;
-#endif
#ifdef PT_LWPINFO
bool thread_alive (ptid_t ptid) override;