xref: /dflybsd-src/contrib/binutils-2.34/binutils/binemul.h (revision b52ef7118d1621abed722c5bbbd542210290ecef)
1*fae548d3Szrj /* Binutils emulation layer.
2*fae548d3Szrj    Copyright (C) 2002-2020 Free Software Foundation, Inc.
3*fae548d3Szrj    Written by Tom Rix, Red Hat Inc.
4*fae548d3Szrj 
5*fae548d3Szrj    This file is part of GNU Binutils.
6*fae548d3Szrj 
7*fae548d3Szrj    This program is free software; you can redistribute it and/or modify
8*fae548d3Szrj    it under the terms of the GNU General Public License as published by
9*fae548d3Szrj    the Free Software Foundation; either version 3 of the License, or
10*fae548d3Szrj    (at your option) any later version.
11*fae548d3Szrj 
12*fae548d3Szrj    This program is distributed in the hope that it will be useful,
13*fae548d3Szrj    but WITHOUT ANY WARRANTY; without even the implied warranty of
14*fae548d3Szrj    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15*fae548d3Szrj    GNU General Public License for more details.
16*fae548d3Szrj 
17*fae548d3Szrj    You should have received a copy of the GNU General Public License
18*fae548d3Szrj    along with this program; if not, write to the Free Software
19*fae548d3Szrj    Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
20*fae548d3Szrj    MA 02110-1301, USA.  */
21*fae548d3Szrj 
22*fae548d3Szrj #ifndef BINEMUL_H
23*fae548d3Szrj #define BINEMUL_H
24*fae548d3Szrj 
25*fae548d3Szrj #include "sysdep.h"
26*fae548d3Szrj #include "bfd.h"
27*fae548d3Szrj #include "bucomm.h"
28*fae548d3Szrj 
29*fae548d3Szrj extern void ar_emul_usage (FILE *);
30*fae548d3Szrj extern void ar_emul_default_usage (FILE *);
31*fae548d3Szrj extern bfd_boolean ar_emul_append (bfd **, char *, const char *,
32*fae548d3Szrj 				   bfd_boolean, bfd_boolean);
33*fae548d3Szrj extern bfd_boolean ar_emul_default_append (bfd **, char *, const char *,
34*fae548d3Szrj 					   bfd_boolean, bfd_boolean);
35*fae548d3Szrj extern bfd_boolean do_ar_emul_append (bfd **, bfd *,
36*fae548d3Szrj 				      bfd_boolean, bfd_boolean,
37*fae548d3Szrj 				      bfd_boolean (*)(bfd *));
38*fae548d3Szrj extern bfd_boolean ar_emul_replace (bfd **, char *, const char *,
39*fae548d3Szrj 				    bfd_boolean);
40*fae548d3Szrj extern bfd_boolean ar_emul_default_replace (bfd **, char *,
41*fae548d3Szrj 					    const char *, bfd_boolean);
42*fae548d3Szrj extern bfd_boolean ar_emul_parse_arg (char *);
43*fae548d3Szrj extern bfd_boolean ar_emul_default_parse_arg (char *);
44*fae548d3Szrj 
45*fae548d3Szrj /* Macros for common output.  */
46*fae548d3Szrj 
47*fae548d3Szrj #define AR_EMUL_USAGE_PRINT_OPTION_HEADER(fp) \
48*fae548d3Szrj   /* xgettext:c-format */                     \
49*fae548d3Szrj   fprintf (fp, _(" emulation options: \n"))
50*fae548d3Szrj 
51*fae548d3Szrj #define AR_EMUL_ELEMENT_CHECK(abfd, file_name) \
52*fae548d3Szrj   do { if ((abfd) == NULL) bfd_fatal (file_name); } while (0)
53*fae548d3Szrj 
54*fae548d3Szrj #define AR_EMUL_APPEND_PRINT_VERBOSE(verbose, file_name) \
55*fae548d3Szrj   do { if (verbose) printf ("a - %s\n", file_name); } while (0)
56*fae548d3Szrj 
57*fae548d3Szrj #define AR_EMUL_REPLACE_PRINT_VERBOSE(verbose, file_name) \
58*fae548d3Szrj   do { if (verbose) printf ("r - %s\n", file_name); } while (0)
59*fae548d3Szrj 
60*fae548d3Szrj typedef struct bin_emulation_xfer_struct
61*fae548d3Szrj {
62*fae548d3Szrj   /* Print out the extra options.  */
63*fae548d3Szrj   void (* ar_usage) (FILE *fp);
64*fae548d3Szrj   bfd_boolean (* ar_append) (bfd **, char *, const char *, bfd_boolean,
65*fae548d3Szrj 			     bfd_boolean);
66*fae548d3Szrj   bfd_boolean (* ar_replace) (bfd **, char *, const char *, bfd_boolean);
67*fae548d3Szrj   bfd_boolean (* ar_parse_arg) (char *);
68*fae548d3Szrj }
69*fae548d3Szrj bin_emulation_xfer_type;
70*fae548d3Szrj 
71*fae548d3Szrj #endif
72