public inbox for binutils@sourceware.org
 help / color / mirror / Atom feed
From: Indu Bhagat <indu.bhagat@oracle.com>
To: Jan Beulich <jbeulich@suse.com>
Cc: Nick Clifton <nickc@redhat.com>,
	binutils@sourceware.org, "H.J. Lu" <hjl.tools@gmail.com>
Subject: Re: [PATCH,V3 00/13] Synthesize CFI for hand-written asm
Date: Tue, 19 Dec 2023 13:02:10 -0800	[thread overview]
Message-ID: <852395fc-2cf3-4863-953e-adedddc0c573@oracle.com> (raw)
In-Reply-To: <ed554aa0-79f9-4afe-9c90-9c322e78bd30@suse.com>

On 12/18/23 00:47, Jan Beulich wrote:
> On 15.12.2023 10:13, Nick Clifton wrote:
>>> This patch series adds support in GAS to synthesize CFI for hand-written
>>> asm, acronym'd as SCFI.
>>>
>>> Previous postings:
>>>     - RFC patch series (https://sourceware.org/pipermail/binutils/2023-September/129560.html).
>>>     - V1 (https://sourceware.org/pipermail/binutils/2023-October/130163.html)
>>>     - V2 (https://sourceware.org/pipermail/binutils/2023-October/130210.html)
>>>
>> The patch series looks great to me.  Series approved - please apply (with a
>> small update to the 09 patch as already mentioned).
> 
> Please can you hold off committing the x86 part(s) of this, until I got a
> chance to look over them again? Furthermore, as expressed before, I'm wary
> of these additions going stale the minute the APX patches are committed on
> top, if your changes went in first. Despite APX work still being in flight,
> I would much prefer if that went in first, and then you re-based your work
> on top, such that the new MOV and ALU insns are covered right away.
> 

There will still remain handling the newly added APX Push/Pop 
instructions as well.

> While this is an unusual situation - new very general purpose insns aren't
> introduced frequently -, I'd also like to see more formally addressed the
> idea of ongoing support: From the original review I recall that you need
> to minimally track insns altering GPRs, in order to avoid silently
> generating bad CFI. Remember that I haven't looked at v3 yet, but as long
> as that tracking is based on specific insns rather than a generalized
> pattern, any ISA addition allowing GPRs to be altered would be at risk of
> rendering the CFI generator code stale. Yet people, once they've started
> to detect availability of this functionality, may validly expect that
> their use of the functionality won't silently break behind their backs. In
> this respect, did you consider constraining under what conditions the
> generator code may actually come into play (at least for the time being)?
> 

(Step 1) I propose that, for now, we add a check such that if any APX 
insn is seen for --scfi invocation, we bail out.  IIUC, we could check 
using the is_any_apx_rex2_encoding ().

(Step 2a) We can remove this check once there is support for all APX 
instructions for SCFI. I can add support for ginsns for APX instructions 
once the APX work is pushed.

(Step 2b) Orthogonal to supporting the APX instruction set: For SCFI, it 
is ideal to add a way to raise alert if new instructions are added in 
the three categories (For APX, I see we have additions in #2, and #3):

1. Control flow instructions
    We can detect them by checking for insn.tm.opcode_modifier.jump.

2. Operations altering GPRs
    We can detect them by checking for:
    if (insn.operands && insn.reg_operands)
      {
        reg_op = i.op[insn.operands - 1].regs;
        if (reg_op)
          check if destination reg is REG_SP/REG_FP
      }

3. Operations with implicit update to stack pointer.
    Currently we have no marker, but how about adding something like 
unsigned int implicitstackop:1 in i386_opcode_modifier ? We will also 
need to ensure this property is correctly conveyed for all existing 
instructions in i386-opc.tbl.  When new instructions are added, the SCFI 
machinery will be able to warn the user of missing functionality (and 
not generate wrong CFI).

After this support for #3 is added to the backend, we will be in good 
stead for future ISA additions wrt SCFI.

I can _try_ to accommodate 2b before the 2.42 release is cut. However, I 
think its best to plan for both 2a and 2b for 2.43 release (given the 
2.42 is around the corner), if there is agreement.

What do you think about this plan ?

Thanks


  reply	other threads:[~2023-12-19 21:02 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-12-11  6:03 Indu Bhagat
2023-12-11  6:03 ` [PATCH,V3 01/13] gas: dw2gencfi: minor rejig for cfi_sections_set and all_cfi_sections Indu Bhagat
2023-12-11  6:03 ` [PATCH,V3 02/13] gas: dw2gencfi: use all_cfi_sections instead of cfi_sections Indu Bhagat
2023-12-11  6:03 ` [PATCH,V3 03/13] gas: dw2gencfi: expose a new cfi_set_last_fde API Indu Bhagat
2023-12-11  6:03 ` [PATCH,V3 04/13] gas: dw2gencfi: move some tc_* defines to the header file Indu Bhagat
2023-12-11  6:03 ` [PATCH,V3 05/13] gas: dw2gencfi: expose dot_cfi_sections for scfidw2gen Indu Bhagat
2023-12-11  6:03 ` [PATCH,V3 06/13] gas: dw2gencfi: externalize the all_cfi_sections Indu Bhagat
2023-12-11  6:03 ` [PATCH,V3 07/13] gas: add new command line option --scfi[=all,none] Indu Bhagat
2023-12-11  6:03 ` [PATCH,V3 08/13] gas: scfidw2gen: new functionality to prepare for SCFI Indu Bhagat
2023-12-11  6:03 ` [PATCH,V3 09/13] gas: synthesize CFI for hand-written asm Indu Bhagat
2023-12-13 11:57   ` Nick Clifton
2023-12-11  6:03 ` [PATCH,V3 10/13] gas: doc: update documentation for the new listing option Indu Bhagat
2023-12-11  6:03 ` [PATCH,V3 11/13] i386-reg.tbl: Add a comment to reflect dependency on ordering Indu Bhagat
2023-12-11  6:03 ` [PATCH,V3 12/13] gas: testsuite: add a x86_64 testsuite for SCFI Indu Bhagat
2023-12-11  6:03 ` [PATCH,V3 13/13] gas/NEWS: announce the new command line option Indu Bhagat
2023-12-15  9:13 ` [PATCH,V3 00/13] Synthesize CFI for hand-written asm Nick Clifton
2023-12-18  8:47   ` Jan Beulich
2023-12-19 21:02     ` Indu Bhagat [this message]
2023-12-20  7:51       ` Jan Beulich
2024-01-04 18:08         ` Indu Bhagat

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=852395fc-2cf3-4863-953e-adedddc0c573@oracle.com \
    --to=indu.bhagat@oracle.com \
    --cc=binutils@sourceware.org \
    --cc=hjl.tools@gmail.com \
    --cc=jbeulich@suse.com \
    --cc=nickc@redhat.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: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).