All of lore.kernel.org
 help / color / mirror / Atom feed
From: Josh Poimboeuf <jpoimboe@redhat.com>
To: Jiri Slaby <jslaby@suse.cz>
Cc: mingo@redhat.com, tglx@linutronix.de, hpa@zytor.com,
	x86@kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PREVIEW 10/10] linkage: add .cfi_{start/end}proc to ENTRY/ENDPROC
Date: Fri, 17 Feb 2017 15:18:04 -0600	[thread overview]
Message-ID: <20170217211804.j6l2d7t5mfzqzmbt@treble> (raw)
In-Reply-To: <7f613a09-39f8-5477-ed5e-17024baf5876@suse.cz>

On Fri, Feb 17, 2017 at 03:26:36PM +0100, Jiri Slaby wrote:
> On 02/17/2017, 03:07 PM, Josh Poimboeuf wrote:
> > On Fri, Feb 17, 2017 at 02:36:15PM +0100, Jiri Slaby wrote:
> >> On 02/17/2017, 02:16 PM, Josh Poimboeuf wrote:
> >>> On Fri, Feb 17, 2017 at 11:47:57AM +0100, Jiri Slaby wrote:
> >>>> This is just a preview, not to merged now, only later with DWARF
> >>>> unwinder series. This is what the series will serve for (aside from
> >>>> cleanup and unification).
> >>>>
> >>>> I am aware of CFI_STARTPROC and CFI_ENDPROC left defined in other archs
> >>>> in spite of cfi annotations removal ages ago. For simplicity. I am using
> >>>> DW_ prefix here.
> >>>
> >>> If objtool is going to be generating CFI instructions, why not have it
> >>> generate .cfi_startproc and .cfi_endproc too?
> >>
> >> I tried that, but in many places it is very hard to recognize start
> >> and/or end of a function.
> > 
> > How so?  objtool already knows where the start and end of every function
> > is due to ENDPROC's use of the .type and .size macros.
> 
> Right, I did not realized that we are writing about different things. So
> yes, when the series is applied, we have ENTRY, ENDPROC et al. at all
> appropriate places. We can indeed use that info.
> 
> >> Having .cfi_startproc and .cfi_endproc in place makes it rather easy,
> >> actually reduced to "emit dwarf instructions for this code between
> >> here and there". Plus pre-prepared .eh_frame only to be extended.
> >> (.eh_frame_hdr has to be rehashed of course.)
> > 
> > Hm, but now objtool has to read *and* write CFI instead of just writing.
> 
> That is needed due to inline assembly anyway :/. So the way I wanted to
> go was: here you have code with possibly incomplete (but at least some)
> CFIs, fix the broken ones. Otherwise we would have to differentiate 2
> kind of files:
> * .c files with inline assembly (read-write = update CFIs)
> * .S files with "native" assembly (write eh_frame header and also CFIs)

Have you seen any real inline asm issues?  I had been thinking they
weren't a problem, because CFI instructions are only emitted for the
function prologue and epilogue.  Running objtool with CFI analysis
seemed to confirm that -- I don't remember seeing any inline asm issues
with CFI like we did with frame pointers.

So my thinking for objtool CFI was:

.c files: read-only
.S files: write-only

> > It would help to see the generation code.  Have you written it?
> 
> I started writing it and it is complete crap so far :P. Please see
> "objtool: generate dwarf for asm" at:
> https://git.kernel.org/cgit/linux/kernel/git/jirislaby/linux.git/log/?h=devel
> 
> And yes, the current code is for .S files without any .eh_frame.

Nice!  Does it work?

> Then I decided to clean up ENTRY/ENDPROC etc. first. It's up to
> discussion what route we want to go, but I would prefer the
> "read-write" since we have to implement it anyway.

Yes, that would make sense if we have to do read-write for .c files.

-- 
Josh

  reply	other threads:[~2017-02-17 21:18 UTC|newest]

Thread overview: 108+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-02-17 10:47 [PATCH 01/10] x86: assembly, ENTRY for fn, GLOBAL for data Jiri Slaby
2017-02-17 10:47 ` [PATCH 02/10] x86: assembly, use ENDPROC for functions Jiri Slaby
2017-02-17 10:47   ` Jiri Slaby
2017-02-17 11:08   ` Juergen Gross
2017-02-17 11:08   ` Juergen Gross
2017-02-17 10:47 ` [PATCH 03/10] x86: boot, annotate functions properly Jiri Slaby
2017-02-17 10:47 ` [PATCH 04/10] linkage: introduce ENTRY_LOCAL Jiri Slaby
2017-02-17 10:47 ` [PATCH 05/10] x86: kernel, annotate local functions Jiri Slaby
2017-02-17 10:47 ` [PATCH 06/10] x86: crypto, " Jiri Slaby
2017-02-17 10:47 ` [PATCH 07/10] linkage: introduce ALIASes Jiri Slaby
2017-02-17 10:47 ` [PATCH 08/10] x86: assembly, annotate aliases Jiri Slaby
2017-02-17 10:47   ` Jiri Slaby
2017-02-17 11:52   ` Juergen Gross
2017-02-17 11:52   ` Juergen Gross
2017-02-17 10:47 ` [RFC 09/10] x86: boot, extract efi_pe_entry from startup_64 Jiri Slaby
2017-02-17 10:47 ` [PREVIEW 10/10] linkage: add .cfi_{start/end}proc to ENTRY/ENDPROC Jiri Slaby
2017-02-17 13:16   ` Josh Poimboeuf
2017-02-17 13:36     ` Jiri Slaby
2017-02-17 14:07       ` Josh Poimboeuf
2017-02-17 14:26         ` Jiri Slaby
2017-02-17 21:18           ` Josh Poimboeuf [this message]
2017-02-17 11:06 ` [PATCH 01/10] x86: assembly, ENTRY for fn, GLOBAL for data Juergen Gross
2017-02-17 11:06 ` Juergen Gross
2017-03-01  9:38 ` Ingo Molnar
2017-03-01  9:38   ` Ingo Molnar
2017-03-01  9:50   ` Jiri Slaby
2017-03-01  9:50     ` Jiri Slaby
2017-03-01 10:09   ` Thomas Gleixner
2017-03-01 10:09   ` Thomas Gleixner
2017-03-01 10:27     ` Ingo Molnar
2017-03-01 10:27       ` Ingo Molnar
2017-03-03 12:22       ` Jiri Slaby
2017-03-03 12:22         ` Jiri Slaby
2017-03-03 18:20       ` hpa
2017-03-03 18:20         ` hpa
2017-03-06 14:09         ` Jiri Slaby
2017-03-06 14:09           ` Jiri Slaby
2017-03-07  7:57         ` Ingo Molnar
2017-03-07  7:57           ` Ingo Molnar
2017-03-03 18:24       ` hpa
2017-03-03 18:24         ` hpa
2017-03-07  8:27         ` Ingo Molnar
2017-03-07  8:27           ` Ingo Molnar
2017-03-07 17:24           ` [RFC] linkage: new macros for functions and data Jiri Slaby
2017-03-07 17:24             ` Jiri Slaby
2017-03-16  8:02             ` Ingo Molnar
2017-03-16  8:02               ` Ingo Molnar
2017-03-16  8:13               ` Jiri Slaby
2017-03-20 12:32                 ` [PATCH v2 01/10] linkage: new macros for assembler symbols Jiri Slaby
2017-03-20 12:32                   ` [PATCH v2 02/10] x86: assembly, FUNC_START for fn, DATA_START for data Jiri Slaby
2017-03-20 12:32                     ` Jiri Slaby
2017-03-20 13:32                     ` Josh Poimboeuf
2017-03-20 13:32                       ` Josh Poimboeuf
2017-03-20 15:32                       ` Jiri Slaby
2017-03-20 15:32                         ` Jiri Slaby
2017-03-20 16:07                         ` Josh Poimboeuf
2017-03-20 16:07                           ` Josh Poimboeuf
2017-03-21 14:08                     ` Pavel Machek
2017-03-21 14:08                       ` Pavel Machek
2017-03-22  7:25                       ` Ingo Molnar
2017-03-22  7:25                         ` Ingo Molnar
2017-03-22  7:39                         ` Jiri Slaby
2017-03-22  7:39                         ` Jiri Slaby
2017-03-22  7:46                           ` Ingo Molnar
2017-03-22  7:46                           ` Ingo Molnar
2017-03-22 14:11                             ` Josh Poimboeuf
2017-03-22 15:01                               ` Jiri Slaby
2017-03-22 15:33                                 ` Josh Poimboeuf
2017-03-22 15:33                                 ` Josh Poimboeuf
2017-03-22 15:01                               ` Jiri Slaby
2017-03-23  7:38                               ` Ingo Molnar
2017-03-23  7:38                               ` Ingo Molnar
2017-03-23 13:24                                 ` Josh Poimboeuf
2017-03-23 13:24                                 ` Josh Poimboeuf
2017-03-22 14:11                             ` Josh Poimboeuf
2017-03-22  7:25                       ` Ingo Molnar
2017-03-22 12:06                       ` Jiri Slaby
2017-03-22 12:06                       ` Jiri Slaby
2017-03-22 15:52                         ` Pavel Machek
2017-03-22 15:52                         ` Pavel Machek
2017-03-20 12:32                   ` [PATCH v2 03/10] x86: assembly, use SYM_FUNC_END for functions Jiri Slaby
2017-03-21 14:48                     ` Josh Poimboeuf
2017-03-21 14:48                     ` Josh Poimboeuf
2017-03-22  7:29                       ` Ingo Molnar
2017-03-22  7:29                         ` Ingo Molnar
2017-03-22 14:26                     ` Josh Poimboeuf
2017-03-22 15:44                       ` Jiri Slaby
2017-03-22 15:44                         ` Jiri Slaby
2017-04-10 11:23                         ` Jiri Slaby
2017-04-10 19:35                           ` Josh Poimboeuf
2017-04-10 19:35                           ` Josh Poimboeuf
2017-04-12  6:24                             ` Jiri Slaby
2017-04-12  6:52                               ` Ingo Molnar
2017-04-12  6:52                               ` Ingo Molnar
2017-04-12  6:24                             ` Jiri Slaby
2017-04-10 11:23                         ` Jiri Slaby
2017-03-22 14:26                     ` Josh Poimboeuf
2017-03-20 12:32                   ` Jiri Slaby
2017-03-20 12:32                   ` [PATCH v2 04/10] x86: boot, annotate functions properly Jiri Slaby
2017-03-20 12:32                   ` [PATCH v2 05/10] x86: kernel+lib, annotate local functions Jiri Slaby
2017-03-20 12:32                   ` [PATCH v2 06/10] x86: crypto, " Jiri Slaby
2017-03-20 12:32                   ` [PATCH v2 07/10] x86: assembly, annotate aliases Jiri Slaby
2017-03-20 12:32                   ` Jiri Slaby
2017-03-20 12:32                   ` [PATCH v2 08/10] x86: entry, annotate THUNKs Jiri Slaby
2017-03-20 12:32                   ` [PATCH v2 09/10] x86: entry, annotate interrupt symbols properly Jiri Slaby
2017-03-20 12:32                   ` [RFC v2 10/10] x86: boot, extract efi_pe_entry from startup_64 Jiri Slaby
2017-03-20 12:32                 ` [PATCH v2 01/10] linkage: new macros for assembler symbols Jiri Slaby
2017-03-16  8:13               ` [RFC] linkage: new macros for functions and data Jiri Slaby

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=20170217211804.j6l2d7t5mfzqzmbt@treble \
    --to=jpoimboe@redhat.com \
    --cc=hpa@zytor.com \
    --cc=jslaby@suse.cz \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@redhat.com \
    --cc=tglx@linutronix.de \
    --cc=x86@kernel.org \
    /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: link
Be 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.