X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=binutils%2Fresres.c;h=6f26c65b4a62e911fb825f5865723e284c65cd4f;hb=0df8ad28f0f727fab3a696d6c98b9a8a77ee1024;hp=49fb3fd14a9e789245bc93df202840b45ffc900f;hpb=32866df75ece22ec1fd88e99e3c5effe9238e072;p=deliverable%2Fbinutils-gdb.git diff --git a/binutils/resres.c b/binutils/resres.c index 49fb3fd14a..6f26c65b4a 100644 --- a/binutils/resres.c +++ b/binutils/resres.c @@ -1,6 +1,5 @@ /* resres.c: read_res_file and write_res_file implementation for windres. - Copyright 1998, 1999, 2001, 2002, 2007 - Free Software Foundation, Inc. + Copyright (C) 1998-2018 Free Software Foundation, Inc. Written by Anders Norlander . Rewritten by Kai Tietz, Onevision. @@ -32,7 +31,6 @@ #include "windres.h" #include -#include static rc_uint_type write_res_directory (windres_bfd *, rc_uint_type, const rc_res_directory *, const rc_res_id *, @@ -98,7 +96,7 @@ read_res_file (const char *fn) off = 0; if (! probe_binary (&wrbfd, flen)) - set_windres_bfd_endianess (&wrbfd, ! target_is_bigendian); + set_windres_bfd_endianness (&wrbfd, ! target_is_bigendian); skip_null_resource (&wrbfd, &off, flen); @@ -128,13 +126,11 @@ write_res_file (const char *fn,const rc_res_directory *resdir) filename = fn; abfd = windres_open_as_binary (filename, 0); - sec = bfd_make_section (abfd, ".data"); + sec = bfd_make_section_with_flags (abfd, ".data", + (SEC_HAS_CONTENTS | SEC_ALLOC + | SEC_LOAD | SEC_DATA)); if (sec == NULL) bfd_fatal ("bfd_make_section"); - if (! bfd_set_section_flags (abfd, sec, - (SEC_HAS_CONTENTS | SEC_ALLOC - | SEC_LOAD | SEC_DATA))) - bfd_fatal ("bfd_set_section_flags"); /* Requiring this is probably a bug in BFD. */ sec->output_section = sec; @@ -157,8 +153,8 @@ write_res_file (const char *fn,const rc_res_directory *resdir) (const rc_res_id *) NULL, &language, 1); if (sec_length != sec_length_wrote) - fatal ("res write failed with different sizes (%lu/%lu).", (long) sec_length, - (long) sec_length_wrote); + fatal ("res write failed with different sizes (%lu/%lu).", + (unsigned long) sec_length, (unsigned long) sec_length_wrote); bfd_close (abfd); return; @@ -390,8 +386,7 @@ write_res_bin (windres_bfd *wrbfd, rc_uint_type off, const rc_res_resource *res, /* Get number of bytes needed to store an id in binary format */ static unsigned long -get_id_size (id) - const rc_res_id *id; +get_id_size (const rc_res_id *id) { if (id->named) return sizeof (unichar) * (id->u.n.length + 1); @@ -503,7 +498,7 @@ write_res_info (windres_bfd *wrbfd, rc_uint_type off, const rc_res_res_info *inf if (wrbfd) { struct bin_res_info l; - + windres_put_32 (wrbfd, l.version, info->version); windres_put_16 (wrbfd, l.memflags, info->memflags); windres_put_16 (wrbfd, l.language, info->language); @@ -649,7 +644,7 @@ res_add_resource (rc_res_resource *r, const rc_res_id *type, const rc_res_id *id and modified to add an existing resource. */ static void -res_append_resource (rc_res_directory **resources, rc_res_resource *resource, +res_append_resource (rc_res_directory **res_dirs, rc_res_resource *resource, int cids, const rc_res_id *ids, int dupok) { rc_res_entry *re = NULL; @@ -660,25 +655,21 @@ res_append_resource (rc_res_directory **resources, rc_res_resource *resource, { rc_res_entry **pp; - if (*resources == NULL) + if (*res_dirs == NULL) { - static unsigned long timeval; - - /* Use the same timestamp for every resource created in a - single run. */ - if (timeval == 0) - timeval = time (NULL); - - *resources = ((rc_res_directory *) + *res_dirs = ((rc_res_directory *) res_alloc (sizeof (rc_res_directory))); - (*resources)->characteristics = 0; - (*resources)->time = timeval; - (*resources)->major = 0; - (*resources)->minor = 0; - (*resources)->entries = NULL; + + (*res_dirs)->characteristics = 0; + /* Using a real timestamp only serves to create non-deterministic + results. Use zero instead. */ + (*res_dirs)->time = 0; + (*res_dirs)->major = 0; + (*res_dirs)->minor = 0; + (*res_dirs)->entries = NULL; } - for (pp = &(*resources)->entries; *pp != NULL; pp = &(*pp)->next) + for (pp = &(*res_dirs)->entries; *pp != NULL; pp = &(*pp)->next) if (res_id_cmp ((*pp)->id, ids[i]) == 0) break; @@ -713,7 +704,7 @@ res_append_resource (rc_res_directory **resources, rc_res_resource *resource, xexit (1); } - resources = &re->u.dir; + res_dirs = &re->u.dir; } }