diff options
author | Josh Stone <jistone@redhat.com> | 2009-03-18 19:04:54 -0700 |
---|---|---|
committer | Josh Stone <jistone@redhat.com> | 2009-03-18 19:21:19 -0700 |
commit | 219e62c7eeca850d2898fdbfb6b74719195274a6 (patch) | |
tree | 8cc311618e5a2f58bfd4c5345b8c750ea9ca8030 /runtime/itrace.c | |
parent | 8df306c4443bd9dd1397bab6cba7f61cb2d88af9 (diff) | |
download | systemtap-steved-219e62c7eeca850d2898fdbfb6b74719195274a6.tar.gz systemtap-steved-219e62c7eeca850d2898fdbfb6b74719195274a6.tar.xz systemtap-steved-219e62c7eeca850d2898fdbfb6b74719195274a6.zip |
PR9959: improve tracepoint arg type-naming
dwarf_type_name now works with more argument types. There were
three cases that I needed to improve:
- For "const struct foo*", the debuginfo has a const-DIE named "foo"
chained to a struct-DIE named "foo", so we can't assume that seeing a
name means we're down to the base type. The recursion now decends
until it explicitly sees a base_type, typedef, struct, or union.
- For "void*", the debuginfo has a pointer-DIE without any DW_AT_type
after. Now I'm just catching that failed lookup and writing in
"void".
- For "va_list", the debuginfo actually resolves to an internal type
"struct __va_list_tag*", but that struct has no declaration at the
source level. I'm just hacking that exact case to say "va_list"
instead, but it would be nice to find something cleaner...
We'll probably still have problems if any tracepoint uses a function-
pointer argument, but so far I've only seen that as a "void*", which we
now handle ok.
Diffstat (limited to 'runtime/itrace.c')
0 files changed, 0 insertions, 0 deletions