[Bug debug/25468] [4.0/4.1/4.2 Regression] -g makes g++ loop forever
steven at gcc dot gnu dot org
gcc-bugzilla@gcc.gnu.org
Sat Jul 22 16:36:00 GMT 2006
------- Comment #5 from steven at gcc dot gnu dot org 2006-07-22 16:36 -------
We do the loop-and-putc thing in ASM_OUTPUT_LIMITED_STRING and in
dw2_asm_output_nstring as well. Probably it's best to add some kind of generic
"escaped string" print function, something like the one below that I'll try to
actually make work:
void
asm_output_string_with_escapes (const char *str, size_t len,
const char escapes[255],
const char *escapes_fmt /* e.g. "\\%03o" */
size_t escapes_fmt_len)
{
size_t i, j, len, escaped_len;
char *escaped_str;
escaped_len = len;
for (i = 0; i < len; i++)
{
int c = str[i];
if (c == '\"' || c == '\\')
escaped_len++;
else if (escapes[c])
escaped_len += escapes_fmt_len;
}
str = xmalloc (escaped_len + 1);
for (i = 0, j = 0; i < len; i++)
{
int c = str[i];
if (!escapes[c])
{
if (c == '\"' || c == '\\')
escaped_str[j++] = '\\';
escaped_str[j++] = c;
}
else
{
/* ??? Must also handle things like \t and \b here. */
snprintf (&escaped_str[j], escapes_fmt_len, escapes_fmt, c);
j += escapes_fmt_len;
}
}
escaped_str[j] = '\0';
fputs (escaped_str, asm_out_file);
free (escaped_str);
}
--
steven at gcc dot gnu dot org changed:
What |Removed |Added
----------------------------------------------------------------------------
AssignedTo|unassigned at gcc dot gnu |steven at gcc dot gnu dot
|dot org |org
Status|NEW |ASSIGNED
Last reconfirmed|2006-02-08 04:02:15 |2006-07-22 16:36:32
date| |
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=25468
More information about the Gcc-bugs
mailing list