1 /* Definitions for BFD wrappers used by GDB.
4 Free Software Foundation, Inc.
6 This file is part of GDB.
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.
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.
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/>. */
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
28 void gdb_bfd_stash_filename (struct bfd *abfd);
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. */
36 struct bfd *gdb_bfd_open (const char *name, const char *target, int fd);
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. */
42 struct bfd *gdb_bfd_ref (struct bfd *abfd);
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. */
47 void gdb_bfd_unref (struct bfd *abfd);
49 #endif /* GDB_BFD_H */