X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=binutils%2Frescoff.c;h=9bba548afd1e9bb1c2536988e152a6f620725980;hb=26144df5d2c0b2fa0244f3fb95f8ed2686ac0815;hp=fe2487a396f72548b67679ed533c996451c4f0a8;hpb=09cda596de63a115baf24952deae289298a67a87;p=deliverable%2Fbinutils-gdb.git diff --git a/binutils/rescoff.c b/binutils/rescoff.c index fe2487a396..9bba548afd 100644 --- a/binutils/rescoff.c +++ b/binutils/rescoff.c @@ -1,5 +1,6 @@ /* rescoff.c -- read and write resources in Windows COFF files. - Copyright 1997, 1998 Free Software Foundation, Inc. + Copyright 1997, 1998, 1999, 2000, 2003, 2007 + Free Software Foundation, Inc. Written by Ian Lance Taylor, Cygnus Support. This file is part of GNU Binutils. @@ -16,15 +17,16 @@ You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA - 02111-1307, USA. */ + Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA + 02110-1301, USA. */ /* This file contains function that read and write Windows resources in COFF files. */ +#include "sysdep.h" #include "bfd.h" -#include "bucomm.h" #include "libiberty.h" +#include "bucomm.h" #include "windres.h" #include @@ -102,20 +104,17 @@ struct extern_res_data /* Local functions. */ -static void overrun PARAMS ((const struct coff_file_info *, const char *)); +static void overrun (const struct coff_file_info *, const char *); static struct res_directory *read_coff_res_dir - PARAMS ((const bfd_byte *, const struct coff_file_info *, - const struct res_id *, int)); + (const bfd_byte *, const struct coff_file_info *, + const struct res_id *, int); static struct res_resource *read_coff_data_entry - PARAMS ((const bfd_byte *, const struct coff_file_info *, - const struct res_id *)); + (const bfd_byte *, const struct coff_file_info *, const struct res_id *); /* Read the resources in a COFF file. */ struct res_directory * -read_coff_rsrc (filename, target) - const char *filename; - const char *target; +read_coff_rsrc (const char *filename, const char *target) { bfd *abfd; char **matching; @@ -142,9 +141,7 @@ read_coff_rsrc (filename, target) sec = bfd_get_section_by_name (abfd, ".rsrc"); if (sec == NULL) { - fprintf (stderr, _("%s: %s: no resource section\n"), program_name, - filename); - xexit (1); + fatal (_("%s: no resource section"), filename); } size = bfd_section_size (abfd, sec); @@ -173,9 +170,7 @@ read_coff_rsrc (filename, target) /* Give an error if we are out of bounds. */ static void -overrun (finfo, msg) - const struct coff_file_info *finfo; - const char *msg; +overrun (const struct coff_file_info *finfo, const char *msg) { fatal (_("%s: %s: address out of bounds"), finfo->filename, msg); } @@ -183,11 +178,8 @@ overrun (finfo, msg) /* Read a resource directory. */ static struct res_directory * -read_coff_res_dir (data, finfo, type, level) - const bfd_byte *data; - const struct coff_file_info *finfo; - const struct res_id *type; - int level; +read_coff_res_dir (const bfd_byte *data, const struct coff_file_info *finfo, + const struct res_id *type, int level) { const struct extern_res_directory *erd; struct res_directory *rd; @@ -316,10 +308,7 @@ read_coff_res_dir (data, finfo, type, level) /* Read a resource data entry. */ static struct res_resource * -read_coff_data_entry (data, finfo, type) - const bfd_byte *data; - const struct coff_file_info *finfo; - const struct res_id *type; +read_coff_data_entry (const bfd_byte *data, const struct coff_file_info *finfo, const struct res_id *type) { const struct extern_res_data *erd; struct res_resource *r; @@ -410,12 +399,12 @@ struct coff_write_info ((cwi->big_endian) ? bfd_putb32 ((v), (s)) : bfd_putl32 ((v), (s))) static void coff_bin_sizes - PARAMS ((const struct res_directory *, struct coff_write_info *)); -static unsigned char *coff_alloc PARAMS ((struct bindata_build *, size_t)); + (const struct res_directory *, struct coff_write_info *); +static unsigned char *coff_alloc (struct bindata_build *, size_t); static void coff_to_bin - PARAMS ((const struct res_directory *, struct coff_write_info *)); + (const struct res_directory *, struct coff_write_info *); static void coff_res_to_bin - PARAMS ((const struct res_resource *, struct coff_write_info *)); + (const struct res_resource *, struct coff_write_info *); /* Write resources to a COFF file. RESOURCES should already be sorted. @@ -426,10 +415,8 @@ static void coff_res_to_bin adding the .rsrc section. */ void -write_coff_file (filename, target, resources) - const char *filename; - const char *target; - const struct res_directory *resources; +write_coff_file (const char *filename, const char *target, + const struct res_directory *resources) { bfd *abfd; asection *sec; @@ -447,14 +434,20 @@ write_coff_file (filename, target, resources) if (! bfd_set_format (abfd, bfd_object)) bfd_fatal ("bfd_set_format"); -#ifdef DLLTOOL_ARM +#if defined DLLTOOL_SH + if (! bfd_set_arch_mach (abfd, bfd_arch_sh, 0)) + bfd_fatal ("bfd_set_arch_mach(sh)"); +#elif defined DLLTOOL_MIPS + if (! bfd_set_arch_mach (abfd, bfd_arch_mips, 0)) + bfd_fatal ("bfd_set_arch_mach(mips)"); +#elif defined DLLTOOL_ARM if (! bfd_set_arch_mach (abfd, bfd_arch_arm, 0)) bfd_fatal ("bfd_set_arch_mach(arm)"); #else /* FIXME: This is obviously i386 specific. */ if (! bfd_set_arch_mach (abfd, bfd_arch_i386, 0)) bfd_fatal ("bfd_set_arch_mach(i386)"); -#endif /* arm */ +#endif if (! bfd_set_file_flags (abfd, HAS_SYMS | HAS_RELOC)) bfd_fatal ("bfd_set_file_flags"); @@ -580,9 +573,8 @@ write_coff_file (filename, target, resources) entries. This updates fields in CWI. */ static void -coff_bin_sizes (resdir, cwi) - const struct res_directory *resdir; - struct coff_write_info *cwi; +coff_bin_sizes (const struct res_directory *resdir, + struct coff_write_info *cwi) { const struct res_entry *re; @@ -605,9 +597,7 @@ coff_bin_sizes (resdir, cwi) /* Allocate data for a particular list. */ static unsigned char * -coff_alloc (bb, size) - struct bindata_build *bb; - size_t size; +coff_alloc (struct bindata_build *bb, size_t size) { struct bindata *d; @@ -630,9 +620,7 @@ coff_alloc (bb, size) /* Convert the resource directory RESDIR to binary. */ static void -coff_to_bin (resdir, cwi) - const struct res_directory *resdir; - struct coff_write_info *cwi; +coff_to_bin (const struct res_directory *resdir, struct coff_write_info *cwi) { struct extern_res_directory *erd; int ci, cn; @@ -709,9 +697,7 @@ coff_to_bin (resdir, cwi) /* Convert the resource RES to binary. */ static void -coff_res_to_bin (res, cwi) - const struct res_resource *res; - struct coff_write_info *cwi; +coff_res_to_bin (const struct res_resource *res, struct coff_write_info *cwi) { arelent *r; struct extern_res_data *erd;