diff options
Diffstat (limited to 'bfd')
-rw-r--r-- | bfd/ChangeLog | 6 | ||||
-rw-r--r-- | bfd/peXXigen.c | 15 |
2 files changed, 20 insertions, 1 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog index db032df..56c858e 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,9 @@ +2023-07-24 Johannes Schauer Marin Rodrigues <josch@debian.org> + + * peXXigen.c (_bfd_XXi_only_swap_filehdr_out): If inserting a + timestamp, use the value held in the SOURCE_DATE_EPOCH environment + variable, if it is defined. + 2023-07-24 Jose E. Marchesi <jose.marchesi@oracle.com> * reloc.c: New reloc BFD_RELOC_BPF_DISPCALL32. diff --git a/bfd/peXXigen.c b/bfd/peXXigen.c index da53f34..cdd89f8 100644 --- a/bfd/peXXigen.c +++ b/bfd/peXXigen.c @@ -838,7 +838,20 @@ _bfd_XXi_only_swap_filehdr_out (bfd * abfd, void * in, void * out) /* Use a real timestamp by default, unless the no-insert-timestamp option was chosen. */ if ((pe_data (abfd)->timestamp) == -1) - H_PUT_32 (abfd, time (0), filehdr_out->f_timdat); + { + time_t now; + char *source_date_epoch; + + /* If the SOURCE_DATE_EPOCH environment variable is + defined then use that as the time, otherwise use + the current time. */ + source_date_epoch = getenv ("SOURCE_DATE_EPOCH"); + if (source_date_epoch) + now = (time_t) strtoll (source_date_epoch, NULL, 10); + else + now = time (NULL); + H_PUT_32 (abfd, now, filehdr_out->f_timdat); + } else H_PUT_32 (abfd, pe_data (abfd)->timestamp, filehdr_out->f_timdat); |