binutils-gdb/gdb/nbsd-tdep.h
Kamil Rytarowski 54b8cbd0e4 Implement "info proc mappings" for NetBSD
Define nbsd_nat_target::find_memory_regions and
nbsd_nat_target::info_proc. info_proc handles as of now only
the "mappings" command.

Define a local static function kinfo_get_vmmap() that reads
the process memory layout of a specified process.
kinfo_get_vmmap() wraps the sysctl(3) call.

nbsd-tdep.c defines now utility functions for printing the
process memory layout:
 * nbsd_info_proc_mappings_header()
 * nbsd_vm_map_entry_flags()
 * nbsd_info_proc_mappings_entry()

gdb/ChangeLog:

	* nbsd-nat.c; Include "nbsd-tdep.h" and "gdbarch.h".
	* nbsd-nat.c (nbsd_nat_target::find_memory_regions)
	(nbsd_nat_target::info_proc): New functions.
	* nbsd-nat.c (kinfo_get_vmmap): New function.
	* nbsd-nat.c (nbsd_nat_target::info_proc) Use
	nbsd_info_proc_mappings_header and nbsd_info_proc_mappings_entry.
	* nbsd-tdep.c (nbsd_info_proc_mappings_header)
	(nbsd_info_proc_mappings_entry, nbsd_vm_map_entry_flags): New
	functions.
	* nbsd-tdep.c (KINFO_VME_PROT_READ, KINFO_VME_PROT_WRITE)
	(KINFO_VME_PROT_EXEC, KINFO_VME_FLAG_COW)
	(KINFO_VME_FLAG_NEEDS_COPY, KINFO_VME_FLAG_NOCOREDUMP)
	(KINFO_VME_FLAG_PAGEABLE, KINFO_VME_FLAG_GROWS_UP)
	(KINFO_VME_FLAG_GROWS_DOWN): New.
2020-04-12 13:06:08 +02:00

51 lines
2.0 KiB
C

/* Common target-dependent definitions for NetBSD systems.
Copyright (C) 2002-2020 Free Software Foundation, Inc.
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
the Free Software Foundation; either version 3 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, see <http://www.gnu.org/licenses/>. */
#ifndef NBSD_TDEP_H
#define NBSD_TDEP_H
struct link_map_offsets *nbsd_ilp32_solib_svr4_fetch_link_map_offsets (void);
struct link_map_offsets *nbsd_lp64_solib_svr4_fetch_link_map_offsets (void);
int nbsd_pc_in_sigtramp (CORE_ADDR, const char *);
/* NetBSD specific set of ABI-related routines. */
void nbsd_init_abi (struct gdbarch_info, struct gdbarch *);
/* Output the header for "info proc mappings". ADDR_BIT is the size
of a virtual address in bits. */
extern void nbsd_info_proc_mappings_header (int addr_bit);
/* Output description of a single memory range for "info proc
mappings". ADDR_BIT is the size of a virtual address in bits. The
KVE_START, KVE_END, KVE_OFFSET, KVE_FLAGS, and KVE_PROTECTION
parameters should contain the value of the corresponding fields in
a 'struct kinfo_vmentry'. The KVE_PATH parameter should contain a
pointer to the 'kve_path' field in a 'struct kinfo_vmentry'. */
extern 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);
#endif /* NBSD_TDEP_H */