forked from Imagelibrary/binutils-gdb
PR binutils/13051
Fix a syntax error bug when compiling rc files with the VERSIONINFO resource containing more than one language block inside a single StringFileInfo block. * windint.h (rc_ver_stringtable): New structure definition. (rc_ver_info): Use it. * rcparse.y (verstringtable): New variable. (verstringtables): New type. (verstringtables:): New rule declaration. (verblocks:): Use it. * resrc.c (append_ver_stringtable): New function. (append_ver_stringfileinfo): Update to use stringtables. * windres.h (append_ver_stringfileinfo): Update declaration. (append_ver_stringtable): New declaration. * resrc.c (write_rc_versioninfo): Update to support multiple blocks. * resbin.c (bin_to_res_version): Likewise. (res_to_bin_versioninfo): Likewise. * binutils-all\windres\version.rsd: Regenerate. * binutils-all\windres\version_cat.rsd: Regenerate. * binutils-all\windres\version_mlang.rc: Add new test. * binutils-all\windres\version_mlang.rsd: Likewise.
This commit is contained in:
@@ -1,3 +1,23 @@
|
|||||||
|
2011-10-11 Chris <player1@onet.eu>
|
||||||
|
|
||||||
|
PR binutils/13051
|
||||||
|
Fix a syntax error bug when compiling rc files with the VERSIONINFO resource
|
||||||
|
containing more than one language block inside a single StringFileInfo block.
|
||||||
|
|
||||||
|
* windint.h (rc_ver_stringtable): New structure definition.
|
||||||
|
(rc_ver_info): Use it.
|
||||||
|
* rcparse.y (verstringtable): New variable.
|
||||||
|
(verstringtables): New type.
|
||||||
|
(verstringtables:): New rule declaration.
|
||||||
|
(verblocks:): Use it.
|
||||||
|
* resrc.c (append_ver_stringtable): New function.
|
||||||
|
(append_ver_stringfileinfo): Update to use stringtables.
|
||||||
|
* windres.h (append_ver_stringfileinfo): Update declaration.
|
||||||
|
(append_ver_stringtable): New declaration.
|
||||||
|
* resrc.c (write_rc_versioninfo): Update to support multiple blocks.
|
||||||
|
* resbin.c (bin_to_res_version): Likewise.
|
||||||
|
(res_to_bin_versioninfo): Likewise.
|
||||||
|
|
||||||
2011-10-10 Nick Clifton <nickc@redhat.com>
|
2011-10-10 Nick Clifton <nickc@redhat.com>
|
||||||
|
|
||||||
* po/bg.po: Updated Bulgarian translation.
|
* po/bg.po: Updated Bulgarian translation.
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
%{ /* rcparse.y -- parser for Windows rc files
|
%{ /* rcparse.y -- parser for Windows rc files
|
||||||
Copyright 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2005, 2007, 2008
|
Copyright 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2005, 2007, 2008,
|
||||||
Free Software Foundation, Inc.
|
2011 Free Software Foundation, Inc.
|
||||||
Written by Ian Lance Taylor, Cygnus Support.
|
Written by Ian Lance Taylor, Cygnus Support.
|
||||||
Extended by Kai Tietz, Onevision.
|
Extended by Kai Tietz, Onevision.
|
||||||
|
|
||||||
@@ -79,6 +79,7 @@ static const rc_res_id res_null_text = { 1, {{0, &null_unichar}}};
|
|||||||
rc_rcdata_item *rcdata_item;
|
rc_rcdata_item *rcdata_item;
|
||||||
rc_fixed_versioninfo *fixver;
|
rc_fixed_versioninfo *fixver;
|
||||||
rc_ver_info *verinfo;
|
rc_ver_info *verinfo;
|
||||||
|
rc_ver_stringtable *verstringtable;
|
||||||
rc_ver_stringinfo *verstring;
|
rc_ver_stringinfo *verstring;
|
||||||
rc_ver_varinfo *vervar;
|
rc_ver_varinfo *vervar;
|
||||||
rc_toolbar_item *toobar_item;
|
rc_toolbar_item *toobar_item;
|
||||||
@@ -150,6 +151,7 @@ static const rc_res_id res_null_text = { 1, {{0, &null_unichar}}};
|
|||||||
%type <rcdata_item> opt_control_data
|
%type <rcdata_item> opt_control_data
|
||||||
%type <fixver> fixedverinfo
|
%type <fixver> fixedverinfo
|
||||||
%type <verinfo> verblocks
|
%type <verinfo> verblocks
|
||||||
|
%type <verstringtable> verstringtables
|
||||||
%type <verstring> vervals
|
%type <verstring> vervals
|
||||||
%type <vervar> vertrans
|
%type <vervar> vertrans
|
||||||
%type <toobar_item> toolbar_data
|
%type <toobar_item> toolbar_data
|
||||||
@@ -1471,9 +1473,9 @@ verblocks:
|
|||||||
{
|
{
|
||||||
$$ = NULL;
|
$$ = NULL;
|
||||||
}
|
}
|
||||||
| verblocks BLOCKSTRINGFILEINFO BEG BLOCK BEG vervals END END
|
| verblocks BLOCKSTRINGFILEINFO BEG verstringtables END
|
||||||
{
|
{
|
||||||
$$ = append_ver_stringfileinfo ($1, $4, $6);
|
$$ = append_ver_stringfileinfo ($1, $4);
|
||||||
}
|
}
|
||||||
| verblocks BLOCKVARFILEINFO BEG VALUE res_unicode_string_concat vertrans END
|
| verblocks BLOCKVARFILEINFO BEG VALUE res_unicode_string_concat vertrans END
|
||||||
{
|
{
|
||||||
@@ -1481,6 +1483,17 @@ verblocks:
|
|||||||
}
|
}
|
||||||
;
|
;
|
||||||
|
|
||||||
|
verstringtables:
|
||||||
|
/* empty */
|
||||||
|
{
|
||||||
|
$$ = NULL;
|
||||||
|
}
|
||||||
|
| verstringtables BLOCK BEG vervals END
|
||||||
|
{
|
||||||
|
$$ = append_ver_stringtable ($1, $2, $4);
|
||||||
|
}
|
||||||
|
;
|
||||||
|
|
||||||
vervals:
|
vervals:
|
||||||
/* empty */
|
/* empty */
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/* resbin.c -- manipulate the Windows binary resource format.
|
/* resbin.c -- manipulate the Windows binary resource format.
|
||||||
Copyright 1997, 1998, 1999, 2002, 2003, 2005, 2006, 2007, 2009, 2010
|
Copyright 1997, 1998, 1999, 2002, 2003, 2005, 2006, 2007, 2009, 2010, 2011
|
||||||
Free Software Foundation, Inc.
|
Free Software Foundation, Inc.
|
||||||
Written by Ian Lance Taylor, Cygnus Support.
|
Written by Ian Lance Taylor, Cygnus Support.
|
||||||
Rewritten by Kai Tietz, Onevision.
|
Rewritten by Kai Tietz, Onevision.
|
||||||
@@ -1027,7 +1027,7 @@ bin_to_res_version (windres_bfd *wrbfd, const bfd_byte *data, rc_uint_type lengt
|
|||||||
|
|
||||||
if (ch == 'S')
|
if (ch == 'S')
|
||||||
{
|
{
|
||||||
rc_ver_stringinfo **ppvs;
|
rc_ver_stringtable **ppvst;
|
||||||
|
|
||||||
vi->type = VERINFO_STRING;
|
vi->type = VERINFO_STRING;
|
||||||
|
|
||||||
@@ -1041,9 +1041,27 @@ bin_to_res_version (windres_bfd *wrbfd, const bfd_byte *data, rc_uint_type lengt
|
|||||||
data += off;
|
data += off;
|
||||||
length -= off;
|
length -= off;
|
||||||
|
|
||||||
|
/* It's convenient to round verlen to a 4 byte alignment,
|
||||||
|
since we round the subvariables in the loop. */
|
||||||
|
|
||||||
|
verlen = (verlen + 3) &~ 3;
|
||||||
|
|
||||||
|
vi->u.string.stringtables = NULL;
|
||||||
|
ppvst = &vi->u.string.stringtables;
|
||||||
|
|
||||||
|
while (verlen > 0)
|
||||||
|
{
|
||||||
|
rc_ver_stringtable *vst;
|
||||||
|
rc_uint_type stverlen;
|
||||||
|
rc_ver_stringinfo **ppvs;
|
||||||
|
|
||||||
|
if (length < 8)
|
||||||
|
toosmall (_("version stringtable"));
|
||||||
|
|
||||||
|
vst = (rc_ver_stringtable *) res_alloc (sizeof (rc_ver_stringtable));
|
||||||
|
|
||||||
get_version_header (wrbfd, data, length, (const char *) NULL,
|
get_version_header (wrbfd, data, length, (const char *) NULL,
|
||||||
&vi->u.string.language, &verlen, &vallen,
|
&vst->language, &stverlen, &vallen, &type, &off);
|
||||||
&type, &off);
|
|
||||||
|
|
||||||
if (vallen != 0)
|
if (vallen != 0)
|
||||||
fatal (_("unexpected version stringtable value length %ld"), (long) vallen);
|
fatal (_("unexpected version stringtable value length %ld"), (long) vallen);
|
||||||
@@ -1052,25 +1070,25 @@ bin_to_res_version (windres_bfd *wrbfd, const bfd_byte *data, rc_uint_type lengt
|
|||||||
length -= off;
|
length -= off;
|
||||||
verlen -= off;
|
verlen -= off;
|
||||||
|
|
||||||
vi->u.string.strings = NULL;
|
stverlen = (stverlen + 3) &~ 3;
|
||||||
ppvs = &vi->u.string.strings;
|
|
||||||
|
|
||||||
/* It's convenient to round verlen to a 4 byte alignment,
|
vst->strings = NULL;
|
||||||
since we round the subvariables in the loop. */
|
ppvs = &vst->strings;
|
||||||
verlen = (verlen + 3) &~ 3;
|
|
||||||
|
|
||||||
while (verlen > 0)
|
while (stverlen > 0)
|
||||||
{
|
{
|
||||||
rc_ver_stringinfo *vs;
|
rc_ver_stringinfo *vs;
|
||||||
rc_uint_type subverlen, vslen, valoff;
|
rc_uint_type sverlen, vslen, valoff;
|
||||||
|
|
||||||
vs = (rc_ver_stringinfo *) res_alloc (sizeof *vs);
|
if (length < 8)
|
||||||
|
toosmall (_("version string"));
|
||||||
|
|
||||||
get_version_header (wrbfd, data, length,
|
vs = (rc_ver_stringinfo *) res_alloc (sizeof (rc_ver_stringinfo));
|
||||||
(const char *) NULL, &vs->key, &subverlen,
|
|
||||||
&vallen, &type, &off);
|
|
||||||
|
|
||||||
subverlen = (subverlen + 3) &~ 3;
|
get_version_header (wrbfd, data, length, (const char *) NULL,
|
||||||
|
&vs->key, &sverlen, &vallen, &type, &off);
|
||||||
|
|
||||||
|
sverlen = (sverlen + 3) &~ 3;
|
||||||
|
|
||||||
data += off;
|
data += off;
|
||||||
length -= off;
|
length -= off;
|
||||||
@@ -1079,22 +1097,26 @@ bin_to_res_version (windres_bfd *wrbfd, const bfd_byte *data, rc_uint_type lengt
|
|||||||
valoff = vslen * 2 + 2;
|
valoff = vslen * 2 + 2;
|
||||||
valoff = (valoff + 3) &~ 3;
|
valoff = (valoff + 3) &~ 3;
|
||||||
|
|
||||||
if (off + valoff != subverlen)
|
if (off + valoff != sverlen)
|
||||||
fatal (_("unexpected version string length %ld != %ld + %ld"),
|
fatal (_("unexpected version string length %ld != %ld + %ld"),
|
||||||
(long) subverlen, (long) off, (long) valoff);
|
(long) sverlen, (long) off, (long) valoff);
|
||||||
|
|
||||||
vs->next = NULL;
|
|
||||||
*ppvs = vs;
|
|
||||||
ppvs = &vs->next;
|
|
||||||
|
|
||||||
data += valoff;
|
data += valoff;
|
||||||
length -= valoff;
|
length -= valoff;
|
||||||
|
|
||||||
if (verlen < subverlen)
|
if (stverlen < sverlen)
|
||||||
fatal (_("unexpected version string length %ld < %ld"),
|
fatal (_("unexpected version string length %ld < %ld"),
|
||||||
(long) verlen, (long) subverlen);
|
(long) verlen, (long) sverlen);
|
||||||
|
stverlen -= sverlen;
|
||||||
|
|
||||||
verlen -= subverlen;
|
vs->next = NULL;
|
||||||
|
*ppvs = vs;
|
||||||
|
ppvs = &vs->next;
|
||||||
|
}
|
||||||
|
|
||||||
|
vst->next = NULL;
|
||||||
|
*ppvst = vst;
|
||||||
|
ppvst = &vst->next;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (ch == 'V')
|
else if (ch == 'V')
|
||||||
@@ -2005,27 +2027,34 @@ res_to_bin_versioninfo (windres_bfd *wrbfd, rc_uint_type off,
|
|||||||
abort ();
|
abort ();
|
||||||
case VERINFO_STRING:
|
case VERINFO_STRING:
|
||||||
{
|
{
|
||||||
struct bin_ver_info bvsd;
|
const rc_ver_stringtable *vst;
|
||||||
rc_uint_type vs_off;
|
|
||||||
const rc_ver_stringinfo *vs;
|
|
||||||
|
|
||||||
off = string_to_unicode_bin (wrbfd, off, "StringFileInfo");
|
off = string_to_unicode_bin (wrbfd, off, "StringFileInfo");
|
||||||
|
|
||||||
|
if (!vi->u.string.stringtables)
|
||||||
|
off += (4 - ((off - off_delta) & 3)) & 3;
|
||||||
|
|
||||||
|
for (vst = vi->u.string.stringtables; vst != NULL; vst = vst->next)
|
||||||
|
{
|
||||||
|
struct bin_ver_info bvst;
|
||||||
|
rc_uint_type vst_off;
|
||||||
|
const rc_ver_stringinfo *vs;
|
||||||
|
|
||||||
|
off += (4 - ((off - off_delta) & 3)) & 3;
|
||||||
|
|
||||||
|
vst_off = off;
|
||||||
|
off += BIN_VER_INFO_SIZE;
|
||||||
|
|
||||||
|
off = unicode_to_bin (wrbfd, off, vst->language);
|
||||||
|
|
||||||
|
for (vs = vst->strings; vs != NULL; vs = vs->next)
|
||||||
|
{
|
||||||
|
struct bin_ver_info bvs;
|
||||||
|
rc_uint_type vs_off, str_off;
|
||||||
|
|
||||||
off += (4 - ((off - off_delta) & 3)) & 3;
|
off += (4 - ((off - off_delta) & 3)) & 3;
|
||||||
|
|
||||||
vs_off = off;
|
vs_off = off;
|
||||||
|
|
||||||
off += BIN_VER_INFO_SIZE;
|
|
||||||
|
|
||||||
off = unicode_to_bin (wrbfd, off, vi->u.string.language);
|
|
||||||
|
|
||||||
for (vs = vi->u.string.strings; vs != NULL; vs = vs->next)
|
|
||||||
{
|
|
||||||
struct bin_ver_info bvss;
|
|
||||||
rc_uint_type vss_off,str_off;
|
|
||||||
|
|
||||||
off += (4 - ((off - off_delta) & 3)) & 3;
|
|
||||||
|
|
||||||
vss_off = off;
|
|
||||||
off += BIN_VER_INFO_SIZE;
|
off += BIN_VER_INFO_SIZE;
|
||||||
|
|
||||||
off = unicode_to_bin (wrbfd, off, vs->key);
|
off = unicode_to_bin (wrbfd, off, vs->key);
|
||||||
@@ -2034,23 +2063,26 @@ res_to_bin_versioninfo (windres_bfd *wrbfd, rc_uint_type off,
|
|||||||
|
|
||||||
str_off = off;
|
str_off = off;
|
||||||
off = unicode_to_bin (wrbfd, off, vs->value);
|
off = unicode_to_bin (wrbfd, off, vs->value);
|
||||||
|
|
||||||
if (wrbfd)
|
if (wrbfd)
|
||||||
{
|
{
|
||||||
windres_put_16 (wrbfd, bvss.size, off - vss_off);
|
windres_put_16 (wrbfd, bvs.size, off - vs_off);
|
||||||
windres_put_16 (wrbfd, bvss.sig1, (off - str_off) / 2);
|
windres_put_16 (wrbfd, bvs.sig1, (off - str_off) / 2);
|
||||||
windres_put_16 (wrbfd, bvss.sig2, 1);
|
windres_put_16 (wrbfd, bvs.sig2, 1);
|
||||||
set_windres_bfd_content (wrbfd, &bvss, vss_off,
|
set_windres_bfd_content (wrbfd, &bvs, vs_off,
|
||||||
BIN_VER_INFO_SIZE);
|
BIN_VER_INFO_SIZE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (wrbfd)
|
if (wrbfd)
|
||||||
{
|
{
|
||||||
windres_put_16 (wrbfd, bvsd.size, off - vs_off);
|
windres_put_16 (wrbfd, bvst.size, off - vst_off);
|
||||||
windres_put_16 (wrbfd, bvsd.sig1, 0);
|
windres_put_16 (wrbfd, bvst.sig1, 0);
|
||||||
windres_put_16 (wrbfd, bvsd.sig2, 0);
|
windres_put_16 (wrbfd, bvst.sig2, 1);
|
||||||
set_windres_bfd_content (wrbfd, &bvsd, vs_off,
|
set_windres_bfd_content (wrbfd, &bvst, vst_off,
|
||||||
BIN_VER_INFO_SIZE);
|
BIN_VER_INFO_SIZE);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2100,9 +2132,9 @@ res_to_bin_versioninfo (windres_bfd *wrbfd, rc_uint_type off,
|
|||||||
|
|
||||||
if (wrbfd)
|
if (wrbfd)
|
||||||
{
|
{
|
||||||
windres_put_16 (wrbfd, bv.size, off-bv_off);
|
windres_put_16 (wrbfd, bv.size, off - bv_off);
|
||||||
windres_put_16 (wrbfd, bv.sig1, 0);
|
windres_put_16 (wrbfd, bv.sig1, 0);
|
||||||
windres_put_16 (wrbfd, bv.sig2, 0);
|
windres_put_16 (wrbfd, bv.sig2, 1);
|
||||||
set_windres_bfd_content (wrbfd, &bv, bv_off,
|
set_windres_bfd_content (wrbfd, &bv, bv_off,
|
||||||
BIN_VER_INFO_SIZE);
|
BIN_VER_INFO_SIZE);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/* resrc.c -- read and write Windows rc files.
|
/* resrc.c -- read and write Windows rc files.
|
||||||
Copyright 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2005, 2007, 2008
|
Copyright 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2005, 2007, 2008, 2011
|
||||||
Free Software Foundation, Inc.
|
Free Software Foundation, Inc.
|
||||||
Written by Ian Lance Taylor, Cygnus Support.
|
Written by Ian Lance Taylor, Cygnus Support.
|
||||||
Rewritten by Kai Tietz, Onevision.
|
Rewritten by Kai Tietz, Onevision.
|
||||||
@@ -1803,16 +1803,15 @@ define_versioninfo (rc_res_id id, rc_uint_type language,
|
|||||||
/* Add string version info to a list of version information. */
|
/* Add string version info to a list of version information. */
|
||||||
|
|
||||||
rc_ver_info *
|
rc_ver_info *
|
||||||
append_ver_stringfileinfo (rc_ver_info *verinfo, const char *language,
|
append_ver_stringfileinfo (rc_ver_info *verinfo,
|
||||||
rc_ver_stringinfo *strings)
|
rc_ver_stringtable *stringtables)
|
||||||
{
|
{
|
||||||
rc_ver_info *vi, **pp;
|
rc_ver_info *vi, **pp;
|
||||||
|
|
||||||
vi = (rc_ver_info *) res_alloc (sizeof (rc_ver_info));
|
vi = (rc_ver_info *) res_alloc (sizeof (rc_ver_info));
|
||||||
vi->next = NULL;
|
vi->next = NULL;
|
||||||
vi->type = VERINFO_STRING;
|
vi->type = VERINFO_STRING;
|
||||||
unicode_from_ascii ((rc_uint_type *) NULL, &vi->u.string.language, language);
|
vi->u.string.stringtables = stringtables;
|
||||||
vi->u.string.strings = strings;
|
|
||||||
|
|
||||||
for (pp = &verinfo; *pp != NULL; pp = &(*pp)->next)
|
for (pp = &verinfo; *pp != NULL; pp = &(*pp)->next)
|
||||||
;
|
;
|
||||||
@@ -1821,6 +1820,25 @@ append_ver_stringfileinfo (rc_ver_info *verinfo, const char *language,
|
|||||||
return verinfo;
|
return verinfo;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
rc_ver_stringtable *
|
||||||
|
append_ver_stringtable (rc_ver_stringtable *stringtable,
|
||||||
|
const char *language,
|
||||||
|
rc_ver_stringinfo *strings)
|
||||||
|
{
|
||||||
|
rc_ver_stringtable *vst, **pp;
|
||||||
|
|
||||||
|
vst = (rc_ver_stringtable *) res_alloc (sizeof (rc_ver_stringtable));
|
||||||
|
vst->next = NULL;
|
||||||
|
unicode_from_ascii ((rc_uint_type *) NULL, &vst->language, language);
|
||||||
|
vst->strings = strings;
|
||||||
|
|
||||||
|
for (pp = &stringtable; *pp != NULL; pp = &(*pp)->next)
|
||||||
|
;
|
||||||
|
*pp = vst;
|
||||||
|
|
||||||
|
return stringtable;
|
||||||
|
}
|
||||||
|
|
||||||
/* Add variable version info to a list of version information. */
|
/* Add variable version info to a list of version information. */
|
||||||
|
|
||||||
rc_ver_info *
|
rc_ver_info *
|
||||||
@@ -3264,16 +3282,21 @@ write_rc_versioninfo (FILE *e, const rc_versioninfo *versioninfo)
|
|||||||
{
|
{
|
||||||
case VERINFO_STRING:
|
case VERINFO_STRING:
|
||||||
{
|
{
|
||||||
|
const rc_ver_stringtable *vst;
|
||||||
const rc_ver_stringinfo *vs;
|
const rc_ver_stringinfo *vs;
|
||||||
|
|
||||||
fprintf (e, " BLOCK \"StringFileInfo\"\n");
|
fprintf (e, " BLOCK \"StringFileInfo\"\n");
|
||||||
fprintf (e, " BEGIN\n");
|
fprintf (e, " BEGIN\n");
|
||||||
|
|
||||||
|
for (vst = vi->u.string.stringtables; vst != NULL; vst = vst->next)
|
||||||
|
{
|
||||||
fprintf (e, " BLOCK ");
|
fprintf (e, " BLOCK ");
|
||||||
unicode_print_quoted (e, vi->u.string.language, -1);
|
unicode_print_quoted (e, vst->language, -1);
|
||||||
|
|
||||||
fprintf (e, "\n");
|
fprintf (e, "\n");
|
||||||
fprintf (e, " BEGIN\n");
|
fprintf (e, " BEGIN\n");
|
||||||
|
|
||||||
for (vs = vi->u.string.strings; vs != NULL; vs = vs->next)
|
for (vs = vst->strings; vs != NULL; vs = vs->next)
|
||||||
{
|
{
|
||||||
fprintf (e, " VALUE ");
|
fprintf (e, " VALUE ");
|
||||||
unicode_print_quoted (e, vs->key, -1);
|
unicode_print_quoted (e, vs->key, -1);
|
||||||
@@ -3283,6 +3306,7 @@ write_rc_versioninfo (FILE *e, const rc_versioninfo *versioninfo)
|
|||||||
}
|
}
|
||||||
|
|
||||||
fprintf (e, " END\n");
|
fprintf (e, " END\n");
|
||||||
|
}
|
||||||
fprintf (e, " END\n");
|
fprintf (e, " END\n");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,3 +1,11 @@
|
|||||||
|
2011-10-11 Chris <player1@onet.eu>
|
||||||
|
|
||||||
|
PR binutils/13051
|
||||||
|
* binutils-all\windres\version.rsd: Regenerate.
|
||||||
|
* binutils-all\windres\version_cat.rsd: Regenerate.
|
||||||
|
* binutils-all\windres\version_mlang.rc: Add new test.
|
||||||
|
* binutils-all\windres\version_mlang.rsd: Likewise.
|
||||||
|
|
||||||
2011-10-07 H.J. Lu <hongjiu.lu@intel.com>
|
2011-10-07 H.J. Lu <hongjiu.lu@intel.com>
|
||||||
|
|
||||||
* binutils-all/objdump.exp: Don't run dw2-decodedline.S on ia64.
|
* binutils-all/objdump.exp: Don't run dw2-decodedline.S on ia64.
|
||||||
|
|||||||
@@ -1,7 +1,3 @@
|
|||||||
|
|
||||||
version.res: file format binary
|
|
||||||
|
|
||||||
Contents of section .data:
|
|
||||||
0000 00000000 20000000 ffff0000 ffff0000 .... ...........
|
0000 00000000 20000000 ffff0000 ffff0000 .... ...........
|
||||||
0010 00000000 00000000 00000000 00000000 ................
|
0010 00000000 00000000 00000000 00000000 ................
|
||||||
0020 ec020000 20000000 ffff1000 ffff0100 .... ...........
|
0020 ec020000 20000000 ffff1000 ffff0100 .... ...........
|
||||||
@@ -12,9 +8,9 @@ Contents of section .data:
|
|||||||
0070 00000100 01000000 00000100 01000000 ................
|
0070 00000100 01000000 00000100 01000000 ................
|
||||||
0080 3f000000 00000000 04000000 01000000 ?...............
|
0080 3f000000 00000000 04000000 01000000 ?...............
|
||||||
0090 00000000 00000000 00000000 4c020000 ............L...
|
0090 00000000 00000000 00000000 4c020000 ............L...
|
||||||
00a0 00005300 74007200 69006e00 67004600 ..S.t.r.i.n.g.F.
|
00a0 01005300 74007200 69006e00 67004600 ..S.t.r.i.n.g.F.
|
||||||
00b0 69006c00 65004900 6e006600 6f000000 i.l.e.I.n.f.o...
|
00b0 69006c00 65004900 6e006600 6f000000 i.l.e.I.n.f.o...
|
||||||
00c0 28020000 00003000 34003000 37003000 (.....0.4.0.7.0.
|
00c0 28020000 01003000 34003000 37003000 (.....0.4.0.7.0.
|
||||||
00d0 34006500 34000000 32000900 01004300 4.e.4...2.....C.
|
00d0 34006500 34000000 32000900 01004300 4.e.4...2.....C.
|
||||||
00e0 6f006d00 70006100 6e007900 4e006100 o.m.p.a.n.y.N.a.
|
00e0 6f006d00 70006100 6e007900 4e006100 o.m.p.a.n.y.N.a.
|
||||||
00f0 6d006500 00000000 62006900 6e007500 m.e.....b.i.n.u.
|
00f0 6d006500 00000000 62006900 6e007500 m.e.....b.i.n.u.
|
||||||
@@ -48,7 +44,7 @@ Contents of section .data:
|
|||||||
02b0 72000000 34000800 01005000 72006f00 r...4.....P.r.o.
|
02b0 72000000 34000800 01005000 72006f00 r...4.....P.r.o.
|
||||||
02c0 64007500 63007400 56006500 72007300 d.u.c.t.V.e.r.s.
|
02c0 64007500 63007400 56006500 72007300 d.u.c.t.V.e.r.s.
|
||||||
02d0 69006f00 6e000000 31002e00 30002e00 i.o.n...1...0...
|
02d0 69006f00 6e000000 31002e00 30002e00 i.o.n...1...0...
|
||||||
02e0 30002e00 31000000 44000000 00005600 0...1...D.....V.
|
02e0 30002e00 31000000 44000000 01005600 0...1...D.....V.
|
||||||
02f0 61007200 46006900 6c006500 49006e00 a.r.F.i.l.e.I.n.
|
02f0 61007200 46006900 6c006500 49006e00 a.r.F.i.l.e.I.n.
|
||||||
0300 66006f00 00000000 24000400 00005400 f.o.....$.....T.
|
0300 66006f00 00000000 24000400 00005400 f.o.....$.....T.
|
||||||
0310 72006100 6e007300 6c006100 74006900 r.a.n.s.l.a.t.i.
|
0310 72006100 6e007300 6c006100 74006900 r.a.n.s.l.a.t.i.
|
||||||
|
|||||||
@@ -12,9 +12,9 @@ Contents of section .data:
|
|||||||
0070 00000100 01000000 00000100 01000000 ................
|
0070 00000100 01000000 00000100 01000000 ................
|
||||||
0080 3f000000 00000000 04000000 01000000 ?...............
|
0080 3f000000 00000000 04000000 01000000 ?...............
|
||||||
0090 00000000 00000000 00000000 4c020000 ............L...
|
0090 00000000 00000000 00000000 4c020000 ............L...
|
||||||
00a0 00005300 74007200 69006e00 67004600 ..S.t.r.i.n.g.F.
|
00a0 01005300 74007200 69006e00 67004600 ..S.t.r.i.n.g.F.
|
||||||
00b0 69006c00 65004900 6e006600 6f000000 i.l.e.I.n.f.o...
|
00b0 69006c00 65004900 6e006600 6f000000 i.l.e.I.n.f.o...
|
||||||
00c0 28020000 00003000 34003000 37003000 (.....0.4.0.7.0.
|
00c0 28020000 01003000 34003000 37003000 (.....0.4.0.7.0.
|
||||||
00d0 34006500 34000000 32000900 01004300 4.e.4...2.....C.
|
00d0 34006500 34000000 32000900 01004300 4.e.4...2.....C.
|
||||||
00e0 6f006d00 70006100 6e007900 4e006100 o.m.p.a.n.y.N.a.
|
00e0 6f006d00 70006100 6e007900 4e006100 o.m.p.a.n.y.N.a.
|
||||||
00f0 6d006500 00000000 62006900 6e007500 m.e.....b.i.n.u.
|
00f0 6d006500 00000000 62006900 6e007500 m.e.....b.i.n.u.
|
||||||
@@ -48,7 +48,7 @@ Contents of section .data:
|
|||||||
02b0 72000000 34000800 01005000 72006f00 r...4.....P.r.o.
|
02b0 72000000 34000800 01005000 72006f00 r...4.....P.r.o.
|
||||||
02c0 64007500 63007400 56006500 72007300 d.u.c.t.V.e.r.s.
|
02c0 64007500 63007400 56006500 72007300 d.u.c.t.V.e.r.s.
|
||||||
02d0 69006f00 6e000000 31002e00 30002e00 i.o.n...1...0...
|
02d0 69006f00 6e000000 31002e00 30002e00 i.o.n...1...0...
|
||||||
02e0 30002e00 31000000 44000000 00005600 0...1...D.....V.
|
02e0 30002e00 31000000 44000000 01005600 0...1...D.....V.
|
||||||
02f0 61007200 46006900 6c006500 49006e00 a.r.F.i.l.e.I.n.
|
02f0 61007200 46006900 6c006500 49006e00 a.r.F.i.l.e.I.n.
|
||||||
0300 66006f00 00000000 24000400 00005400 f.o.....$.....T.
|
0300 66006f00 00000000 24000400 00005400 f.o.....$.....T.
|
||||||
0310 72006100 6e007300 6c006100 74006900 r.a.n.s.l.a.t.i.
|
0310 72006100 6e007300 6c006100 74006900 r.a.n.s.l.a.t.i.
|
||||||
|
|||||||
43
binutils/testsuite/binutils-all/windres/version_mlang.rc
Normal file
43
binutils/testsuite/binutils-all/windres/version_mlang.rc
Normal file
@@ -0,0 +1,43 @@
|
|||||||
|
#include "windows.h"
|
||||||
|
|
||||||
|
LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
|
||||||
|
|
||||||
|
VS_VERSION_INFO VERSIONINFO
|
||||||
|
FILEVERSION 1,0,0,1
|
||||||
|
PRODUCTVERSION 1,0,0,1
|
||||||
|
FILEFLAGSMASK 0x3fL
|
||||||
|
FILEFLAGS 0x0L
|
||||||
|
FILEOS 0x4L
|
||||||
|
FILETYPE 0x1L
|
||||||
|
FILESUBTYPE 0x0L
|
||||||
|
BEGIN
|
||||||
|
BLOCK "StringFileInfo"
|
||||||
|
BEGIN
|
||||||
|
BLOCK "040904b0"
|
||||||
|
BEGIN
|
||||||
|
VALUE "CompanyName", "binutils"
|
||||||
|
VALUE "FileDescription", "RC compiler."
|
||||||
|
VALUE "FileVersion", "1.0.0.1"
|
||||||
|
VALUE "InternalName", "windres.exe"
|
||||||
|
VALUE "LegalCopyright", "(c) FSF. All rights are reserved."
|
||||||
|
VALUE "OriginalFilename", "windres.exe"
|
||||||
|
VALUE "ProductName", "windows resource compiler"
|
||||||
|
VALUE "ProductVersion", "1.0.0.1"
|
||||||
|
END
|
||||||
|
BLOCK "041504b0"
|
||||||
|
BEGIN
|
||||||
|
VALUE "CompanyName", "binutils"
|
||||||
|
VALUE "FileDescription", "Kompilator RC."
|
||||||
|
VALUE "FileVersion", "1.0.0.1"
|
||||||
|
VALUE "InternalName", "windres.exe"
|
||||||
|
VALUE "LegalCopyright", "(c) FSF. Wszystkie prawa zastrzezone."
|
||||||
|
VALUE "OriginalFilename", "windres.exe"
|
||||||
|
VALUE "ProductName", "windows resource compiler"
|
||||||
|
VALUE "ProductVersion", "1.0.0.1"
|
||||||
|
END
|
||||||
|
END
|
||||||
|
BLOCK "VarFileInfo"
|
||||||
|
BEGIN
|
||||||
|
VALUE "Translation", 0x0409, 0x04b0, 0x0415, 0x04b0
|
||||||
|
END
|
||||||
|
END
|
||||||
87
binutils/testsuite/binutils-all/windres/version_mlang.rsd
Normal file
87
binutils/testsuite/binutils-all/windres/version_mlang.rsd
Normal file
@@ -0,0 +1,87 @@
|
|||||||
|
0000 00000000 20000000 ffff0000 ffff0000 .... ...........
|
||||||
|
0010 00000000 00000000 00000000 00000000 ................
|
||||||
|
0020 24050000 20000000 ffff1000 ffff0100 $... ...........
|
||||||
|
0030 00000000 00000000 00000000 00000000 ................
|
||||||
|
0040 24053400 00005600 53005f00 56004500 $.4...V.S._.V.E.
|
||||||
|
0050 52005300 49004f00 4e005f00 49004e00 R.S.I.O.N._.I.N.
|
||||||
|
0060 46004f00 00000000 bd04effe 00000100 F.O.............
|
||||||
|
0070 00000100 01000000 00000100 01000000 ................
|
||||||
|
0080 3f000000 00000000 04000000 01000000 ?...............
|
||||||
|
0090 00000000 00000000 00000000 80040000 ................
|
||||||
|
00a0 01005300 74007200 69006e00 67004600 ..S.t.r.i.n.g.F.
|
||||||
|
00b0 69006c00 65004900 6e006600 6f000000 i.l.e.I.n.f.o...
|
||||||
|
00c0 28020000 01003000 34003000 39003000 (.....0.4.0.9.0.
|
||||||
|
00d0 34006200 30000000 32000900 01004300 4.b.0...2.....C.
|
||||||
|
00e0 6f006d00 70006100 6e007900 4e006100 o.m.p.a.n.y.N.a.
|
||||||
|
00f0 6d006500 00000000 62006900 6e007500 m.e.....b.i.n.u.
|
||||||
|
0100 74006900 6c007300 00000000 42000d00 t.i.l.s.....B...
|
||||||
|
0110 01004600 69006c00 65004400 65007300 ..F.i.l.e.D.e.s.
|
||||||
|
0120 63007200 69007000 74006900 6f006e00 c.r.i.p.t.i.o.n.
|
||||||
|
0130 00000000 52004300 20006300 6f006d00 ....R.C. .c.o.m.
|
||||||
|
0140 70006900 6c006500 72002e00 00000000 p.i.l.e.r.......
|
||||||
|
0150 30000800 01004600 69006c00 65005600 0.....F.i.l.e.V.
|
||||||
|
0160 65007200 73006900 6f006e00 00000000 e.r.s.i.o.n.....
|
||||||
|
0170 31002e00 30002e00 30002e00 31000000 1...0...0...1...
|
||||||
|
0180 38000c00 01004900 6e007400 65007200 8.....I.n.t.e.r.
|
||||||
|
0190 6e006100 6c004e00 61006d00 65000000 n.a.l.N.a.m.e...
|
||||||
|
01a0 77006900 6e006400 72006500 73002e00 w.i.n.d.r.e.s...
|
||||||
|
01b0 65007800 65000000 68002200 01004c00 e.x.e...h."...L.
|
||||||
|
01c0 65006700 61006c00 43006f00 70007900 e.g.a.l.C.o.p.y.
|
||||||
|
01d0 72006900 67006800 74000000 28006300 r.i.g.h.t...(.c.
|
||||||
|
01e0 29002000 46005300 46002e00 20004100 ). .F.S.F... .A.
|
||||||
|
01f0 6c006c00 20007200 69006700 68007400 l.l. .r.i.g.h.t.
|
||||||
|
0200 73002000 61007200 65002000 72006500 s. .a.r.e. .r.e.
|
||||||
|
0210 73006500 72007600 65006400 2e000000 s.e.r.v.e.d.....
|
||||||
|
0220 40000c00 01004f00 72006900 67006900 @.....O.r.i.g.i.
|
||||||
|
0230 6e006100 6c004600 69006c00 65006e00 n.a.l.F.i.l.e.n.
|
||||||
|
0240 61006d00 65000000 77006900 6e006400 a.m.e...w.i.n.d.
|
||||||
|
0250 72006500 73002e00 65007800 65000000 r.e.s...e.x.e...
|
||||||
|
0260 54001a00 01005000 72006f00 64007500 T.....P.r.o.d.u.
|
||||||
|
0270 63007400 4e006100 6d006500 00000000 c.t.N.a.m.e.....
|
||||||
|
0280 77006900 6e006400 6f007700 73002000 w.i.n.d.o.w.s. .
|
||||||
|
0290 72006500 73006f00 75007200 63006500 r.e.s.o.u.r.c.e.
|
||||||
|
02a0 20006300 6f006d00 70006900 6c006500 .c.o.m.p.i.l.e.
|
||||||
|
02b0 72000000 34000800 01005000 72006f00 r...4.....P.r.o.
|
||||||
|
02c0 64007500 63007400 56006500 72007300 d.u.c.t.V.e.r.s.
|
||||||
|
02d0 69006f00 6e000000 31002e00 30002e00 i.o.n...1...0...
|
||||||
|
02e0 30002e00 31000000 34020000 01003000 0...1...4.....0.
|
||||||
|
02f0 34003100 35003000 34006200 30000000 4.1.5.0.4.b.0...
|
||||||
|
0300 32000900 01004300 6f006d00 70006100 2.....C.o.m.p.a.
|
||||||
|
0310 6e007900 4e006100 6d006500 00000000 n.y.N.a.m.e.....
|
||||||
|
0320 62006900 6e007500 74006900 6c007300 b.i.n.u.t.i.l.s.
|
||||||
|
0330 00000000 46000f00 01004600 69006c00 ....F.....F.i.l.
|
||||||
|
0340 65004400 65007300 63007200 69007000 e.D.e.s.c.r.i.p.
|
||||||
|
0350 74006900 6f006e00 00000000 4b006f00 t.i.o.n.....K.o.
|
||||||
|
0360 6d007000 69006c00 61007400 6f007200 m.p.i.l.a.t.o.r.
|
||||||
|
0370 20005200 43002e00 00000000 30000800 .R.C.......0...
|
||||||
|
0380 01004600 69006c00 65005600 65007200 ..F.i.l.e.V.e.r.
|
||||||
|
0390 73006900 6f006e00 00000000 31002e00 s.i.o.n.....1...
|
||||||
|
03a0 30002e00 30002e00 31000000 38000c00 0...0...1...8...
|
||||||
|
03b0 01004900 6e007400 65007200 6e006100 ..I.n.t.e.r.n.a.
|
||||||
|
03c0 6c004e00 61006d00 65000000 77006900 l.N.a.m.e...w.i.
|
||||||
|
03d0 6e006400 72006500 73002e00 65007800 n.d.r.e.s...e.x.
|
||||||
|
03e0 65000000 70002600 01004c00 65006700 e...p.&...L.e.g.
|
||||||
|
03f0 61006c00 43006f00 70007900 72006900 a.l.C.o.p.y.r.i.
|
||||||
|
0400 67006800 74000000 28006300 29002000 g.h.t...(.c.). .
|
||||||
|
0410 46005300 46002e00 20005700 73007a00 F.S.F... .W.s.z.
|
||||||
|
0420 79007300 74006b00 69006500 20007000 y.s.t.k.i.e. .p.
|
||||||
|
0430 72006100 77006100 20007a00 61007300 r.a.w.a. .z.a.s.
|
||||||
|
0440 74007200 7a006500 7a006f00 6e006500 t.r.z.e.z.o.n.e.
|
||||||
|
0450 2e000000 40000c00 01004f00 72006900 ....@.....O.r.i.
|
||||||
|
0460 67006900 6e006100 6c004600 69006c00 g.i.n.a.l.F.i.l.
|
||||||
|
0470 65006e00 61006d00 65000000 77006900 e.n.a.m.e...w.i.
|
||||||
|
0480 6e006400 72006500 73002e00 65007800 n.d.r.e.s...e.x.
|
||||||
|
0490 65000000 54001a00 01005000 72006f00 e...T.....P.r.o.
|
||||||
|
04a0 64007500 63007400 4e006100 6d006500 d.u.c.t.N.a.m.e.
|
||||||
|
04b0 00000000 77006900 6e006400 6f007700 ....w.i.n.d.o.w.
|
||||||
|
04c0 73002000 72006500 73006f00 75007200 s. .r.e.s.o.u.r.
|
||||||
|
04d0 63006500 20006300 6f006d00 70006900 c.e. .c.o.m.p.i.
|
||||||
|
04e0 6c006500 72000000 34000800 01005000 l.e.r...4.....P.
|
||||||
|
04f0 72006f00 64007500 63007400 56006500 r.o.d.u.c.t.V.e.
|
||||||
|
0500 72007300 69006f00 6e000000 31002e00 r.s.i.o.n...1...
|
||||||
|
0510 30002e00 30002e00 31000000 48000000 0...0...1...H...
|
||||||
|
0520 01005600 61007200 46006900 6c006500 ..V.a.r.F.i.l.e.
|
||||||
|
0530 49006e00 66006f00 00000000 28000800 I.n.f.o.....(...
|
||||||
|
0540 00005400 72006100 6e007300 6c006100 ..T.r.a.n.s.l.a.
|
||||||
|
0550 74006900 6f006e00 00000000 0904b004 t.i.o.n.........
|
||||||
|
0560 1504b004 ....
|
||||||
@@ -944,6 +944,18 @@ struct __attribute__ ((__packed__)) bin_fixed_versioninfo
|
|||||||
};
|
};
|
||||||
#define BIN_FIXED_VERSIONINFO_SIZE 52
|
#define BIN_FIXED_VERSIONINFO_SIZE 52
|
||||||
|
|
||||||
|
/* A list of string version information. */
|
||||||
|
|
||||||
|
typedef struct rc_ver_stringtable
|
||||||
|
{
|
||||||
|
/* Next item. */
|
||||||
|
struct rc_ver_stringtable *next;
|
||||||
|
/* Language. */
|
||||||
|
unichar *language;
|
||||||
|
/* Strings. */
|
||||||
|
struct rc_ver_stringinfo *strings;
|
||||||
|
} rc_ver_stringtable;
|
||||||
|
|
||||||
/* A list of variable version information. */
|
/* A list of variable version information. */
|
||||||
|
|
||||||
typedef struct rc_ver_info
|
typedef struct rc_ver_info
|
||||||
@@ -957,10 +969,8 @@ typedef struct rc_ver_info
|
|||||||
/* StringFileInfo data. */
|
/* StringFileInfo data. */
|
||||||
struct
|
struct
|
||||||
{
|
{
|
||||||
/* Language. */
|
/* String tables. */
|
||||||
unichar *language;
|
struct rc_ver_stringtable *stringtables;
|
||||||
/* Strings. */
|
|
||||||
struct rc_ver_stringinfo *strings;
|
|
||||||
} string;
|
} string;
|
||||||
/* VarFileInfo data. */
|
/* VarFileInfo data. */
|
||||||
struct
|
struct
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/* windres.h -- header file for windres program.
|
/* windres.h -- header file for windres program.
|
||||||
Copyright 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2005, 2007
|
Copyright 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2005, 2007, 2011
|
||||||
Free Software Foundation, Inc.
|
Free Software Foundation, Inc.
|
||||||
Written by Ian Lance Taylor, Cygnus Support.
|
Written by Ian Lance Taylor, Cygnus Support.
|
||||||
Rewritten by Kai Tietz, Onevision.
|
Rewritten by Kai Tietz, Onevision.
|
||||||
@@ -109,7 +109,8 @@ extern void define_user_data (rc_res_id, rc_res_id, const rc_res_res_info *, rc_
|
|||||||
extern void define_toolbar (rc_res_id, rc_res_res_info *, rc_uint_type ,rc_uint_type ,rc_toolbar_item *);
|
extern void define_toolbar (rc_res_id, rc_res_res_info *, rc_uint_type ,rc_uint_type ,rc_toolbar_item *);
|
||||||
extern void define_user_file (rc_res_id, rc_res_id, const rc_res_res_info *, const char *);
|
extern void define_user_file (rc_res_id, rc_res_id, const rc_res_res_info *, const char *);
|
||||||
extern void define_versioninfo (rc_res_id, rc_uint_type, rc_fixed_versioninfo *, rc_ver_info *);
|
extern void define_versioninfo (rc_res_id, rc_uint_type, rc_fixed_versioninfo *, rc_ver_info *);
|
||||||
extern rc_ver_info *append_ver_stringfileinfo (rc_ver_info *, const char *, rc_ver_stringinfo *);
|
extern rc_ver_info *append_ver_stringfileinfo (rc_ver_info *, rc_ver_stringtable *);
|
||||||
|
extern rc_ver_stringtable *append_ver_stringtable (rc_ver_stringtable *, const char *, rc_ver_stringinfo *);
|
||||||
extern rc_ver_info *append_ver_varfileinfo (rc_ver_info *, const unichar *, rc_ver_varinfo *);
|
extern rc_ver_info *append_ver_varfileinfo (rc_ver_info *, const unichar *, rc_ver_varinfo *);
|
||||||
extern rc_ver_stringinfo *append_verval (rc_ver_stringinfo *, const unichar *, const unichar *);
|
extern rc_ver_stringinfo *append_verval (rc_ver_stringinfo *, const unichar *, const unichar *);
|
||||||
extern rc_ver_varinfo *append_vertrans (rc_ver_varinfo *, rc_uint_type, rc_uint_type);
|
extern rc_ver_varinfo *append_vertrans (rc_ver_varinfo *, rc_uint_type, rc_uint_type);
|
||||||
|
|||||||
Reference in New Issue
Block a user