gdb: unify parts of the Linux and FreeBSD core dumping code
[binutils-gdb.git] / gdb / gcore.h
1 /* Support for reading/writing gcore files.
2
3 Copyright (C) 2009-2021 Free Software Foundation, Inc.
4
5 This file is part of GDB.
6
7 This program is free software; you can redistribute it and/or modify
8 it under the terms of the GNU General Public License as published by
9 the Free Software Foundation; either version 3 of the License, or
10 (at your option) any later version.
11
12 This program is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 GNU General Public License for more details.
16
17 You should have received a copy of the GNU General Public License
18 along with this program. If not, see <http://www.gnu.org/licenses/>. */
19
20 #if !defined (GCORE_H)
21 #define GCORE_H 1
22
23 #include "gdb_bfd.h"
24 #include "gdbsupport/gdb_signals.h"
25
26 struct gdbarch;
27 struct thread_info;
28
29 extern gdb_bfd_ref_ptr create_gcore_bfd (const char *filename);
30 extern void write_gcore_file (bfd *obfd);
31 extern int objfile_find_memory_regions (struct target_ops *self,
32 find_memory_region_ftype func,
33 void *obfd);
34
35 /* Add content to *NOTE_DATA (and update *NOTE_SIZE) to describe the
36 registers of thread INFO. Report the thread as having stopped with
37 STOP_SIGNAL. The core file is being written to OFD, and GDBARCH is the
38 architecture for which the core file is being generated. */
39
40 extern void gcore_build_thread_register_notes
41 (struct gdbarch *gdbarch, struct thread_info *info, gdb_signal stop_signal,
42 bfd *obfd, gdb::unique_xmalloc_ptr<char> *note_data, int *note_size);
43
44 /* Find the signalled thread. In case there's more than one signalled
45 thread, prefer the current thread, if it is signalled. If no thread was
46 signalled, default to the current thread, unless it has exited, in which
47 case return NULL. */
48
49 extern thread_info *gcore_find_signalled_thread ();
50
51 #endif /* GCORE_H */