X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=binutils%2Frcparse.y;h=4e1690ef066ffe956f90fe81cbf9259e35a2362a;hb=6765ee1825d92d25d9b3f6260de3f8a2a27e4998;hp=e80cbc607842046160e9bf705c35917b306ad245;hpb=81472056d738c3b07914f3dad5edb0f4af45a050;p=deliverable%2Fbinutils-gdb.git diff --git a/binutils/rcparse.y b/binutils/rcparse.y index e80cbc6078..4e1690ef06 100644 --- a/binutils/rcparse.y +++ b/binutils/rcparse.y @@ -1,6 +1,5 @@ %{ /* rcparse.y -- parser for Windows rc files - Copyright 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2005, 2007, 2008, - 2011 Free Software Foundation, Inc. + Copyright (C) 1997-2019 Free Software Foundation, Inc. Written by Ian Lance Taylor, Cygnus Support. Extended by Kai Tietz, Onevision. @@ -563,7 +562,7 @@ control: base_style = BS_AUTO3STATE; class.named = 0; class.u.id = CTL_BUTTON; - res_text_field = $2; + res_text_field = $2; } control_params { @@ -575,7 +574,7 @@ control: base_style = BS_AUTOCHECKBOX; class.named = 0; class.u.id = CTL_BUTTON; - res_text_field = $2; + res_text_field = $2; } control_params { @@ -587,7 +586,7 @@ control: base_style = BS_AUTORADIOBUTTON; class.named = 0; class.u.id = CTL_BUTTON; - res_text_field = $2; + res_text_field = $2; } control_params { @@ -599,7 +598,7 @@ control: base_style = ES_LEFT | WS_BORDER | WS_TABSTOP; class.named = 0; class.u.id = CTL_EDIT; - res_text_field = $2; + res_text_field = $2; } control_params { @@ -614,7 +613,7 @@ control: base_style = BS_CHECKBOX | WS_TABSTOP; class.named = 0; class.u.id = CTL_BUTTON; - res_text_field = $2; + res_text_field = $2; } control_params { @@ -628,7 +627,7 @@ control: base_style = 0; class.named = 0; class.u.id = CTL_COMBOBOX; - res_text_field = res_null_text; + res_text_field = res_null_text; } control_params { @@ -660,7 +659,7 @@ control: base_style = SS_CENTER; class.named = 0; class.u.id = CTL_STATIC; - res_text_field = $2; + res_text_field = $2; } control_params { @@ -672,7 +671,7 @@ control: base_style = BS_DEFPUSHBUTTON | WS_TABSTOP; class.named = 0; class.u.id = CTL_BUTTON; - res_text_field = $2; + res_text_field = $2; } control_params { @@ -684,7 +683,7 @@ control: base_style = ES_LEFT | WS_BORDER | WS_TABSTOP; class.named = 0; class.u.id = CTL_EDIT; - res_text_field = res_null_text; + res_text_field = res_null_text; } control_params { @@ -696,7 +695,7 @@ control: base_style = BS_GROUPBOX; class.named = 0; class.u.id = CTL_BUTTON; - res_text_field = $2; + res_text_field = $2; } control_params { @@ -708,7 +707,7 @@ control: base_style = ES_LEFT | WS_BORDER | WS_TABSTOP; class.named = 0; class.u.id = CTL_EDIT; - res_text_field = $2; + res_text_field = $2; } control_params { @@ -746,7 +745,7 @@ control: base_style = ES_LEFT | WS_BORDER | WS_TABSTOP; class.named = 0; class.u.id = CTL_EDIT; - res_text_field = $2; + res_text_field = $2; } control_params { @@ -761,7 +760,7 @@ control: base_style = LBS_NOTIFY | WS_BORDER; class.named = 0; class.u.id = CTL_LISTBOX; - res_text_field = res_null_text; + res_text_field = res_null_text; } control_params { @@ -773,7 +772,7 @@ control: base_style = SS_LEFT; class.named = 0; class.u.id = CTL_STATIC; - res_text_field = $2; + res_text_field = $2; } control_params { @@ -796,7 +795,7 @@ control: base_style = BS_PUSHBUTTON | WS_TABSTOP; class.named = 0; class.u.id = CTL_BUTTON; - res_text_field = $2; + res_text_field = $2; } control_params { @@ -808,7 +807,7 @@ control: base_style = BS_RADIOBUTTON; class.named = 0; class.u.id = CTL_BUTTON; - res_text_field = $2; + res_text_field = $2; } control_params { @@ -820,7 +819,7 @@ control: base_style = SS_RIGHT; class.named = 0; class.u.id = CTL_STATIC; - res_text_field = $2; + res_text_field = $2; } control_params { @@ -832,7 +831,7 @@ control: base_style = 0; class.named = 0; class.u.id = CTL_SCROLLBAR; - res_text_field = res_null_text; + res_text_field = res_null_text; } control_params { @@ -844,14 +843,14 @@ control: base_style = BS_3STATE; class.named = 0; class.u.id = CTL_BUTTON; - res_text_field = $2; + res_text_field = $2; } control_params { $$ = $4; } | USERBUTTON resref numexpr ',' numexpr ',' numexpr ',' - numexpr ',' numexpr ',' + numexpr ',' numexpr ',' { style = WS_CHILD | WS_VISIBLE; } styleexpr optcnumexpr { @@ -1259,7 +1258,7 @@ rcdata_data: /* Stringtable resources. */ stringtable: - STRINGTABLE suboptions BEG + STRINGTABLE suboptions BEG { sub_res_info = $2; rcparse_rcdata (); } string_data END { rcparse_normal (); } ; @@ -1423,16 +1422,18 @@ fixedverinfo: res_alloc (sizeof (rc_fixed_versioninfo))); memset ($$, 0, sizeof (rc_fixed_versioninfo)); } - | fixedverinfo FILEVERSION numexpr cnumexpr cnumexpr cnumexpr + | fixedverinfo FILEVERSION numexpr optcnumexpr optcnumexpr + optcnumexpr { - $1->file_version_ms = ($3 << 16) | $4; - $1->file_version_ls = ($5 << 16) | $6; + $1->file_version_ms = ($3 << 16) | ($4 & 0xffff); + $1->file_version_ls = ($5 << 16) | ($6 & 0xffff); $$ = $1; } - | fixedverinfo PRODUCTVERSION numexpr cnumexpr cnumexpr cnumexpr + | fixedverinfo PRODUCTVERSION numexpr optcnumexpr optcnumexpr + optcnumexpr { - $1->product_version_ms = ($3 << 16) | $4; - $1->product_version_ls = ($5 << 16) | $6; + $1->product_version_ms = ($3 << 16) | ($4 & 0xffff); + $1->product_version_ls = ($5 << 16) | ($6 & 0xffff); $$ = $1; } | fixedverinfo FILEFLAGSMASK numexpr @@ -1886,12 +1887,12 @@ sizednumexpr: } | sizednumexpr '/' sizednumexpr { - $$.val = $1.val / $3.val; + $$.val = $1.val / ($3.val ? $3.val : 1); $$.dword = $1.dword || $3.dword; } | sizednumexpr '%' sizednumexpr { - $$.val = $1.val % $3.val; + $$.val = $1.val % ($3.val ? $3.val : 1); $$.dword = $1.dword || $3.dword; } | sizednumexpr '+' sizednumexpr @@ -1965,12 +1966,13 @@ sizedposnumexpr: } | sizedposnumexpr '/' sizednumexpr { - $$.val = $1.val / $3.val; + $$.val = $1.val / ($3.val ? $3.val : 1); $$.dword = $1.dword || $3.dword; } | sizedposnumexpr '%' sizednumexpr { - $$.val = $1.val % $3.val; + /* PR 17512: file: 89105a25. */ + $$.val = $1.val % ($3.val ? $3.val : 1); $$.dword = $1.dword || $3.dword; } | sizedposnumexpr '+' sizednumexpr