[LLVMdev] debug metadata incomplete for array arguments to functions?
dpatel at apple.com
Fri Jul 15 10:42:15 PDT 2011
On Jul 14, 2011, at 9:35 PM, Eli Bendersky <eliben at gmail.com> wrote:
> > This reflects the compiler's view of things correctly, but is problematic for a debugger. The debugger should know that arg_arr refers to a 42-element array and isn't just a pointer into a buffer of unspecified length. This is something the user would expect.
> > On the other hand, the debugger should also get the information that arg_arr is actually a pointer, to be able to get to its values correctly.
> > Is there a way out?
> The only way out is to figure out how to distinguish between these two in front-end AST nodes while emitting LLVM IR. The part of front end that emits debug info for an argument is seeing arg_arr as a pointer to int.
> If you manually patch metadata in llvm IR then you'll get debug info as you expect.
> Suppose one would start writing a patch to Clang to rectify this, how would this information be encoded in the debug metadata, given the dual nature of the arg_arr argument? Is there a mechanism to support it, or is an extension required?
Aha.. dual mode. I am not sure there is a straight forward way in dwarf to explicitly say this type is int
but treat it is a int*.
One possible approach is to use array type in subprogram declaration and use int * in subprogram definition
and teach debugger to understand what you are trying to say.
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the llvm-dev