GSoC'11: DWARF2 call frame information
Chagin Dmitry
dchagin at freebsd.org
Mon Mar 21 17:32:27 UTC 2011
On Mon, Mar 21, 2011 at 05:36:13PM +0800, Xingxing Pan wrote:
> 2011/3/21 Chagin Dmitry <dchagin at freebsd.org>:
> >> powerfull script.
> >>
> >> Xingxing Pan
> >
> > hmm, which script? I think enough amd64, i386 and amd64/ia32.
> >
> > I suggest to write a example before continuing the conversation
> > about the GSoC. For example (bcopy || bzero) && cpu_switch.
> > Is it ok for you?
> >
> > --
> > Have fun!
> > chd
> >
>
> Hi Chargin,
>
> Thank you for your reply.
> The followings shows how I try to add DWARF for bcopy.
>
> --- ../8.2.0/sys/i386/include/asm.h 2011-03-21 14:35:56.111973722 +0800
> +++ asm.h 2011-03-21 15:25:31.564636162 +0800
> @@ -71,7 +71,7 @@
>
> #define _ENTRY(x) _START_ENTRY; \
> .globl CNAME(x); .type CNAME(x), at function; CNAME(x):
> -#define END(x) .size x, . - x
> +#define END(x) .cfi_endproc; .size x, . - x
>
> #ifdef PROF
> #define ALTENTRY(x) _ENTRY(x); \
> @@ -80,9 +80,10 @@
> popl %ebp; \
> jmp 9f
> #define ENTRY(x) _ENTRY(x); \
> - pushl %ebp; movl %esp,%ebp; \
> + .cfi_startproc; \
> + pushl %ebp; .cfi_adjust_cfa_offset 4; movl
> %esp,%ebp; .cfi_def_cfa_register %ebp; \
> call PIC_PLT(HIDENAME(mcount)); \
> - popl %ebp; \
> + popl %ebp; .cfi_def_cfa %esp, 4; \
>
> --- bcopy.S 2011-03-21 15:51:26.804203809 +0800
> +++ ../8.2.0/lib/libc/i386/string/bcopy.S 2011-03-21
> 14:28:15.023069890 +0800
> @@ -51,9 +51,7 @@ ENTRY(bcopy)
> #endif
> #endif
> pushl %esi
> - .cfi_adjust_cfa_offset 4;
> pushl %edi
> - .cfi_adjust_cfa_offset 4;
> #if defined(MEMCOPY) || defined(MEMMOVE)
> movl 12(%esp),%edi
> movl 16(%esp),%esi
> @@ -77,9 +75,7 @@ ENTRY(bcopy)
> rep
> movsb
> popl %edi
> - .cfi_adjust_cfa_offset -4;
> popl %esi
> - .cfi_adjust_cfa_offset -4;
> ret
> 1:
> addl %ecx,%edi /* copy backwards. */
> @@ -98,9 +94,7 @@ ENTRY(bcopy)
> rep
> movsl
> popl %edi
> - .cfi_adjust_cfa_offset -4;
> popl %esi
> - .cfi_adjust_cfa_offset -4;
> cld
> ret
> #ifdef MEMCOPY
>
> But I don't know how to add DWARF for cpu_switch, because I have no
> idea about the circumstance when we need to backtrace through this
> function. Suppose there's a cpu switch like this,
> threadA->kernel->threadB. Then should the expected backtrace has the
> following result?
>
> threadB's stack
> kernel's stack
> threadA's stack
hmm, ok. good, avoid cpu_switch.
First of all, please, read style(9) man page.
In the second, evaluate the proposed plan (discussed with kib@):
1) Annotate libc, msun, rtld, libthr (you)
2) vdso (I'm)
3) Annotate signal trampolines (you, after vdso)
And i'm going to understand what I need to do to start GSoC for you.
Thanks!
--
Have fun!
chd
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 196 bytes
Desc: not available
Url : http://lists.freebsd.org/pipermail/freebsd-hackers/attachments/20110321/6081b30d/attachment.pgp
More information about the freebsd-hackers
mailing list