Add an option to the archiver to add a section recording library dependencies.

* ar.c (long_options): Add --record-libdeps.
	(usage): Mention the new option.
	(decode_options): Handle the new option.
	(replace_members): If necessary, create a bfd to hold the libdeps
	description.
	* binemul.c (ar_emul_append_bfd): New function.
	(ar_emul_replace_bfd): New function.
	(ar_emul_default_append): Replace file_name and target arguments
	with new_bfd argument.
	(ar_emul_default_replace): Likewise.
	* binemul.h: Update prototypes.
	(struct bin_emulation_xfer_struct): Update fields.
	* doc/binutils.texi: Document the new option.
	* NEWS: Mention the new feature.
	* emul_aix.c (ar_emul_aix_append): Update.
	(ar_emul_aix_replace): Likewise.
	* testsuite/binutils-all/ar.exp: Add test of new feature.
This commit is contained in:
Howard Chu
2020-11-03 15:12:47 +00:00
committed by Nick Clifton
parent fd65497db4
commit f3016d6ce1
8 changed files with 214 additions and 49 deletions

View File

@@ -30,15 +30,19 @@ extern void ar_emul_usage (FILE *);
extern void ar_emul_default_usage (FILE *);
extern bfd_boolean ar_emul_append (bfd **, char *, const char *,
bfd_boolean, bfd_boolean);
extern bfd_boolean ar_emul_default_append (bfd **, char *, const char *,
extern bfd_boolean ar_emul_append_bfd (bfd **, bfd *,
bfd_boolean, bfd_boolean);
extern bfd_boolean ar_emul_default_append (bfd **, bfd *,
bfd_boolean, bfd_boolean);
extern bfd_boolean do_ar_emul_append (bfd **, bfd *,
bfd_boolean, bfd_boolean,
bfd_boolean (*)(bfd *));
extern bfd_boolean ar_emul_replace (bfd **, char *, const char *,
bfd_boolean);
extern bfd_boolean ar_emul_default_replace (bfd **, char *,
const char *, bfd_boolean);
extern bfd_boolean ar_emul_replace_bfd (bfd **, bfd *,
bfd_boolean);
extern bfd_boolean ar_emul_default_replace (bfd **, bfd *,
bfd_boolean);
extern bfd_boolean ar_emul_parse_arg (char *);
extern bfd_boolean ar_emul_default_parse_arg (char *);
@@ -61,9 +65,8 @@ typedef struct bin_emulation_xfer_struct
{
/* Print out the extra options. */
void (* ar_usage) (FILE *fp);
bfd_boolean (* ar_append) (bfd **, char *, const char *, bfd_boolean,
bfd_boolean);
bfd_boolean (* ar_replace) (bfd **, char *, const char *, bfd_boolean);
bfd_boolean (* ar_append) (bfd **, bfd *, bfd_boolean, bfd_boolean);
bfd_boolean (* ar_replace) (bfd **, bfd *, bfd_boolean);
bfd_boolean (* ar_parse_arg) (char *);
}
bin_emulation_xfer_type;