Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 21 Mar 2011 22:00:25 +0200
From:      Kostik Belousov <kostikbel@gmail.com>
To:        Chagin Dmitry <dchagin@freebsd.org>
Cc:        Xingxing Pan <panxingxing@mprc.pku.edu.cn>, freebsd-hackers@freebsd.org
Subject:   Re: GSoC'11: DWARF2 call frame information
Message-ID:  <20110321200025.GP78089@deviant.kiev.zoral.com.ua>
In-Reply-To: <20110321173204.GA7575@dchagin.static.corbina.ru>
References:  <AANLkTinz6B7fsG7Cjc3ZTZ0OAmsOG8x1P25EfOE7Bt4J@mail.gmail.com> <20110319174115.GA33282@dchagin.static.corbina.ru> <AANLkTimp9qoOFr0VfK1F_r1nE3n_5d7W2-q_vSK_UzgW@mail.gmail.com> <20110320071847.GA10579@dchagin.static.corbina.ru> <AANLkTinxVYZcfvpj4mn7kd%2BfiJ83p7430JSsqxatHCeZ@mail.gmail.com> <20110320181911.GA79862@dchagin.static.corbina.ru> <AANLkTinx%2Bv5ZRr7zq%2BP8gW=umX3PNvhfXpgW8bmUZdtw@mail.gmail.com> <20110321173204.GA7575@dchagin.static.corbina.ru>

next in thread | previous in thread | raw e-mail | index | archive | help

--sTMCexX3B034v4B2
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable

On Mon, Mar 21, 2011 at 08:32:04PM +0300, Chagin Dmitry wrote:
> On Mon, Mar 21, 2011 at 05:36:13PM +0800, Xingxing Pan wrote:
> > 2011/3/21 Chagin Dmitry <dchagin@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
> > >
> >=20
> > Hi Chargin,
> >=20
> > Thank you for your reply.
> > The followings shows how I try to add DWARF for bcopy.
> >=20
> > --- ../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 @@
> >=20
> >  #define _ENTRY(x)      _START_ENTRY; \
> >                         .globl CNAME(x); .type CNAME(x),@function; CNAM=
E(x):
> > -#define        END(x)          .size x, . - x
> > +#define        END(x)          .cfi_endproc; .size x, . - x
> >=20
> >  #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; \
> >=20
> > --- 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
> >=20
> > 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?
> >=20
> > threadB's stack
> > kernel's stack
> > threadA's stack
>=20
>=20
> 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@):
>=20
> 1) Annotate libc, msun, rtld, libthr (you)
1a) Develop and implement a testing plan to verify the implementation.
1b) consider doing full register tracking for assembler code.

> 2) vdso (I'm)
> 3) Annotate signal trampolines (you, after vdso)
>=20
> And i'm going to understand what I need to do to start GSoC for you.
> Thanks!
>=20
>=20
> --=20
> Have fun!
> chd



--sTMCexX3B034v4B2
Content-Type: application/pgp-signature
Content-Disposition: inline

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.11 (FreeBSD)

iEYEARECAAYFAk2HrlkACgkQC3+MBN1Mb4hfYQCg3lmQYglUgzn6Tv2wJOyv5CWn
rQYAn1FK4OTGuqdirl6MVhu/B4aO1XBh
=sCxJ
-----END PGP SIGNATURE-----

--sTMCexX3B034v4B2--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20110321200025.GP78089>