ld: elfvers tests: support symbol prefixed targets
[deliverable/binutils-gdb.git] / binutils / binemul.c
CommitLineData
eb1e0e80 1/* Binutils emulation layer.
aa820537 2 Copyright 2002, 2003, 2005, 2007, 2008 Free Software Foundation, Inc.
ad94be02 3 Written by Tom Rix, Red Hat Inc.
eb1e0e80
NC
4
5 This file is part of GNU Binutils.
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
32866df7 9 the Free Software Foundation; either version 3 of the License, or
eb1e0e80
NC
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, write to the Free Software
32866df7
NC
19 Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
20 MA 02110-1301, USA. */
eb1e0e80
NC
21
22#include "binemul.h"
23
24extern bin_emulation_xfer_type bin_dummy_emulation;
25
26void
2da42df6 27ar_emul_usage (FILE *fp)
eb1e0e80
NC
28{
29 if (bin_dummy_emulation.ar_usage)
30 bin_dummy_emulation.ar_usage (fp);
31}
32
33void
2da42df6 34ar_emul_default_usage (FILE *fp)
eb1e0e80
NC
35{
36 AR_EMUL_USAGE_PRINT_OPTION_HEADER (fp);
37 /* xgettext:c-format */
38 fprintf (fp, _(" No emulation specific options\n"));
39}
40
b34976b6 41bfd_boolean
492d5973
L
42ar_emul_append (bfd **after_bfd, char *file_name, const char *target,
43 bfd_boolean verbose, bfd_boolean flatten)
eb1e0e80
NC
44{
45 if (bin_dummy_emulation.ar_append)
492d5973
L
46 return bin_dummy_emulation.ar_append (after_bfd, file_name, target,
47 verbose, flatten);
eb1e0e80 48
b34976b6 49 return FALSE;
eb1e0e80
NC
50}
51
a8da6403
NC
52static bfd_boolean
53do_ar_emul_default_append (bfd **after_bfd, bfd *new_bfd,
492d5973 54 bfd_boolean verbose, bfd_boolean flatten)
a8da6403
NC
55 {
56 /* When flattening, add the members of an archive instead of the
57 archive itself. */
58 if (flatten && bfd_check_format (new_bfd, bfd_archive))
59 {
60 bfd *elt;
61 bfd_boolean added = FALSE;
62
63 for (elt = bfd_openr_next_archived_file (new_bfd, NULL);
64 elt;
65 elt = bfd_openr_next_archived_file (new_bfd, elt))
66 {
67 if (do_ar_emul_default_append (after_bfd, elt, verbose, TRUE))
68 {
69 added = TRUE;
70 after_bfd = &((*after_bfd)->archive_next);
71 }
72 }
73
74 return added;
75 }
76
77 AR_EMUL_APPEND_PRINT_VERBOSE (verbose, new_bfd->filename);
78
79 new_bfd->archive_next = *after_bfd;
80 *after_bfd = new_bfd;
81
82 return TRUE;
83}
84
b34976b6 85bfd_boolean
2da42df6 86ar_emul_default_append (bfd **after_bfd, char *file_name,
492d5973
L
87 const char *target, bfd_boolean verbose,
88 bfd_boolean flatten)
eb1e0e80 89{
a8da6403 90 bfd *new_bfd;
eb1e0e80 91
492d5973 92 new_bfd = bfd_openr (file_name, target);
a8da6403
NC
93 AR_EMUL_ELEMENT_CHECK (new_bfd, file_name);
94 return do_ar_emul_default_append (after_bfd, new_bfd, verbose, flatten);
eb1e0e80
NC
95}
96
b34976b6 97bfd_boolean
492d5973
L
98ar_emul_replace (bfd **after_bfd, char *file_name, const char *target,
99 bfd_boolean verbose)
eb1e0e80
NC
100{
101 if (bin_dummy_emulation.ar_replace)
492d5973
L
102 return bin_dummy_emulation.ar_replace (after_bfd, file_name,
103 target, verbose);
eb1e0e80 104
b34976b6 105 return FALSE;
eb1e0e80
NC
106}
107
b34976b6 108bfd_boolean
2da42df6 109ar_emul_default_replace (bfd **after_bfd, char *file_name,
492d5973 110 const char *target, bfd_boolean verbose)
eb1e0e80
NC
111{
112 bfd *temp;
113
114 temp = *after_bfd;
492d5973 115 *after_bfd = bfd_openr (file_name, target);
eb1e0e80
NC
116
117 AR_EMUL_ELEMENT_CHECK (*after_bfd, file_name);
118 AR_EMUL_REPLACE_PRINT_VERBOSE (verbose, file_name);
119
cc481421 120 (*after_bfd)->archive_next = temp;
eb1e0e80 121
b34976b6 122 return TRUE;
eb1e0e80
NC
123}
124
b34976b6 125bfd_boolean
2da42df6 126ar_emul_parse_arg (char *arg)
eb1e0e80
NC
127{
128 if (bin_dummy_emulation.ar_parse_arg)
129 return bin_dummy_emulation.ar_parse_arg (arg);
130
b34976b6 131 return FALSE;
eb1e0e80
NC
132}
133
b34976b6 134bfd_boolean
2da42df6 135ar_emul_default_parse_arg (char *arg ATTRIBUTE_UNUSED)
eb1e0e80 136{
b34976b6 137 return FALSE;
eb1e0e80 138}
This page took 0.404506 seconds and 4 git commands to generate.