This is the mail archive of the gdb-patches@sources.redhat.com mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: RFA: add macro commands



Neil Booth <neil@daikokuya.demon.co.uk> writes:
> Jim Blandy wrote:-
> 
> > > It would be nice to have completion only on macro names in these
> > > commands.  But if that cannot be done easily, at least let's disable
> > > completion entirely until something appropriate is coded.
> > 
> > I hadn't thought about completion at all.
> > 
> > Given that the macros are stored in a splay tree, they're all sorted
> > in a way that would make efficient completion straightforward.  So it
> > wouldn't be too hard to write a macro-only completion function.
> 
> Just in case you'd not realized, macro expansions are frequently
> different, depending on location in the source files.

GDB's macro data structures are meant to take into account macros
being #defined, #undefined, and re-#defined, and source files being
#included multiple times, and perhaps #defining different symbols each
time (e.g., under the influence of #if directives).

In order to look up a macro's definition, you need to provide the
macro name, the line number, and a structure representing, not a
source file, but a particular #inclusion of a source file.  The lookup
function returns you the #definition that was in force at that line of
that #inclusion.  (The main source file is treated as the "root"
#inclusion.)

I believe GDB's data structures are as precise as libcpp's linemap
structures and logical line numbers.  I think the linemap structure is
more graceful, though.

For the details, see the data structures in macrotab.h and macrotab.c: 
http://sources.redhat.com/ml/gdb-patches/2002-05/msg00135.html


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]