From: Nick Desaulniers <ndesaulniers@google.com> To: Nathan Huckleberry <nhuck@google.com>, Catalin Marinas <catalin.marinas@arm.com> Cc: "Russell King" <linux@armlinux.org.uk>, "Linux ARM" <linux-arm-kernel@lists.infradead.org>, LKML <linux-kernel@vger.kernel.org>, clang-built-linux <clang-built-linux@googlegroups.com>, "Miles Chen (陳民樺)" <miles.chen@mediatek.com>, "Tri Vo" <trong@google.com>, "Arnd Bergmann" <arnd@arndb.de>, "Ard Biesheuvel" <ard.biesheuvel@linaro.org> Subject: Re: [PATCH] ARM: UNWINDER_FRAME_POINTER implementation for Clang Date: Wed, 21 Aug 2019 19:33:02 -0700 [thread overview] Message-ID: <CAKwvOd=Uvzw5_azQuSjUovSEDTNAaB=pTht1-zMiA8mqfmJ0zw@mail.gmail.com> (raw) In-Reply-To: <CAJkfWY4cHz+i8kYg2i1Krs-32nh7-WQU+psT=DRGYnTje6yj4Q@mail.gmail.com> On Wed, Aug 21, 2019 at 10:43 AM Nathan Huckleberry <nhuck@google.com> wrote: > > On Tue, Aug 20, 2019 at 2:39 PM Nick Desaulniers > <ndesaulniers@google.com> wrote: > > > > On Tue, Aug 20, 2019 at 12:44 PM Nathan Huckleberry <nhuck@google.com> wrote: ...snip... > > > +tst r1, #0x10 @ 26 or 32-bit mode? > > > +moveq mask, #0xfc000003 > > > > Should we be using different masks for ARM vs THUMB as per the > > reference implementation? > The change that introduces the arm/thumb code looked like a script > that was run over all arm in the kernel. Neither this code nor the > reference solution is compatible with arm, so there's no need for the > change. Looks like you're referring to commit 8b592783a2e8 ("Thumb-2: Implement the unified arch/arm/lib functions"). Currently, arch/arm/Kconfig.debug has: 57 config UNWINDER_FRAME_POINTER 58 bool "Frame pointer unwinder" 59 depends on !THUMB2_KERNEL && !CC_IS_CLANG So it looks like UNWINDER_FRAME_POINTER and THUMB2_KERNEL are mutually exclusive. Probably could send a patch cleaning that up. (ie. removing the different masks; essentially removing the hunk from arch/arm/lib/backtrace.S from 8b592783a2e8). > > > +for_each_frame: tst frame, mask @ Check for address exceptions > > > + bne no_frame > > > + > > > +/* > > > + * sv_fp is the stack frame with the locals for the current considered > > > + * function. > > > + * sv_pc is the saved lr frame the frame above. This is a pointer to a > > > + * code address within the current considered function, but > > > + * it is not the function start. This value gets updated to be > > > + * the function start later if it is possible. > > > + */ > > > +1001: ldr sv_pc, [frame, #4] @ get saved 'pc' > > > +1002: ldr sv_fp, [frame, #0] @ get saved fp > > > > The reference implementation applies the mask to sv_pc and sv_fp. I > > assume we want to, too? > The mask is already applied to both. See for_each_frame: ah, under the finished_setup label. -- Thanks, ~Nick Desaulniers
WARNING: multiple messages have this Message-ID (diff)
From: Nick Desaulniers <ndesaulniers@google.com> To: Nathan Huckleberry <nhuck@google.com>, Catalin Marinas <catalin.marinas@arm.com> Cc: "Tri Vo" <trong@google.com>, "Arnd Bergmann" <arnd@arndb.de>, "Ard Biesheuvel" <ard.biesheuvel@linaro.org>, "Russell King" <linux@armlinux.org.uk>, LKML <linux-kernel@vger.kernel.org>, clang-built-linux <clang-built-linux@googlegroups.com>, "Miles Chen (陳民樺)" <miles.chen@mediatek.com>, "Linux ARM" <linux-arm-kernel@lists.infradead.org> Subject: Re: [PATCH] ARM: UNWINDER_FRAME_POINTER implementation for Clang Date: Wed, 21 Aug 2019 19:33:02 -0700 [thread overview] Message-ID: <CAKwvOd=Uvzw5_azQuSjUovSEDTNAaB=pTht1-zMiA8mqfmJ0zw@mail.gmail.com> (raw) In-Reply-To: <CAJkfWY4cHz+i8kYg2i1Krs-32nh7-WQU+psT=DRGYnTje6yj4Q@mail.gmail.com> On Wed, Aug 21, 2019 at 10:43 AM Nathan Huckleberry <nhuck@google.com> wrote: > > On Tue, Aug 20, 2019 at 2:39 PM Nick Desaulniers > <ndesaulniers@google.com> wrote: > > > > On Tue, Aug 20, 2019 at 12:44 PM Nathan Huckleberry <nhuck@google.com> wrote: ...snip... > > > +tst r1, #0x10 @ 26 or 32-bit mode? > > > +moveq mask, #0xfc000003 > > > > Should we be using different masks for ARM vs THUMB as per the > > reference implementation? > The change that introduces the arm/thumb code looked like a script > that was run over all arm in the kernel. Neither this code nor the > reference solution is compatible with arm, so there's no need for the > change. Looks like you're referring to commit 8b592783a2e8 ("Thumb-2: Implement the unified arch/arm/lib functions"). Currently, arch/arm/Kconfig.debug has: 57 config UNWINDER_FRAME_POINTER 58 bool "Frame pointer unwinder" 59 depends on !THUMB2_KERNEL && !CC_IS_CLANG So it looks like UNWINDER_FRAME_POINTER and THUMB2_KERNEL are mutually exclusive. Probably could send a patch cleaning that up. (ie. removing the different masks; essentially removing the hunk from arch/arm/lib/backtrace.S from 8b592783a2e8). > > > +for_each_frame: tst frame, mask @ Check for address exceptions > > > + bne no_frame > > > + > > > +/* > > > + * sv_fp is the stack frame with the locals for the current considered > > > + * function. > > > + * sv_pc is the saved lr frame the frame above. This is a pointer to a > > > + * code address within the current considered function, but > > > + * it is not the function start. This value gets updated to be > > > + * the function start later if it is possible. > > > + */ > > > +1001: ldr sv_pc, [frame, #4] @ get saved 'pc' > > > +1002: ldr sv_fp, [frame, #0] @ get saved fp > > > > The reference implementation applies the mask to sv_pc and sv_fp. I > > assume we want to, too? > The mask is already applied to both. See for_each_frame: ah, under the finished_setup label. -- Thanks, ~Nick Desaulniers _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
next prev parent reply other threads:[~2019-08-22 2:33 UTC|newest] Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top 2019-08-20 19:43 [PATCH] ARM: UNWINDER_FRAME_POINTER implementation for Clang Nathan Huckleberry 2019-08-20 19:43 ` Nathan Huckleberry 2019-08-20 21:39 ` Nick Desaulniers 2019-08-20 21:39 ` Nick Desaulniers 2019-08-21 17:43 ` Nathan Huckleberry 2019-08-21 17:43 ` Nathan Huckleberry 2019-08-21 17:46 ` [PATCH v2] " Nathan Huckleberry 2019-08-21 17:46 ` Nathan Huckleberry 2019-08-22 3:26 ` Nick Desaulniers 2019-08-22 3:26 ` Nick Desaulniers 2019-08-22 18:30 ` [PATCH v3] " Nathan Huckleberry 2019-08-22 18:30 ` Nathan Huckleberry 2019-08-22 20:02 ` Nick Desaulniers 2019-08-22 20:02 ` Nick Desaulniers 2019-08-23 5:28 ` Nathan Chancellor 2019-08-23 5:28 ` Nathan Chancellor 2019-08-22 2:33 ` Nick Desaulniers [this message] 2019-08-22 2:33 ` [PATCH] " Nick Desaulniers
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to='CAKwvOd=Uvzw5_azQuSjUovSEDTNAaB=pTht1-zMiA8mqfmJ0zw@mail.gmail.com' \ --to=ndesaulniers@google.com \ --cc=ard.biesheuvel@linaro.org \ --cc=arnd@arndb.de \ --cc=catalin.marinas@arm.com \ --cc=clang-built-linux@googlegroups.com \ --cc=linux-arm-kernel@lists.infradead.org \ --cc=linux-kernel@vger.kernel.org \ --cc=linux@armlinux.org.uk \ --cc=miles.chen@mediatek.com \ --cc=nhuck@google.com \ --cc=trong@google.com \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.