This is the mail archive of the
elfutils-devel@sourceware.org
mailing list for the elfutils project.
Re: [ppc part commit] [patchv2 3/4] unwinder: ppc and ppc64
- From: Mark Wielaard <mjw at redhat dot com>
- To: elfutils-devel at lists dot fedorahosted dot org
- Date: Wed, 18 Dec 2013 17:55:49 +0100
- Subject: 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