+2014-06-26 Linda Zhang <lindasc@qq.com>
+
+ * emultempl/pe.em: Initialise insert_timestamp to true.
+ Add a --no-insert-timestamp command line option.
+ * emultempl/pep.em: Likewise.
+ * ld.texinfo: Document that --insert-timestamp is enabled by
+ default and that it now has an inverse command line option.
+ * NEWS: Mention the new behaviour.
+
2014-06-25 Nick Clifton <nickc@redhat.com>
* Makefile.am (ALL_EMULATION_SOURCES): Move ei386pep.c from
-*- text -*-
+* PE binaries now once again contain real timestamps by default. To disable
+ the inclusion of a timestamp in a PE binary, use the --no-insert-timestamp
+ command line option.
+
* Replace support for openrisc and or32 with support for or1k.
* Add support for the --build-id command line option to COFF based targets.
static char * thumb_entry_symbol = NULL;
static lang_assignment_statement_type *image_base_statement = 0;
static unsigned short pe_dll_characteristics = 0;
-static bfd_boolean insert_timestamp = FALSE;
+static bfd_boolean insert_timestamp = TRUE;
static const char *emit_build_id;
#ifdef DLL_SUPPORT
#define OPTION_TERMINAL_SERVER_AWARE (OPTION_WDM_DRIVER + 1)
/* Determinism. */
#define OPTION_INSERT_TIMESTAMP (OPTION_TERMINAL_SERVER_AWARE + 1)
-#define OPTION_BUILD_ID (OPTION_INSERT_TIMESTAMP + 1)
+#define OPTION_NO_INSERT_TIMESTAMP (OPTION_INSERT_TIMESTAMP + 1)
+#define OPTION_BUILD_ID (OPTION_NO_INSERT_TIMESTAMP + 1)
static void
gld${EMULATION_NAME}_add_options
{"no-leading-underscore", no_argument, NULL, OPTION_NO_LEADING_UNDERSCORE},
{"leading-underscore", no_argument, NULL, OPTION_LEADING_UNDERSCORE},
{"insert-timestamp", no_argument, NULL, OPTION_INSERT_TIMESTAMP},
+ {"no-insert-timestamp", no_argument, NULL, OPTION_NO_INSERT_TIMESTAMP},
#ifdef DLL_SUPPORT
/* getopt allows abbreviations, so we do this to stop it
from treating -o as an abbreviation for this option. */
fprintf (file, _(" --support-old-code Support interworking with old code\n"));
fprintf (file, _(" --[no-]leading-underscore Set explicit symbol underscore prefix mode\n"));
fprintf (file, _(" --thumb-entry=<symbol> Set the entry point to be Thumb <symbol>\n"));
- fprintf (file, _(" --insert-timestamp Use a real timestamp rather than zero.\n"));
+ fprintf (file, _(" --[no-]insert-timestamp Use a real timestamp rather than zero (default).\n"));
fprintf (file, _(" This makes binaries non-deterministic\n"));
#ifdef DLL_SUPPORT
fprintf (file, _(" --add-stdcall-alias Export symbols with and without @nn\n"));
case OPTION_INSERT_TIMESTAMP:
insert_timestamp = TRUE;
break;
+ case OPTION_NO_INSERT_TIMESTAMP:
+ insert_timestamp = FALSE;
+ break;
#ifdef DLL_SUPPORT
case OPTION_OUT_DEF:
pe_out_def_filename = xstrdup (optarg);
static int support_old_code = 0;
static lang_assignment_statement_type *image_base_statement = 0;
static unsigned short pe_dll_characteristics = 0;
-static bfd_boolean insert_timestamp = FALSE;
+static bfd_boolean insert_timestamp = TRUE;
static const char *emit_build_id;
#ifdef DLL_SUPPORT
OPTION_NO_BIND,
OPTION_WDM_DRIVER,
OPTION_INSERT_TIMESTAMP,
+ OPTION_NO_INSERT_TIMESTAMP,
OPTION_TERMINAL_SERVER_AWARE,
OPTION_BUILD_ID
};
{"wdmdriver", no_argument, NULL, OPTION_WDM_DRIVER},
{"tsaware", no_argument, NULL, OPTION_TERMINAL_SERVER_AWARE},
{"insert-timestamp", no_argument, NULL, OPTION_INSERT_TIMESTAMP},
+ {"no-insert-timestamp", no_argument, NULL, OPTION_NO_INSERT_TIMESTAMP},
{"build-id", optional_argument, NULL, OPTION_BUILD_ID},
{NULL, no_argument, NULL, 0}
};
fprintf (file, _(" --subsystem <name>[:<version>] Set required OS subsystem [& version]\n"));
fprintf (file, _(" --support-old-code Support interworking with old code\n"));
fprintf (file, _(" --[no-]leading-underscore Set explicit symbol underscore prefix mode\n"));
- fprintf (file, _(" --insert-timestamp Use a real timestamp rather than zero.\n"));
+ fprintf (file, _(" --[no-]insert-timestamp Use a real timestamp rather than zero. (default)\n"));
fprintf (file, _(" This makes binaries non-deterministic\n"));
#ifdef DLL_SUPPORT
fprintf (file, _(" --add-stdcall-alias Export symbols with and without @nn\n"));
case OPTION_INSERT_TIMESTAMP:
insert_timestamp = TRUE;
break;
+ case OPTION_NO_INSERT_TIMESTAMP:
+ insert_timestamp = FALSE;
+ break;
#ifdef DLL_SUPPORT
case OPTION_OUT_DEF:
pep_out_def_filename = xstrdup (optarg);
@kindex --insert-timestamp
@item --insert-timestamp
-Insert a real timestamp into the image, rather than the default value
-of zero. This will result in a slightly different results with each
-invocation, which could be helpful for distributing unique images.
+@itemx --no-insert-timestamp
+Insert a real timestamp into the image. This is the default behaviour
+as it matches legacy code and it means that the image will work with
+other, proprietary tools. The problem with this default is that it
+will result in slightly different images being produced each tiem the
+same sources are linked. The option @option{--no-insert-timestamp}
+can be used to insert a zero value for the timestamp, this ensuring
+that binaries produced from indentical sources will compare
+identically.
@end table
@c man end