* doc/binutils.texi: Add -D/--enable-deterministic-archives option
to strip and objcopy. * objcopy.c (deterministic): New global variable. (strip_options): Add --enable-deterministic-archives. (copy_options): Likewise. (copy_usage): Likewise. (strip_usage): Likewise. (copy_archive): When stripping all, don't add archive map; set deterministic output when requested. (strip_main): Add -D/--enable-deterministic-archives option. (copy_main): Likewise.
This commit is contained in:
parent
50f042b9a1
commit
2e30cb575a
3 changed files with 49 additions and 1 deletions
|
@ -1,3 +1,17 @@
|
|||
2012-04-25 Cary Coutant <ccoutant@google.com>
|
||||
|
||||
* doc/binutils.texi: Add -D/--enable-deterministic-archives option
|
||||
to strip and objcopy.
|
||||
* objcopy.c (deterministic): New global variable.
|
||||
(strip_options): Add --enable-deterministic-archives.
|
||||
(copy_options): Likewise.
|
||||
(copy_usage): Likewise.
|
||||
(strip_usage): Likewise.
|
||||
(copy_archive): When stripping all, don't add archive map; set
|
||||
deterministic output when requested.
|
||||
(strip_main): Add -D/--enable-deterministic-archives option.
|
||||
(copy_main): Likewise.
|
||||
|
||||
2012-04-12 H.J. Lu <hongjiu.lu@intel.com>
|
||||
|
||||
PR binutils/13947
|
||||
|
|
|
@ -1059,6 +1059,7 @@ objcopy [@option{-F} @var{bfdname}|@option{--target=}@var{bfdname}]
|
|||
[@option{-j} @var{sectionname}|@option{--only-section=}@var{sectionname}]
|
||||
[@option{-R} @var{sectionname}|@option{--remove-section=}@var{sectionname}]
|
||||
[@option{-p}|@option{--preserve-dates}]
|
||||
[@option{-D}|@option{--enable-deterministic-archives}]
|
||||
[@option{--debugging}]
|
||||
[@option{--gap-fill=}@var{val}]
|
||||
[@option{--pad-to=}@var{address}]
|
||||
|
@ -1323,6 +1324,12 @@ commands. If the input was '12345678' then the outputs would be
|
|||
Set the access and modification dates of the output file to be the same
|
||||
as those of the input file.
|
||||
|
||||
@item -D
|
||||
@itemx --enable-deterministic-archives
|
||||
Operate in @emph{deterministic} mode. When copying archive members
|
||||
and writing the archive index, use zero for UIDs, GIDs, timestamps,
|
||||
and use consistent file modes for all files.
|
||||
|
||||
@item --debugging
|
||||
Convert debugging information, if possible. This is not the default
|
||||
because only certain debugging formats are supported, and the
|
||||
|
@ -2679,6 +2686,7 @@ strip [@option{-F} @var{bfdname} |@option{--target=}@var{bfdname}]
|
|||
[@option{-x}|@option{--discard-all}] [@option{-X} |@option{--discard-locals}]
|
||||
[@option{-R} @var{sectionname} |@option{--remove-section=}@var{sectionname}]
|
||||
[@option{-o} @var{file}] [@option{-p}|@option{--preserve-dates}]
|
||||
[@option{-D}|@option{--enable-deterministic-archives}]
|
||||
[@option{--keep-file-symbols}]
|
||||
[@option{--only-keep-debug}]
|
||||
[@option{-v} |@option{--verbose}] [@option{-V}|@option{--version}]
|
||||
|
@ -2763,6 +2771,12 @@ argument may be specified.
|
|||
@itemx --preserve-dates
|
||||
Preserve the access and modification dates of the file.
|
||||
|
||||
@item -D
|
||||
@itemx --enable-deterministic-archives
|
||||
Operate in @emph{deterministic} mode. When copying archive members
|
||||
and writing the archive index, use zero for UIDs, GIDs, timestamps,
|
||||
and use consistent file modes for all files.
|
||||
|
||||
@item -w
|
||||
@itemx --wildcard
|
||||
Permit regular expressions in @var{symbolname}s used in other command
|
||||
|
|
|
@ -86,6 +86,7 @@ static int copy_width = 1;
|
|||
|
||||
static bfd_boolean verbose; /* Print file and target names. */
|
||||
static bfd_boolean preserve_dates; /* Preserve input file timestamp. */
|
||||
static bfd_boolean deterministic; /* Enable deterministic archives. */
|
||||
static int status = 0; /* Exit status. */
|
||||
|
||||
enum strip_action
|
||||
|
@ -322,6 +323,7 @@ static struct option strip_options[] =
|
|||
{
|
||||
{"discard-all", no_argument, 0, 'x'},
|
||||
{"discard-locals", no_argument, 0, 'X'},
|
||||
{"enable-deterministic-archives", no_argument, 0, 'D'},
|
||||
{"format", required_argument, 0, 'F'}, /* Obsolete */
|
||||
{"help", no_argument, 0, 'h'},
|
||||
{"info", no_argument, 0, OPTION_FORMATS_INFO},
|
||||
|
@ -371,6 +373,7 @@ static struct option copy_options[] =
|
|||
{"decompress-debug-sections", no_argument, 0, OPTION_DECOMPRESS_DEBUG_SECTIONS},
|
||||
{"discard-all", no_argument, 0, 'x'},
|
||||
{"discard-locals", no_argument, 0, 'X'},
|
||||
{"enable-deterministic-archives", no_argument, 0, 'D'},
|
||||
{"extract-symbol", no_argument, 0, OPTION_EXTRACT_SYMBOL},
|
||||
{"format", required_argument, 0, 'F'}, /* Obsolete */
|
||||
{"gap-fill", required_argument, 0, OPTION_GAP_FILL},
|
||||
|
@ -480,6 +483,8 @@ copy_usage (FILE *stream, int exit_status)
|
|||
-F --target <bfdname> Set both input and output format to <bfdname>\n\
|
||||
--debugging Convert debugging information, if possible\n\
|
||||
-p --preserve-dates Copy modified/access timestamps to the output\n\
|
||||
-D --enable-deterministic-archives\n\
|
||||
Produce deterministic output when stripping archives\n\
|
||||
-j --only-section <name> Only copy section <name> into the output\n\
|
||||
--add-gnu-debuglink=<file> Add section .gnu_debuglink linking to <file>\n\
|
||||
-R --remove-section <name> Remove section <name> from the output\n\
|
||||
|
@ -588,6 +593,8 @@ strip_usage (FILE *stream, int exit_status)
|
|||
-O --output-target=<bfdname> Create an output file in format <bfdname>\n\
|
||||
-F --target=<bfdname> Set both input and output format to <bfdname>\n\
|
||||
-p --preserve-dates Copy modified/access timestamps to the output\n\
|
||||
-D --enable-deterministic-archives\n\
|
||||
Produce deterministic output when stripping archives\n\
|
||||
-R --remove-section=<name> Remove section <name> from the output\n\
|
||||
-s --strip-all Remove all symbol and relocation information\n\
|
||||
-g -S -d --strip-debug Remove all debugging symbols & sections\n\
|
||||
|
@ -2030,9 +2037,15 @@ copy_archive (bfd *ibfd, bfd *obfd, const char *output_target,
|
|||
fatal (_("cannot create tempdir for archive copying (error: %s)"),
|
||||
strerror (errno));
|
||||
|
||||
obfd->has_armap = ibfd->has_armap;
|
||||
if (strip_symbols == STRIP_ALL)
|
||||
obfd->has_armap = FALSE;
|
||||
else
|
||||
obfd->has_armap = ibfd->has_armap;
|
||||
obfd->is_thin_archive = ibfd->is_thin_archive;
|
||||
|
||||
if (deterministic)
|
||||
obfd->flags |= BFD_DETERMINISTIC_OUTPUT;
|
||||
|
||||
list = NULL;
|
||||
|
||||
this_element = bfd_openr_next_archived_file (ibfd, NULL);
|
||||
|
@ -3024,6 +3037,9 @@ strip_main (int argc, char *argv[])
|
|||
case 'p':
|
||||
preserve_dates = TRUE;
|
||||
break;
|
||||
case 'D':
|
||||
deterministic = TRUE;
|
||||
break;
|
||||
case 'x':
|
||||
discard_locals = LOCALS_ALL;
|
||||
break;
|
||||
|
@ -3384,6 +3400,10 @@ copy_main (int argc, char *argv[])
|
|||
preserve_dates = TRUE;
|
||||
break;
|
||||
|
||||
case 'D':
|
||||
deterministic = TRUE;
|
||||
break;
|
||||
|
||||
case 'w':
|
||||
wildcard = TRUE;
|
||||
break;
|
||||
|
|
Loading…
Reference in a new issue