emacs-pretest-bug
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: gdb emacs reporting 'Function "x_error_quitter" not defined' [includ


From: Andrew M. Scott
Subject: Re: gdb emacs reporting 'Function "x_error_quitter" not defined' [includes PATCH]
Date: Mon, 31 Jan 2005 10:07:08 -0700

Recapping: 
Applying Gary Lawrence Murphy's patch
http://lists.gnu.org/archive/html/bug-gnu-emacs/2005-01/msg00335.html
to xterm.c just prior to RMS's 1/24/2005 xterm.c patch, and compiling
with gcc-3.4.2 results in:

    >> gcc-3.4.2: $ nm xterm.o | grep quitter 
    >> 0000c900 T x_error_quitter 
    >> 0000c5f0 t x_io_error_quitter

    rms> This shows the function was not discarded. If it is not
    rms> static, it cannot be discarded. But this does not tell us if
    rms> the function was actually inlined. It might have been inlined
    rms> *and* compiled straight.

    rms> The only way to tell if it was inlined is to look at the
    rms> compiled code of x_error_handler and see if it calls
    rms> x_error_quitter. You could do that by using x/i in GDB. First
    rms> do `x/i &x_error_handler'. Then x/10i will print 10 more
    rms> instructions, each time you do it.

    rms> Andrew, could you try that?

chlr4917.ascott.504> gdb ./emacs
GNU gdb 6.3
Breakpoint 1 at 0x80e6d56: file /stor/garray/src/savannah/emacs/src/emacs.c, 
line 454.
Breakpoint 2 at 0x80ca167: file /stor/garray/src/savannah/emacs/src/xterm.c, 
line 7787.
(gdb) x/i &x_error_handler
0x80ca1d0 <x_error_handler>:    push   %ebp
(gdb) x/10i
0x80ca1d1 <x_error_handler+1>:  mov    %esp,%ebp
0x80ca1d3 <x_error_handler+3>:  sub    $0x18,%esp
0x80ca1d6 <x_error_handler+6>:  mov    0x82c876c,%eax
0x80ca1db <x_error_handler+11>: mov    0x8(%ebp),%ecx
0x80ca1de <x_error_handler+14>: mov    0xc(%ebp),%edx
0x80ca1e1 <x_error_handler+17>: cmp    0x82ff394,%eax
0x80ca1e7 <x_error_handler+23>: je     0x80ca210 <x_error_handler+64>
0x80ca1e9 <x_error_handler+25>: movl   $0xc8,0xc(%esp)
0x80ca1f1 <x_error_handler+33>: and    $0xfffffff8,%eax
0x80ca1f4 <x_error_handler+36>: mov    0xc(%eax),%eax
(gdb) x/10i
0x80ca1f7 <x_error_handler+39>: mov    %eax,0x8(%esp)
0x80ca1fb <x_error_handler+43>: movzbl 0x10(%edx),%eax
0x80ca1ff <x_error_handler+47>: mov    %ecx,(%esp)
0x80ca202 <x_error_handler+50>: mov    %eax,0x4(%esp)
0x80ca206 <x_error_handler+54>: call   0x804f588 <floor+496>
0x80ca20b <x_error_handler+59>: leave  
0x80ca20c <x_error_handler+60>: xor    %eax,%eax
0x80ca20e <x_error_handler+62>: ret    
0x80ca20f <x_error_handler+63>: nop    
0x80ca210 <x_error_handler+64>: mov    %edx,0x4(%esp)
(gdb) x/10i
0x80ca214 <x_error_handler+68>: mov    %ecx,(%esp)
0x80ca217 <x_error_handler+71>: call   0x80ca150 <x_error_quitter>
0x80ca21c <x_error_handler+76>: leave  
0x80ca21d <x_error_handler+77>: xor    %eax,%eax
0x80ca21f <x_error_handler+79>: ret    
0x80ca220 <x_process_timeouts>: push   %ebp
0x80ca221 <x_process_timeouts+1>:       mov    %esp,%ebp
0x80ca223 <x_process_timeouts+3>:       sub    $0x8,%esp
0x80ca226 <x_process_timeouts+6>:       mov    0x82c85ec,%eax
0x80ca22b <x_process_timeouts+11>:      test   %eax,%eax
(gdb) x/10i
0x80ca22d <x_process_timeouts+13>:      je     0x80ca290 
<x_process_timeouts+112>
0x80ca22f <x_process_timeouts+15>:      incl   0x82fa258
0x80ca235 <x_process_timeouts+21>:      jmp    0x80ca24d <x_process_timeouts+45>
0x80ca237 <x_process_timeouts+23>:      mov    $0x2,%ecx
0x80ca23c <x_process_timeouts+28>:      mov    %ecx,0x4(%esp)
0x80ca240 <x_process_timeouts+32>:      mov    0x82f9f94,%eax
0x80ca245 <x_process_timeouts+37>:      mov    %eax,(%esp)
0x80ca248 <x_process_timeouts+40>:      call   0x804f778 
<jpeg_resync_to_restart+384>
0x80ca24d <x_process_timeouts+45>:      mov    0x82f9f94,%eax
0x80ca252 <x_process_timeouts+50>:      mov    %eax,(%esp)
(gdb) x/10i
0x80ca255 <x_process_timeouts+53>:      call   0x804e238 <_init+208>
0x80ca25a <x_process_timeouts+58>:      test   $0x2,%al
0x80ca25c <x_process_timeouts+60>:      jne    0x80ca237 <x_process_timeouts+23>
0x80ca25e <x_process_timeouts+62>:      mov    0x82fa258,%eax
0x80ca263 <x_process_timeouts+67>:      dec    %eax
0x80ca264 <x_process_timeouts+68>:      test   %eax,%eax
0x80ca266 <x_process_timeouts+70>:      mov    %eax,0x82fa258
0x80ca26b <x_process_timeouts+75>:      jne    0x80ca282 <x_process_timeouts+98>
0x80ca26d <x_process_timeouts+77>:      mov    0x82fa218,%edx
0x80ca273 <x_process_timeouts+83>:      test   %edx,%edx
(gdb) x/10i
0x80ca275 <x_process_timeouts+85>:      jne    0x80ca2a1 
<x_process_timeouts+129>
0x80ca277 <x_process_timeouts+87>:      mov    0x8303bd0,%eax
0x80ca27c <x_process_timeouts+92>:      test   %eax,%eax
0x80ca27e <x_process_timeouts+94>:      jne    0x80ca29b 
<x_process_timeouts+123>
0x80ca280 <x_process_timeouts+96>:      leave  
0x80ca281 <x_process_timeouts+97>:      ret    
0x80ca282 <x_process_timeouts+98>:      jge    0x80ca280 <x_process_timeouts+96>
0x80ca284 <x_process_timeouts+100>:     call   0x80e6d50 <abort>
0x80ca289 <x_process_timeouts+105>:     lea    0x0(%esi),%esi
0x80ca290 <x_process_timeouts+112>:     call   0x80862d0 <popup_activated>
(gdb) x/10i
0x80ca295 <x_process_timeouts+117>:     test   %eax,%eax
0x80ca297 <x_process_timeouts+119>:     jne    0x80ca22f <x_process_timeouts+15>
0x80ca299 <x_process_timeouts+121>:     leave  
0x80ca29a <x_process_timeouts+122>:     ret    
0x80ca29b <x_process_timeouts+123>:     leave  
0x80ca29c <x_process_timeouts+124>:     jmp    0x8187c50 <do_pending_atimers>
0x80ca2a1 <x_process_timeouts+129>:     call   0x80eff40 <reinvoke_input_signal>
0x80ca2a6 <x_process_timeouts+134>:     jmp    0x80ca277 <x_process_timeouts+87>
0x80ca2a8 <x_process_timeouts+136>:     nop    
0x80ca2a9 <x_process_timeouts+137>:     lea    0x0(%esi),%esi
(gdb) 





reply via email to

[Prev in Thread] Current Thread [Next in Thread]