summaryrefslogtreecommitdiff
path: root/binutils/ar.c
diff options
context:
space:
mode:
authorAlan Modra <amodra@bigpond.net.au>2010-12-08 05:00:14 +0000
committerAlan Modra <amodra@bigpond.net.au>2010-12-08 05:00:14 +0000
commit35472750ad64af3b160247805b4caf7e9712de72 (patch)
treeb3bf65de405613f8e8daf6385b7e2956e3c1faac /binutils/ar.c
parent72a25eba38bda773604aa01ba40b5253761a47a4 (diff)
downloadbinutils-redhat-35472750ad64af3b160247805b4caf7e9712de72.tar.gz
* ar.c (long_options): Add target.
(decode_options): Handle the --target option. (open_inarch): Check for plugin's target, default to --target (replace_members): Use generic `target'.
Diffstat (limited to 'binutils/ar.c')
-rw-r--r--binutils/ar.c15
1 files changed, 11 insertions, 4 deletions
diff --git a/binutils/ar.c b/binutils/ar.c
index de2f631a39..a5ae4f001a 100644
--- a/binutils/ar.c
+++ b/binutils/ar.c
@@ -143,12 +143,16 @@ static int show_help = 0;
static const char *plugin_target = NULL;
+static const char *target = NULL;
+
#define OPTION_PLUGIN 201
+#define OPTION_TARGET 202
static struct option long_options[] =
{
{"help", no_argument, &show_help, 1},
{"plugin", required_argument, NULL, OPTION_PLUGIN},
+ {"target", required_argument, NULL, OPTION_TARGET},
{"version", no_argument, &show_version, 1},
{NULL, no_argument, NULL, 0}
};
@@ -529,6 +533,9 @@ decode_options(int argc, char **argv)
xexit (1);
#endif
break;
+ case OPTION_TARGET:
+ target = optarg;
+ break;
case 0: /* A long option that just sets a flag. */
break;
default:
@@ -773,7 +780,6 @@ main (int argc, char **argv)
bfd *
open_inarch (const char *archive_filename, const char *file)
{
- const char *target;
bfd **last_one;
bfd *next_one;
struct stat sbuf;
@@ -782,7 +788,8 @@ open_inarch (const char *archive_filename, const char *file)
bfd_set_error (bfd_error_no_error);
- target = plugin_target;
+ if (target == NULL)
+ target = plugin_target;
if (stat (archive_filename, &sbuf) != 0)
{
@@ -1270,7 +1277,7 @@ replace_members (bfd *arch, char **files_to_move, bfd_boolean quick)
after_bfd = get_pos_bfd (&arch->archive_next, pos_after,
current->filename);
if (ar_emul_replace (after_bfd, *files_to_move,
- plugin_target, verbose))
+ target, verbose))
{
/* Snip out this entry from the chain. */
*current_ptr = (*current_ptr)->archive_next;
@@ -1286,7 +1293,7 @@ replace_members (bfd *arch, char **files_to_move, bfd_boolean quick)
/* Add to the end of the archive. */
after_bfd = get_pos_bfd (&arch->archive_next, pos_end, NULL);
- if (ar_emul_append (after_bfd, *files_to_move, plugin_target,
+ if (ar_emul_append (after_bfd, *files_to_move, target,
verbose, make_thin_archive))
changed = TRUE;