[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Tinycc-devel] Add debug information.
From: |
Michael Matz |
Subject: |
Re: [Tinycc-devel] Add debug information. |
Date: |
Mon, 20 Jan 2020 01:37:55 +0100 (CET) |
User-agent: |
Alpine 2.21 (LSU 202 2017-01-01) |
Hello,
On Sat, 18 Jan 2020, Herman ten Brugge via Tinycc-devel wrote:
Oops. Sent the wrong patch. See correct one in attachment.
I created a path to add debug type information (see attachment).
The patch only supports basic types and array/ptr types of them.
It also doesn't deal with scopes, i.e. represents this incorrectly:
int foo (void) {
int i = 1;
float f;
if (i) {
float i = 1.0;
f = i;
}
return i + f;
}
It's still useful, of course, also with the limitation. Some time ago I
approached the debug problem from that angle first before dealing with
types, see attached patch (which makes all variable be int). But I didn't
like the outcome in that it uses a new data structure for the scopes and
the associated book keeping. The difficulty with stabs is that the
variables for a scope need to be emitted directly _before_ the scope-open
stab, which really goes against the structure of TCCs parser, as the
open/close stabs still need to form a correct nesting, so there's no
natural place to emit the variable stabs :-/
Ciao,
Michael.
So:
int main(int argc, char *argv[])
is supported.
Other things like structs/unions/enums/bitfields are all translated to
void.
This should probably change in the future.
I also generate a new type whenever I see a pointer or array.
This creates a lot of types but gdb seems happy with it.
If I compile tcc with bounds-checking I see 1473 types.
In the future types should be optimized.
Can I apply this patch?
tcc-add-dbg.diff
Description: Text Data