This is the mail archive of the gcc-help@gcc.gnu.org mailing list for the GCC 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] | |
On Tue, 3 Mar 2009 15:53:09 -0600
Ryan Hill <dirtyepic@gentoo.org> 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
| Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
|---|---|---|
| Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |