On Tue, 3 Mar 2009 15:53:09 -0600 Ryan Hill <dirtyepic@xxxxxxxxxx> wrote: > The code in question is: > > 48 #if defined(VGP_x86_linux) > 49 # define GET_REAL_PC_SP_AND_FP(pc, sp, fp) \ > 50 asm("call m_libcassert_get_ip;" \ > 51 "m_libcassert_get_ip: popl %0;" \ > 52 "movl %%esp, %1;" \ > 53 "movl %%ebp, %2;" \ > 54 : "=r" (pc),\ > 55 "=r" (sp),\ > 56 "=r" (fp)); whoops, also: 128 __attribute__ ((noreturn)) 129 static void report_and_quit ( const Char* report, 130 Addr ip, Addr sp, Addr fp, Addr lr ) 131 { 132 Addr stacktop; 133 Addr ips[BACKTRACE_DEPTH]; 134 ThreadState *tst 135 = VG_(get_ThreadState)( VG_(lwpid_to_vgtid)( VG_(gettid)() ) ); 136 137 // If necessary, fake up an ExeContext which is of our actual real CPU 138 // state. Could cause problems if we got the panic/exception within the 139 // execontext/stack dump/symtab code. But it's better than nothing. 140 if (0 == ip && 0 == sp && 0 == fp) { 141 GET_REAL_PC_SP_AND_FP(ip, sp, fp); 142 } -- gcc-porting, by design, by neglect treecleaner, for a fact or just for effect wxwidgets @ gentoo EFFD 380E 047A 4B51 D2BD C64F 8AA8 8346 F9A4 0662
Attachment:
signature.asc
Description: PGP signature