This is the mail archive of the elfutils-devel@sourceware.org mailing list for the elfutils 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]

Re: [ppc part commit] [patchv2 3/4] unwinder: ppc and ppc64


On Sun, 2013-12-15 at 18:57 +0100, Jan Kratochvil wrote:
> On Thu, 05 Dec 2013 22:25:34 +0100, Mark Wielaard wrote:
> > Yes, the patch seems OK, please just checkin the non-tests parts that
> > don't depend on the ppc64bidir stuff.
> 
> Checked in that part: 5cbf42aaf47195e2c41171786371d55b253a7667

I rebased my mjw/odp branch on top of master with this checked in and
everything looks fine on ppc64 with ppc32 as biarch except for one issue
(using gcc 4.4.7). It looks like this assert is too strong in
tests/backtrace.c (callback_verify):

    case 5:
      /* Verify we trapped on the very last instruction of child.  */
      assert (symname != NULL && strcmp (symname, "backtracegen") == 0);
      mod = dwfl_addrmodule (dwfl, pc);
      if (mod)
        symname2 = dwfl_module_addrname (mod, pc);
      assert (symname2 == NULL || strcmp (symname2, "backtracegen") != 0);
      break;

The disassambly of backtracegen in backtrace-child looks as follows:

Dump of assembler code for function backtracegen:
   0x0000000055e715d0 <+0>:	mflr    r0
   0x0000000055e715d4 <+4>:	li      r3,1
   0x0000000055e715d8 <+8>:	std     r0,16(r1)
   0x0000000055e715dc <+12>:	stdu    r1,-112(r1)
   0x0000000055e715e0 <+16>:	bl      0x55e714d0 <stdarg>
=> 0x0000000055e715e4 <+20>:	.long 0x0
   0x0000000055e715e8 <+24>:	.long 0x1
   0x0000000055e715ec <+28>:	lwz     r0,0(0)
End of assembler dump.

So it looks like some extra padding was included in the function by the
compiler. Should we make this check is_x86_64_native only like the case
3 jmp one?

Thanks,

Mark


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]