[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20170522221116.onntuq7rinnqudcw@treble>
Date: Mon, 22 May 2017 17:11:16 -0500
From: Josh Poimboeuf <jpoimboe@...hat.com>
To: "H. Peter Anvin" <hpa@...or.com>
Cc: "H.J. Lu" <hjl.tools@...il.com>, Andy Lutomirski <luto@...nel.org>,
"linux-kernel@...r.kernel.org" <linux-kernel@...r.kernel.org>,
Jiri Slaby <jslaby@...e.cz>,
Andrew Morton <akpm@...ux-foundation.org>,
live-patching@...r.kernel.org,
Thomas Gleixner <tglx@...utronix.de>,
Ingo Molnar <mingo@...hat.com>,
the arch/x86 maintainers <x86@...nel.org>,
Jiri Kosina <jikos@...nel.org>,
Linus Torvalds <torvalds@...ux-foundation.org>
Subject: Re: [PATCH 7/7] DWARF: add the config option
On Mon, May 22, 2017 at 02:37:50PM -0700, H. Peter Anvin wrote:
> On 05/22/17 14:07, H. Peter Anvin wrote:
> > On 05/20/17 13:01, H.J. Lu wrote:
> >> On Sat, May 20, 2017 at 9:20 AM, Josh Poimboeuf <jpoimboe@...hat.com> wrote:
> >>
> >>>>
> >>>> (H.J., could we get a binutils feature that allows is to do:
> >>>>
> >>>> pushq %whatever
> >>>> .cfi_adjust_sp -8
> >>>> ...
> >>>> popq %whatever
> >>>> .cfi_adjust_sp 8
> >>>>
> >>
> >> Np. Compiler needs to generate this.
> >>
> >
> > For actual assembly we have such a feature, it is called macros.
> >
> > push/pop is the easy stuff; macros take care of that, but the real pain
> > is dealing with the flow of control.
> >
>
> My biggest beef with the CFI directives that gas uses is that there is
> that .cfi_remember_state/.cfi_restore_state doesn't have a way to
> specify more than one state. That makes it really hard to get sanity
> around control flow changes, especially with code that is intentionally
> out of line.
>
> That, and some of the CFI directives seem to be a bit ill-defined in
> their definition (are they even applicable to anything other than
> DWARF?) They almost seem to be referencing some external specification,
> but the only thing I'm finding is the DWARF documentation which is
> written in very different terms.
>
> The best description of what a personality routine is I found in an
> article by Ian Lance Taylor. It doesn't seem to be applicable to C as
> far as I can tell.
So my understanding is that there's stock DWARF (.debug_frame) and then
there's souped-up DWARF (.eh_frame), which is basically DWARF with a few
extensions.
The remember/restore state thing is stock DWARF (DW_CFA_remember_state
and DW_CFA_restore_state). The personality routine thing is in the
.eh_frame extension which is documented here:
http://refspecs.linuxfoundation.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/ehframechpt.html
--
Josh
Powered by blists - more mailing lists