x86: Always generate .note.gnu.property section for ELF outputs
authorH.J. Lu <hongjiu.lu@intel.com>
Sat, 14 Dec 2019 17:48:18 +0000 (09:48 -0800)
committerH.J. Lu <hongjiu.lu@intel.com>
Sat, 8 Feb 2020 14:24:44 +0000 (06:24 -0800)
We should always generate .note.gnu.property section in x86 assembly
codes for ELF outputs to mark Intel CET support since all input files
must be marked with Intel CET support in order for linker to mark output
with Intel CET support.

Verified with

$ CC="gcc -Wl,-z,cet-report=error" ./Configure shared linux-x86 -fcf-protection
$ make
$ make test

Reviewed-by: Richard Levitte <levitte@openssl.org>
Reviewed-by: Paul Dale <paul.dale@oracle.com>
(Merged from https://github.com/openssl/openssl/pull/11044)

crypto/perlasm/x86gas.pl

index 25d1c16aacfe183201322f135c81bab774458301..2875a1f716250b5f9f410d5437081a28f0a9fa7b 100644 (file)
@@ -173,6 +173,26 @@ sub ::file_end
        else            { push (@out,"$tmp\n"); }
     }
     push(@out,$initseg) if ($initseg);
+    if ($::elf) {
+       push(@out,"
+       .section \".note.gnu.property\", \"a\"
+       .p2align 2
+       .long 1f - 0f
+       .long 4f - 1f
+       .long 5
+0:
+       .asciz \"GNU\"
+1:
+       .p2align 2
+       .long 0xc0000002
+       .long 3f - 2f
+2:
+       .long 3
+3:
+       .p2align 2
+4:
+");
+    }
 }
 
 sub ::data_byte        {   push(@out,".byte\t".join(',',@_)."\n");   }