* gdb_bfd.c (struct gdb_bfd_data): New.
[platform/upstream/binutils.git] / gdb / gdb_bfd.h
1 /* Definitions for BFD wrappers used by GDB.
2
3    Copyright (C) 2011
4    Free Software Foundation, Inc.
5
6    This file is part of GDB.
7
8    This program is free software; you can redistribute it and/or modify
9    it under the terms of the GNU General Public License as published by
10    the Free Software Foundation; either version 3 of the License, or
11    (at your option) any later version.
12
13    This program is distributed in the hope that it will be useful,
14    but WITHOUT ANY WARRANTY; without even the implied warranty of
15    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16    GNU General Public License for more details.
17
18    You should have received a copy of the GNU General Public License
19    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
20
21 #ifndef GDB_BFD_H
22 #define GDB_BFD_H
23
24 /* Make a copy ABFD's filename using bfd_alloc, and reassign it to the
25    BFD.  This ensures that the BFD's filename has the same lifetime as
26    the BFD itself.  */
27
28 void gdb_bfd_stash_filename (struct bfd *abfd);
29
30 /* Open a read-only (FOPEN_RB) BFD given arguments like bfd_fopen.
31    Returns NULL on error.  On success, returns a new reference to the
32    BFD, which must be freed with gdb_bfd_unref.  BFDs returned by this
33    call are shared among all callers opening the same file.  If FD is
34    not -1, then after this call it is owned by BFD.  */
35
36 struct bfd *gdb_bfd_open (const char *name, const char *target, int fd);
37
38 /* Acquire a new reference to ABFD.  Returns ABFD for convenience.
39    It is fine for ABFD to be NULL; in this case the function does
40    nothing and returns NULL.  */
41
42 struct bfd *gdb_bfd_ref (struct bfd *abfd);
43
44 /* Release a reference to ABFD.  If this is the last reference, ABFD
45    will be freed.  If ABFD is NULL, this function does nothing.  */
46
47 void gdb_bfd_unref (struct bfd *abfd);
48
49 #endif /* GDB_BFD_H */