This is the mail archive of the
systemtap@sourceware.org
mailing list for the systemtap project.
Re: Failures with exelib.exp testcase (was Re: minutes 2010-08-19)
On Thu, 2011-02-03 at 10:33 +0530, K.Prasad wrote:
> > If at all possible lets try with the simple testcase that you posted
> > earlier. If you could just post the output of that and the generated
> > stap-symbols.h file that would make it a bit easier to analyze what is
> > going on.
>
> Oh yes, I could have done that.
>
> > $ stap -vvv -k -e 'probe
> > process("/home/prasadkr/helloworld").function("print_hw")
> > { printf("0x%x : %s\n", uaddr(), usymdata(uaddr())) }' -c ./helloworld
> >
>
> Please find the output of the above probe pasted below and the contents
> of stap-symbols.h in the attachment.
>
> # stap -v -k -e 'probe
> process("/home/prasadkr/helloworld").function("print_hw")
> { printf("0x%x : %s\n", uaddr(), usymdata(uaddr())) }' -c ./helloworld
> Pass 1: parsed user script and 75 library script(s) using 38528virt/30592res/7872shr kb, in 240usr/0sys/246real ms.
> Pass 2: analyzed script: 1 probe(s), 2 function(s), 4 embed(s), 0 global(s) using 143744virt/33216res/9088shr kb, in 30usr/120sys/194real ms.
> Pass 3: translated to C into "/tmp/staps7Q0qG/stap_17236.c" using 143296virt/32896res/8960shr kb, in 20usr/110sys/129real ms.
> Pass 4: compiled C into "stap_17236.ko" in 2730usr/350sys/3105real ms.
> Pass 5: starting run.
> Hello world
> 0x10000530 : 00000011.plt_call.__libc_start_main@@GLIBC_2.3+0+0x188/0x350 [/home/prasadkr/helloworld]
hmmm, so the symbol table inside stap-symbols.h looks precisely the same
as before my patch.
So, I see it doesn't even compile. Which must mean the #ifdef
__powerpc__ is the wrong guard. What should be tested for to see whether
we are compiling on powerpc?
While we figure that out, you could just try thing unconditionally:
diff --git a/translate.cxx b/translate.cxx
index fab3da4..a19e598 100644
--- a/translate.cxx
+++ b/translate.cxx
@@ -5060,13 +5060,13 @@ dump_unwindsyms (Dwfl_Module *m,
}
else
{
-#ifdef __powerpc__
+//#ifdef __powerpc__
// ppc64 uses function descriptors in user space
// XXX - actually check this is a legal address in .odp!
if (GELF_ST_TYPE (sym.st_info) == STT_FUNC
&& name[0] != '.')
- Dwarf_Addr sym_addr = *((Dwarf_Addr *) sym_addr);
-#endif
+ sym_addr = *((Dwarf_Addr *) sym_addr);
+//#endif
if (n > 0)
{
assert (secname != NULL);
Note that it removes the erronious redeclaration of sym_addr too.
Cheers,
Mark