This is the mail archive of the
mailing list for the GDB project.
Re: Request/question from RMS
> Date: Thu, 10 Jan 2002 09:45:26 -0500
>> From: Andrew Cagney <email@example.com>
>> > In Emacs .gdbinit I found this:
>> > define xreload
>> > set $valmask = ((long)1 << gdb_valbits) - 1
>> > set $nonvalbits = gdb_emacs_intbits - gdb_valbits
>> > end
>> > I think GDB should avoid making this necessary--that it should
>> > reread .gdbinit when it reloads the executable. Or there should
>> > be a certain user-defined command that will be run after GDB
>> > reloads the executable.
>> I know there are now things like posthook-run commands. However,
>> without knowing how EMACS uses the above (I've no desire to debug emacs,
>> debugging mozilla was scary enough :-^) it is hard to suggest a replacement.
> Here's an example of how this is used:
> define xint
> print (($ & $valmask) << $nonvalbits) >> $nonvalbits
> document xint
> Print $, assuming it is an Emacs Lisp integer. This gets the sign right.
> define xsymbol
> print (struct Lisp_Symbol *) ((((int) $) & $valmask) | gdb_data_seg_bits)
> output (char*)$->name->data
> echo \n
> document xsymbol
> Print the name and address of the symbol $.
> This command assumes that $ is an Emacs Lisp symbol value.
This suggests that:
set $valmask = ((long)1 << gdb_valbits) - 1
set $nonvalbits = gdb_emacs_intbits - gdb_valbits
should do the trick.