X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=binutils%2Fwindres.c;h=9132fa8e97c0864cc63bf89e2c769fbd6f0cb0b1;hb=76bba5ee850ea391ebdbb54dda5a06a567526dbf;hp=7de73ef2f553830c0c5f382908bd93cb91cd7719;hpb=dbb7c4414b09c017dafc73b63de13640f19c5735;p=deliverable%2Fbinutils-gdb.git diff --git a/binutils/windres.c b/binutils/windres.c index 7de73ef2f5..9132fa8e97 100644 --- a/binutils/windres.c +++ b/binutils/windres.c @@ -1,6 +1,5 @@ /* windres.c -- a program to manipulate Windows resources - Copyright 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2008, - 2009, 2011, 2012 Free Software Foundation, Inc. + Copyright (C) 1997-2019 Free Software Foundation, Inc. Written by Ian Lance Taylor, Cygnus Support. Rewritten by Kai Tietz, Onevision. @@ -37,7 +36,6 @@ #include "sysdep.h" #include -#include #include "bfd.h" #include "getopt.h" #include "bucomm.h" @@ -206,6 +204,7 @@ open_file_search (const char *filename, const char *mode, const char *errmsg, *real_filename = n; return e; } + free (n); if (errno != ENOENT) break; @@ -339,17 +338,12 @@ define_resource (rc_res_directory **resources, int cids, if (*resources == NULL) { - static unsigned int timeval; - - /* Use the same timestamp for every resource created in a - single run. */ - if (timeval == 0) - timeval = time (NULL); - *resources = ((rc_res_directory *) res_alloc (sizeof (rc_res_directory))); (*resources)->characteristics = 0; - (*resources)->time = timeval; + /* Using a real timestamp only serves to create non-deterministic + results. Use zero instead. */ + (*resources)->time = 0; (*resources)->major = 0; (*resources)->minor = 0; (*resources)->entries = NULL; @@ -814,10 +808,12 @@ main (int argc, char **argv) program_name = argv[0]; xmalloc_set_program_name (program_name); + bfd_set_error_program_name (program_name); expandargv (&argc, &argv); - bfd_init (); + if (bfd_init () != BFD_INIT_MAGIC) + fatal (_("fatal error: libbfd ABI mismatch")); set_default_bfd_target (); res_init (); @@ -944,7 +940,7 @@ main (int argc, char **argv) { struct stat statbuf; char modebuf[11]; - + if (stat (optarg, & statbuf) == 0 /* Coded this way to avoid importing knowledge of S_ISDIR into this file. */ && (mode_string (statbuf.st_mode, modebuf), modebuf[0] == 'd')) @@ -1121,7 +1117,7 @@ windres_open_as_binary (const char *filename, int rdmode) if (rdmode && ! bfd_check_format (abfd, bfd_object)) fatal ("can't open `%s' for input.", filename); - + return abfd; } @@ -1316,7 +1312,7 @@ static rc_uint_type target_get_8 (const void *p, rc_uint_type length) { rc_uint_type ret; - + if (length < 1) fatal ("Resource too small for getting 8-bit value."); @@ -1329,7 +1325,7 @@ target_get_16 (const void *p, rc_uint_type length) { if (length < 2) fatal ("Resource too small for getting 16-bit value."); - + if (target_is_bigendian) return bfd_getb16 (p); else @@ -1341,7 +1337,7 @@ target_get_32 (const void *p, rc_uint_type length) { if (length < 4) fatal ("Resource too small for getting 32-bit value."); - + if (target_is_bigendian) return bfd_getb32 (p); else @@ -1359,7 +1355,7 @@ static void target_put_16 (void *p, rc_uint_type value) { assert (!! p); - + if (target_is_bigendian) bfd_putb16 (value, p); else @@ -1370,7 +1366,7 @@ static void target_put_32 (void *p, rc_uint_type value) { assert (!! p); - + if (target_is_bigendian) bfd_putb32 (value, p); else @@ -1409,5 +1405,5 @@ int wr_print (FILE *e, const char *fmt, ...) va_start (arg, fmt); r += vfprintf (e, fmt, arg); va_end (arg); - return r; + return r; }