tc-score.c has if (value == (int) FAIL) { char err_msg[100];
if ((data_type != _SIMM14_NEG) && (data_type != _SIMM16_NEG) && (data_type != _IMM16_NEG)) { sprintf (err_msg, "invalid constant: %d bit expression not in range %d..%d", score_df_range[data_type].bits, score_df_range[data_type].range[0], score_df_range[data_type].range[1]); } else { sprintf (err_msg, "invalid constant: %d bit expression not in range %d..%d", score_df_range[data_type].bits, -score_df_range[data_type].range[1], -score_df_range[data_type].range[0]); } inst.error = _(err_msg); return (int) FAIL; } There are 2 problems: 1. inst.error is pointed to a stack memory and used later to report an error. It is a very bad idea. 2. _() is used on a variable. Shouldn't it be used on a string constant? -- Summary: Score assembler passes stack meory around Product: binutils Version: unspecified Status: NEW Severity: normal Priority: P2 Component: gas AssignedTo: unassigned at sources dot redhat dot com ReportedBy: hjl at lucon dot org CC: bug-binutils at gnu dot org GCC target triplet: score-unknown-elf http://sourceware.org/bugzilla/show_bug.cgi?id=3871 ------- You are receiving this mail because: ------- You are on the CC list for the bug, or are watching someone who is. _______________________________________________ bug-binutils mailing list bug-binutils@gnu.org http://lists.gnu.org/mailman/listinfo/bug-binutils