Subject: bug#12036: 24.1.50; xvectype and xpr broken by change in PVEC_TYPE_MASK when macro information not available

From: Eli Zaretskii <[email-masked]>
Date: Fri, 27 Jul 2012 12:40:07 +0300

> Date: Thu, 26 Jul 2012 23:22:40 -0700
> From: Paul Eggert <[email-masked]>
> CC: [email-masked]
> 
> On 07/26/2012 01:10 PM, Eli Zaretskii wrote:
> > Anyway, with tricky macros such as PUBLISH_TO_GDB, I'd think that
> > going back to using variables whose type is the enum would be better,
> 
> Yes, that's right.  Unfortunately this can't be encapsulated as nicely
> as PUBLISH_TO_GDB can, so I reverted the PUBLISH_TO_GDB business
> and went back to the old way of making enums visible, in
> trunk bzr 109224.  Please give it a try.

Thanks, it seems to work now, at least in a few simple tests I ran
here.  However, there's still a small nuisance:

  (gdb) break decode_any_window
  Breakpoint 3 at 0x11de2a8: file window.c, line 149.
  (gdb) r -Q
  Starting program: D:\gnu\bzr\emacs\trunk\src/./oo/i386/emacs.exe -Q
  [New Thread 1452.0x15d4]

  Breakpoint 3, decode_any_window (window=54896461) at window.c:149
  149       if (NILP (window))
  (gdb) n
  152       CHECK_WINDOW (window);
  (gdb) p window
  $1 = 54896461
  (gdb) xtype
  Lisp_Vectorlike
  262144          <<<<<<<<<<<<<<<<<<<<<<

In Emacs 24.1, it does better:

  (gdb) p window
  $1 = 53340677
  (gdb) xtype
  Lisp_Vectorlike
  PVEC_WINDOW

I'm not sure if it will be better to go back to 24.1 behavior and
display PVEC_WINDOW, or change .gdbinit to say something more explicit
and human-readable here, such as "window" (and similarly for other
vector-like types).