sim_debug: Fixed to produce output when the format string is a bare newline character.

Fixed bitfield output to properly present the prefix when appropriate.

This closes issue #62
This commit is contained in:
Mark Pizzolato 2013-08-21 15:00:01 -07:00
parent 1a48d85d73
commit 18461f510b

17
scp.c
View file

@ -6976,7 +6976,8 @@ void sim_debug_bits(uint32 dbits, DEVICE* dptr, BITFIELD* bitdefs,
uint32 before, uint32 after, int terminate) uint32 before, uint32 after, int terminate)
{ {
if (sim_deb && (dptr->dctrl & dbits)) { if (sim_deb && (dptr->dctrl & dbits)) {
fprintf(sim_deb, "%s", sim_debug_prefix(dbits, dptr)); /* print prefix if required */ if (!debug_unterm)
fprintf(sim_deb, "%s", sim_debug_prefix(dbits, dptr)); /* print prefix if required */
fprint_fields (sim_deb, (t_value)before, (t_value)after, bitdefs); /* print xlation, transition */ fprint_fields (sim_deb, (t_value)before, (t_value)after, bitdefs); /* print xlation, transition */
if (terminate) if (terminate)
fprintf(sim_deb, "\r\n"); fprintf(sim_deb, "\r\n");
@ -7051,11 +7052,13 @@ if (sim_deb && (dptr->dctrl & dbits)) {
for (i = j = 0; i < len; ++i) { for (i = j = 0; i < len; ++i) {
if ('\n' == buf[i]) { if ('\n' == buf[i]) {
if (i > j) { if (i >= j) {
if (debug_unterm) if ((i != j) || (i == 0)) {
fprintf (sim_deb, "%.*s\r\n", i-j, &buf[j]); if (debug_unterm)
else /* print prefix when required */ fprintf (sim_deb, "%.*s\r\n", i-j, &buf[j]);
fprintf (sim_deb, "%s%.*s\r\n", debug_prefix, i-j, &buf[j]); else /* print prefix when required */
fprintf (sim_deb, "%s%.*s\r\n", debug_prefix, i-j, &buf[j]);
}
debug_unterm = 0; debug_unterm = 0;
} }
j = i + 1; j = i + 1;
@ -7065,7 +7068,7 @@ if (sim_deb && (dptr->dctrl & dbits)) {
if (debug_unterm) if (debug_unterm)
fprintf (sim_deb, "%.*s", i-j, &buf[j]); fprintf (sim_deb, "%.*s", i-j, &buf[j]);
else /* print prefix when required */ else /* print prefix when required */
fprintf (sim_deb, "DBG(%.0f)%s> %s %s: %.*s", debug_prefix, i-j, &buf[j]); fprintf (sim_deb, "%s%.*s", debug_prefix, i-j, &buf[j]);
} }
/* Set unterminated flag for next time */ /* Set unterminated flag for next time */