PR binutils/17512
* rcparse.y: Add checks to avoid integer divide by zero.
* rescoff.c (read_coff_rsrc): Add check on the size of the
resource section.
(read_coff_res_dir): Add check on the nesting level.
Check for resource names overrunning the buffer.
* resrc.c (write_rc_messagetable): Update formatting.
Add check of 'elen' being zero.
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.
* rclex.l (YY_NO_UNPUT): Define.
* rcparse.y (null_unichar): New static var.
(res_null_text): Use it rather than attempting to init from wchar_t.
* windres.c: Include assert.h and time.h before getopt.h.
Include config.h and unistd.h too.
* rcparse.y (RCDATA): Allow a filename to be supplied as the parameter.
Parse it with define_rcdata_file().
* resrc.c (define_rcdata_file): New function.
* windres.h: Provide a prototype for the new function.
* resrc.c (define_user_file): Fix typo by replacing "font file" with "file".
(res_null_text): New static const struct res_id object,
with empty unicode name field.
(control): Pop parsing of optresidc up one level. Set
res_text_field to $2 except for controls which do not accept
a text field. Set res_text_field to res_null_text for the
special cases (viz. COMBOBOX, EDITTEXT, LISTBOX, SCROLLBAR).
(control_params): Adjust to use res_text_field rather
than optresidc.
(COMBOBOX): Add comment about discrepency between documented
vs. observed default style.
* resrc.c (define_control): Make first param const.
* windres.h (define_control): Adjust prototype.
testsuite:
* binutils-all/windres/checkbox.rc: New file.
* binutils-all/windres/checkbox.rsd: New file.
* binutils-all/windres/combobox.rc: New file.
* binutils-all/windres/combobox.rsd: New file.
* binutils-all/windres/edittext.rc: New file.
* binutils-all/windres/edittext.rsd: New file.
* binutils-all/windres/listbox.rc: New file.
* binutils-all/windres/listbox.rsd: New file.
* binutils-all/windres/scrollbar.rc: New file.
* binutils-all/windres/scrollbar.rsd: New file.
call to rules that need no lookahead. Check for no lookahead.
* rclex.l (get_string): Correct "strings" list handling.
* resrc.c (read_rc_file): Discard strings.
parameter, not an optional string. Also, call new convenience
function that takes res_id's.
* resrc.c (define_control): missing text means zero-length string,
not zero ID.
(define_icon_control): New.
* windres.h: declare define_icon_control.
all returns with MAYBE_RETURN
(MAYBE_RETURN): new, implement the suppression by returning
IGNORED_TOKEN as needed.
(cpp_line): remember which file we're in, mark data from included
*.h files for suppression.
* rcparse.y (input): allow IGNORED_TOKEN outside of known constructs