Mail Archives: djgpp-workers/1998/08/10/13:46:55
------- Start of forwarded message -------
Date: Mon, 10 Aug 1998 03:01:40 +0000 ( )
From: "Gurunandan R. Bhat" <grbhat AT unigoa DOT ernet DOT in>
To: dj AT delorie DOT com
Subject: Problem with process_coff()
Mime-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII
Greetings,
I had a problem with running fsdb on a simple "Hello World!"
program and have traced the problem to a loop in process_coff(...)
(src/debug/common/syms.c). The relevant lines (290:300) are:
if (l_pending)
{
int lbase = f_aux[i+1].x_sym.x_misc.x_lnsz.x_lnno - 1;
int i2;
l->l_lnno = lbase;
l++;
for (i2=0; l[i2].l_lnno; i2++)
l[i2].l_lnno += lbase;
l_pending = 0;
}
I think the problem here is that "l" (set in an earlier pass of the outer
loop) should not be incremented when it points to the last entry in line
number info table for the section. If this is done, the limit of the loop
becomes bad and the loop overwrites malloc's internal tables causing a
crash after the next malloc.
I would be extremely grateful for your comments and help.
With thanks and warmest regards
Gurunandan
------- End of forwarded message -------
- Raw text -