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.
Instructions for adding tests:
The files *.rc are hand-edited or copied from elsewhere.
The script msupdate is used to generate the *.rsd files, which are
dumps of the RES formatted output of MSVC's RC utility.
Within the *.rc file, the first N lines beginning with a special
comment can control the test. Comments are // /* or # (// is
recommended, as both rc and windres support those). Each line
contains one command:
// parse-only
// xfail *-*-*
// cpparg <preprocessor options passed via --preprocessor-arg>
parse-only must preceed any xfail commands, and indicates that a
comparison with the *.rsd file will not happen. xfail indicates when
a failure is expected. This should only be used for when you are
adding a new test that is known to fail because of a bug in windres,
and it should be removed when the bug is fixed.
You can use pfail or cfail instead of xfail to indicate that only the
parsing or comparing should be xfailed.
The windres tests only run for ix86 targets, because the
MSVC-generated *.rsd files are generated for that.