Fix for GitHub issue #28 - Insufficient string escaping in vvp script.
" characters in strings must be escaped when the compiler writes a quoted string to a vvp script. This patch fixes up a few places where this wasn't being done.
This commit is contained in:
parent
855bf9cfe8
commit
529e029abd
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2001-2012 Stephen Williams (steve@icarus.com)
|
* Copyright (c) 2001-2014 Stephen Williams (steve@icarus.com)
|
||||||
*
|
*
|
||||||
* This source code is free software; you can redistribute it
|
* This source code is free software; you can redistribute it
|
||||||
* and/or modify it in source code form under the terms of the GNU
|
* and/or modify it in source code form under the terms of the GNU
|
||||||
|
|
@ -2151,8 +2151,10 @@ int draw_scope(ivl_scope_t net, ivl_scope_t parent)
|
||||||
}
|
}
|
||||||
|
|
||||||
fprintf(vvp_out, "S_%p .scope %s%s, \"%s\" \"%s\" %d %d",
|
fprintf(vvp_out, "S_%p .scope %s%s, \"%s\" \"%s\" %d %d",
|
||||||
net, prefix, type, vvp_mangle_name(ivl_scope_basename(net)),
|
net, prefix, type,
|
||||||
ivl_scope_tname(net), ivl_file_table_index(ivl_scope_file(net)),
|
vvp_mangle_name(ivl_scope_basename(net)),
|
||||||
|
vvp_mangle_name(ivl_scope_tname(net)),
|
||||||
|
ivl_file_table_index(ivl_scope_file(net)),
|
||||||
ivl_scope_lineno(net));
|
ivl_scope_lineno(net));
|
||||||
|
|
||||||
if (parent) {
|
if (parent) {
|
||||||
|
|
@ -2177,7 +2179,8 @@ int draw_scope(ivl_scope_t net, ivl_scope_t parent)
|
||||||
if( name == 0 )
|
if( name == 0 )
|
||||||
name = "";
|
name = "";
|
||||||
fprintf( vvp_out, " .port_info %u %s %u \"%s\"\n",
|
fprintf( vvp_out, " .port_info %u %s %u \"%s\"\n",
|
||||||
idx, vvp_port_info_type_str(ptype), width, name );
|
idx, vvp_port_info_type_str(ptype), width,
|
||||||
|
vvp_mangle_name(name) );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -2187,7 +2190,7 @@ int draw_scope(ivl_scope_t net, ivl_scope_t parent)
|
||||||
switch (ivl_expr_type(pex)) {
|
switch (ivl_expr_type(pex)) {
|
||||||
case IVL_EX_STRING:
|
case IVL_EX_STRING:
|
||||||
fprintf(vvp_out, "P_%p .param/str \"%s\" %d %d %d, \"%s\";\n",
|
fprintf(vvp_out, "P_%p .param/str \"%s\" %d %d %d, \"%s\";\n",
|
||||||
par, ivl_parameter_basename(par),
|
par, vvp_mangle_name(ivl_parameter_basename(par)),
|
||||||
ivl_parameter_local(par),
|
ivl_parameter_local(par),
|
||||||
ivl_file_table_index(ivl_parameter_file(par)),
|
ivl_file_table_index(ivl_parameter_file(par)),
|
||||||
ivl_parameter_lineno(par),
|
ivl_parameter_lineno(par),
|
||||||
|
|
@ -2195,7 +2198,7 @@ int draw_scope(ivl_scope_t net, ivl_scope_t parent)
|
||||||
break;
|
break;
|
||||||
case IVL_EX_NUMBER:
|
case IVL_EX_NUMBER:
|
||||||
fprintf(vvp_out, "P_%p .param/l \"%s\" %d %d %d, %sC4<",
|
fprintf(vvp_out, "P_%p .param/l \"%s\" %d %d %d, %sC4<",
|
||||||
par, ivl_parameter_basename(par),
|
par, vvp_mangle_name(ivl_parameter_basename(par)),
|
||||||
ivl_parameter_local(par),
|
ivl_parameter_local(par),
|
||||||
ivl_file_table_index(ivl_parameter_file(par)),
|
ivl_file_table_index(ivl_parameter_file(par)),
|
||||||
ivl_parameter_lineno(par),
|
ivl_parameter_lineno(par),
|
||||||
|
|
@ -2211,8 +2214,9 @@ int draw_scope(ivl_scope_t net, ivl_scope_t parent)
|
||||||
case IVL_EX_REALNUM:
|
case IVL_EX_REALNUM:
|
||||||
{ char *res = draw_Cr_to_string(ivl_expr_dvalue(pex));
|
{ char *res = draw_Cr_to_string(ivl_expr_dvalue(pex));
|
||||||
fprintf(vvp_out, "P_%p .param/real \"%s\" %d %d %d, %s; "
|
fprintf(vvp_out, "P_%p .param/real \"%s\" %d %d %d, %s; "
|
||||||
"value=%#g\n", par, ivl_parameter_basename(par),
|
"value=%#g\n", par,
|
||||||
ivl_parameter_local(par),
|
vvp_mangle_name(ivl_parameter_basename(par)),
|
||||||
|
ivl_parameter_local(par),
|
||||||
ivl_file_table_index(ivl_parameter_file(par)),
|
ivl_file_table_index(ivl_parameter_file(par)),
|
||||||
ivl_parameter_lineno(par), res,
|
ivl_parameter_lineno(par), res,
|
||||||
ivl_expr_dvalue(pex));
|
ivl_expr_dvalue(pex));
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue