diff options
author | Linda Zhang <lindasc@qq.com> | 2014-06-26 12:18:39 +0100 |
---|---|---|
committer | Nick Clifton <nickc@redhat.com> | 2014-06-26 12:18:39 +0100 |
commit | eeb14e5a5b378450ca2ed139e76f317f491f4613 (patch) | |
tree | d6765b98ed47c169caf41c6efc41020eb285ec1e | |
parent | df565f326e62eacf41fb880f1acc65b9fdb5052c (diff) | |
download | gdb-eeb14e5a5b378450ca2ed139e76f317f491f4613.zip gdb-eeb14e5a5b378450ca2ed139e76f317f491f4613.tar.gz gdb-eeb14e5a5b378450ca2ed139e76f317f491f4613.tar.bz2 |
Change the default behaviour of the PE targeted linker so that timestamps are
inserted. This is for compatibility with other, non-GNU tools. Deterministic
binaries can still be created by using the new --no-insert-timestamp command line
option.
* 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.
-rw-r--r-- | ld/ChangeLog | 9 | ||||
-rw-r--r-- | ld/NEWS | 4 | ||||
-rw-r--r-- | ld/emultempl/pe.em | 11 | ||||
-rw-r--r-- | ld/emultempl/pep.em | 9 | ||||
-rw-r--r-- | ld/ld.texinfo | 12 |
5 files changed, 37 insertions, 8 deletions
diff --git a/ld/ChangeLog b/ld/ChangeLog index 5a1fe27..f42d00b 100644 --- a/ld/ChangeLog +++ b/ld/ChangeLog @@ -1,3 +1,12 @@ +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 @@ -1,5 +1,9 @@ -*- 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. diff --git a/ld/emultempl/pe.em b/ld/emultempl/pe.em index 0466eb3..7a5b77b 100644 --- a/ld/emultempl/pe.em +++ b/ld/emultempl/pe.em @@ -132,7 +132,7 @@ static int support_old_code = 0; 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 @@ -272,7 +272,8 @@ fragment <<EOF #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 @@ -307,6 +308,7 @@ 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. */ @@ -445,7 +447,7 @@ gld_${EMULATION_NAME}_list_options (FILE *file) 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")); @@ -769,6 +771,9 @@ gld${EMULATION_NAME}_handle_option (int optc) 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); diff --git a/ld/emultempl/pep.em b/ld/emultempl/pep.em index 6e3ecd8..916a786 100644 --- a/ld/emultempl/pep.em +++ b/ld/emultempl/pep.em @@ -147,7 +147,7 @@ static flagword real_flags = IMAGE_FILE_LARGE_ADDRESS_AWARE; 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 @@ -245,6 +245,7 @@ enum options OPTION_NO_BIND, OPTION_WDM_DRIVER, OPTION_INSERT_TIMESTAMP, + OPTION_NO_INSERT_TIMESTAMP, OPTION_TERMINAL_SERVER_AWARE, OPTION_BUILD_ID }; @@ -322,6 +323,7 @@ gld${EMULATION_NAME}_add_options {"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} }; @@ -409,7 +411,7 @@ gld_${EMULATION_NAME}_list_options (FILE *file) 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")); @@ -721,6 +723,9 @@ gld${EMULATION_NAME}_handle_option (int optc) 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); diff --git a/ld/ld.texinfo b/ld/ld.texinfo index e3d0469..5762dc6 100644 --- a/ld/ld.texinfo +++ b/ld/ld.texinfo @@ -2665,9 +2665,15 @@ The image is Terminal Server aware. @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 |