diff options
author | Joel Anderson <joelanderson333@gmail.com> | 2020-06-03 16:44:37 +0100 |
---|---|---|
committer | Nick Clifton <nickc@redhat.com> | 2020-06-03 16:44:37 +0100 |
commit | 913e0fd47321873e1bfecedd73d5882b765fc8e6 (patch) | |
tree | 757a713b5e6bb5d7b396d27cdc2adccd76933ed0 | |
parent | 5144dfba285d9b467016b7a2f72f0240fda7ce8f (diff) | |
download | gdb-913e0fd47321873e1bfecedd73d5882b765fc8e6.zip gdb-913e0fd47321873e1bfecedd73d5882b765fc8e6.tar.gz gdb-913e0fd47321873e1bfecedd73d5882b765fc8e6.tar.bz2 |
[PATCH] fix windmc typedef bug
While a typedef can be specified in message files for the messages following
with the `MessageIdTypedef` directive, only the last typedef was honored by
windmc. This corrects this behavior, matching mc.exe functionality.
* windmc.h (struct mc_node): Add id_typecast field.
* mcparse.y (message): Initialise the id_typecast field.
* windmc.c (write_dbg): Use the id_typecast field as a parameter
when calling write_dbg_define.
(write_header): Likewise.
-rw-r--r-- | binutils/ChangeLog | 8 | ||||
-rw-r--r-- | binutils/mcparse.y | 1 | ||||
-rw-r--r-- | binutils/windmc.c | 4 | ||||
-rw-r--r-- | binutils/windmc.h | 1 |
4 files changed, 12 insertions, 2 deletions
diff --git a/binutils/ChangeLog b/binutils/ChangeLog index ff1e52c..44200c2 100644 --- a/binutils/ChangeLog +++ b/binutils/ChangeLog @@ -1,3 +1,11 @@ +2020-06-03 Joel Anderson <joelanderson333@gmail.com> + + * windmc.h (struct mc_node): Add id_typecast field. + * mcparse.y (message): Initialise the id_typecast field. + * windmc.c (write_dbg): Use the id_typecast field as a parameter + when calling write_dbg_define. + (write_header): Likewise. + 2020-06-03 Alan Modra <amodra@gmail.com> PR 26069 diff --git a/binutils/mcparse.y b/binutils/mcparse.y index 0fbef9b..a274eee 100644 --- a/binutils/mcparse.y +++ b/binutils/mcparse.y @@ -181,6 +181,7 @@ message: cur_node->severity = mc_cur_severity; cur_node->id = ($1 & 0xffffUL); cur_node->vid = ($1 & 0xffffUL) | mc_sefa_val; + cur_node->id_typecast = mcset_msg_id_typedef; mc_last_id = $1; } lang_entities diff --git a/binutils/windmc.c b/binutils/windmc.c index 0aae650..98bb3ad 100644 --- a/binutils/windmc.c +++ b/binutils/windmc.c @@ -821,7 +821,7 @@ write_dbg (FILE *fp) while (h != NULL) { if (h->symbol) - write_dbg_define (fp, h->symbol, mcset_msg_id_typedef); + write_dbg_define (fp, h->symbol, h->id_typecast); h = h->next; } fprintf (fp, " { ("); @@ -908,7 +908,7 @@ write_header (FILE *fp) fprintf (fp, "%s", s); } if (h->symbol) - write_header_define (fp, h->symbol, h->vid, mcset_msg_id_typedef, h->sub); + write_header_define (fp, h->symbol, h->vid, h->id_typecast, h->sub); h = h->next; } } diff --git a/binutils/windmc.h b/binutils/windmc.h index 784ecc8..5c74124 100644 --- a/binutils/windmc.h +++ b/binutils/windmc.h @@ -66,6 +66,7 @@ typedef struct mc_node unichar *symbol; rc_uint_type id; rc_uint_type vid; + unichar *id_typecast; mc_node_lang *sub; } mc_node; |