This is the mail archive of the
mailing list for the elfutils project.
Re: frame unwinding patches
- From: Ulf Hermann <ulf dot hermann at qt dot io>
- To: Mark Wielaard <mark at klomp dot org>
- Cc: <elfutils-devel at sourceware dot org>
- Date: Wed, 26 Apr 2017 12:38:46 +0200
- Subject: Re: frame unwinding patches
- Authentication-results: sourceware.org; auth=none
- Authentication-results: sourceware.org; dkim=none (message not signed) header.d=none;sourceware.org; dmarc=none action=none header.from=qt.io;
- Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qtcompany.onmicrosoft.com; s=selector1-qt-io; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=rAWMMRYssanwlEEXi1yJQmkRr6/AWbFLq7Ezg0cFW8M=; b=Fjni4dsuNQt0Tq9iMfspbP1orGbDekMFr4BleZq9aUfybkk+jWtVbnnqy8qAfzX2KQBnog4s+nqHNpTcG0T9br0EygFkXde5OFiVF02rhehrf8nnQOMEcc4uE5LYCA/yz1FmpTWGFaUzGQvd2ZoQTpFswDyixKFE7C5sm7hKCJE=
- References: <firstname.lastname@example.org> <3915502.JGE1jdPxOT@milian-kdab2> <email@example.com> <20170403211516.GB9584@stream> <firstname.lastname@example.org> <email@example.com> <firstname.lastname@example.org> <email@example.com> <firstname.lastname@example.org>
- Spamdiagnosticmetadata: NSPM
- Spamdiagnosticoutput: 1:99
> I dropped the arm32 frame pointer unwinder for now (maybe we need a less
> demanding testcase for that or, more awesome, add code to translate the
> exidx section for that).
Another problem is that QV4-generated code on a new frame pushes LR first and then FP. Code generated by gcc with "-arm -mapcs-frame -fno-omit-frame-pointer" pushes FP first and then LR. The libc raise() I have here miraculously does the same as QV4. Also, QV4 can alternatively use either r11 or r7 for LR, depending on if we're in ARM or THUMB mode (which I cannot detect in the unwind hook). As that is written somewhere in AAPCS, I guess you can coax gcc to do the same thing (but just leaving out the "-arm" above simply leads to no frame pointers at all).
Well, let's forget about this for now. I'll keep something that works with QV4 in ARM mode and ignore everything else.