aboutsummaryrefslogtreecommitdiff
path: root/binutils
diff options
context:
space:
mode:
authorJoel Anderson <joelanderson333@gmail.com>2020-06-03 16:44:37 +0100
committerNick Clifton <nickc@redhat.com>2020-06-03 16:44:37 +0100
commit913e0fd47321873e1bfecedd73d5882b765fc8e6 (patch)
tree757a713b5e6bb5d7b396d27cdc2adccd76933ed0 /binutils
parent5144dfba285d9b467016b7a2f72f0240fda7ce8f (diff)
downloadfsf-binutils-gdb-913e0fd47321873e1bfecedd73d5882b765fc8e6.zip
fsf-binutils-gdb-913e0fd47321873e1bfecedd73d5882b765fc8e6.tar.gz
fsf-binutils-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.
Diffstat (limited to 'binutils')
-rw-r--r--binutils/ChangeLog8
-rw-r--r--binutils/mcparse.y1
-rw-r--r--binutils/windmc.c4
-rw-r--r--binutils/windmc.h1
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;