Commit 6ac83d35 by Szabolcs Nagy

aarch64: don't emit bti j after NOTE_INSN_DELETED_LABEL [PR94748]

It was previously discussed that indirect branches cannot go to
NOTE_INSN_DELETED_LABEL so inserting a landing pad is unnecessary.
See https://gcc.gnu.org/pipermail/gcc-patches/2019-May/522625.html

Before the patch a bti j was inserted after the label in

  __attribute__((target("branch-protection=bti")))
  int foo (void)
  {
  label:
    return 0;
  }

This is not necessary and weakens the security protection.

gcc/ChangeLog:

	PR target/94748
	* config/aarch64/aarch64-bti-insert.c (rest_of_insert_bti): Remove
	the check for NOTE_INSN_DELETED_LABEL.

gcc/testsuite/ChangeLog:

	PR target/94748
	* gcc.target/aarch64/pr94748.c: New test.
parent 852c4b04
2020-04-30 Szabolcs Nagy <szabolcs.nagy@arm.com>
PR target/94748
* config/aarch64/aarch64-bti-insert.c (rest_of_insert_bti): Remove
the check for NOTE_INSN_DELETED_LABEL.
2020-04-30 Jakub Jelinek <jakub@redhat.com>
* configure.ac (--with-documentation-root-url,
......
......@@ -139,14 +139,10 @@ rest_of_insert_bti (void)
insn = NEXT_INSN (insn))
{
/* If a label is marked to be preserved or can be a non-local goto
target, it must be protected with a BTI J. The same applies to
NOTE_INSN_DELETED_LABEL since they are basically labels that might
be referenced via variables or constant pool. */
if ((LABEL_P (insn)
target, it must be protected with a BTI J. */
if (LABEL_P (insn)
&& (LABEL_PRESERVE_P (insn)
|| bb->flags & BB_NON_LOCAL_GOTO_TARGET))
|| (NOTE_P (insn)
&& NOTE_KIND (insn) == NOTE_INSN_DELETED_LABEL))
{
bti_insn = gen_bti_j ();
emit_insn_after (bti_insn, insn);
......
2020-04-30 Szabolcs Nagy <szabolcs.nagy@arm.com>
PR target/94748
* gcc.target/aarch64/pr94748.c: New test.
2020-04-30 Andreas Krebbel <krebbel@linux.ibm.com>
* gcc.target/s390/zvector/vec_load_len_r.c: New test.
......
/* { dg-do compile } */
__attribute__ ((target("branch-protection=bti")))
int foo ()
{
label:
return 0;
}
/* { dg-final { scan-assembler-not {hint (36|38) // bti (j|jc)} } } */
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment