[llvm] r333424 - [llvm-readobj] Support GNU_PROPERTY_X86_FEATURE_1_AND notes in .note.gnu.property
via llvm-commits
llvm-commits at lists.llvm.org
Tue May 29 11:59:23 PDT 2018
Hi Mike and Alexander,
The test you changed in this commit, note-gnu-property.s seems to now be failing on the PS4 Windows bot.
http://lab.llvm.org:8011/builders/llvm-clang-lld-x86_64-scei-ps4-windows10pro-fast/builds/17420:
FAIL: LLVM :: tools/llvm-readobj/note-gnu-property.s (38778 of 40635)
******************** TEST 'LLVM :: tools/llvm-readobj/note-gnu-property.s' FAILED ********************
Script:
--
C:\ps4-buildslave2\llvm-clang-lld-x86_64-scei-ps4-windows10pro-fast\llvm.obj\bin\llvm-mc.EXE -filetype=obj -triple x86_64-pc-linux-gnu C:\ps4-buildslave2\llvm-clang-lld-x86_64-scei-ps4-windows10pro-fast\llvm.src\test\tools\llvm-readobj\note-gnu-property.s -o C:\ps4-buildslave2\llvm-clang-lld-x86_64-scei-ps4-windows10pro-fast\llvm.obj\test\tools\llvm-readobj\Output\note-gnu-property.s.tmp
C:\ps4-buildslave2\llvm-clang-lld-x86_64-scei-ps4-windows10pro-fast\llvm.obj\bin\llvm-readobj.EXE -elf-output-style GNU --notes C:\ps4-buildslave2\llvm-clang-lld-x86_64-scei-ps4-windows10pro-fast\llvm.obj\test\tools\llvm-readobj\Output\note-gnu-property.s.tmp | C:\ps4-buildslave2\llvm-clang-lld-x86_64-scei-ps4-windows10pro-fast\llvm.obj\bin\FileCheck.EXE C:\ps4-buildslave2\llvm-clang-lld-x86_64-scei-ps4-windows10pro-fast\llvm.src\test\tools\llvm-readobj\note-gnu-property.s
--
Exit Code: 1
Command Output (stdout):
--
$ "C:\ps4-buildslave2\llvm-clang-lld-x86_64-scei-ps4-windows10pro-fast\llvm.obj\bin\llvm-mc.EXE" "-filetype=obj" "-triple" "x86_64-pc-linux-gnu" "C:\ps4-buildslave2\llvm-clang-lld-x86_64-scei-ps4-windows10pro-fast\llvm.src\test\tools\llvm-readobj\note-gnu-property.s" "-o" "C:\ps4-buildslave2\llvm-clang-lld-x86_64-scei-ps4-windows10pro-fast\llvm.obj\test\tools\llvm-readobj\Output\note-gnu-property.s.tmp"
$ "C:\ps4-buildslave2\llvm-clang-lld-x86_64-scei-ps4-windows10pro-fast\llvm.obj\bin\llvm-readobj.EXE" "-elf-output-style" "GNU" "--notes" "C:\ps4-buildslave2\llvm-clang-lld-x86_64-scei-ps4-windows10pro-fast\llvm.obj\test\tools\llvm-readobj\Output\note-gnu-property.s.tmp"
$ "C:\ps4-buildslave2\llvm-clang-lld-x86_64-scei-ps4-windows10pro-fast\llvm.obj\bin\FileCheck.EXE" "C:\ps4-buildslave2\llvm-clang-lld-x86_64-scei-ps4-windows10pro-fast\llvm.src\test\tools\llvm-readobj\note-gnu-property.s"
# command stderr:
C:\ps4-buildslave2\llvm-clang-lld-x86_64-scei-ps4-windows10pro-fast\llvm.src\test\tools\llvm-readobj\note-gnu-property.s:19:16: error: expected string not found in input
// CHECK-NEXT: X86 features: IBT, <unknown flags: 0xf000f000f000f000>
^
<stdin>:15:2: note: scanning from here
X86 features: IBT, <unknown flags: 0xf000f000>
^
Can you take a look?
Douglas Yung
> -----Original Message-----
> From: llvm-commits [mailto:llvm-commits-bounces at lists.llvm.org] On
> Behalf Of Alexander Ivchenko via llvm-commits
> Sent: Tuesday, May 29, 2018 7:50
> To: llvm-commits at lists.llvm.org
> Subject: [llvm] r333424 - [llvm-readobj] Support
> GNU_PROPERTY_X86_FEATURE_1_AND notes in .note.gnu.property
>
> Author: aivchenk
> Date: Tue May 29 07:49:51 2018
> New Revision: 333424
>
> URL: http://llvm.org/viewvc/llvm-project?rev=333424&view=rev
> Log:
> [llvm-readobj] Support GNU_PROPERTY_X86_FEATURE_1_AND notes in
> .note.gnu.property
>
> This patch allows parsing GNU_PROPERTY_X86_FEATURE_1_AND
> notes in .note.gnu.property sections. These notes
> indicate that the object file is built to support Intel CET.
>
> patch by mike.dvoretsky
>
> Differential Revision: https://reviews.llvm.org/D47473
>
>
> Modified:
> llvm/trunk/include/llvm/BinaryFormat/ELF.h
> llvm/trunk/test/tools/llvm-readobj/note-gnu-property.s
> llvm/trunk/tools/llvm-readobj/ELFDumper.cpp
>
> Modified: llvm/trunk/include/llvm/BinaryFormat/ELF.h
> URL: http://llvm.org/viewvc/llvm-
> project/llvm/trunk/include/llvm/BinaryFormat/ELF.h?rev=333424&r1=333423
> &r2=333424&view=diff
> =======================================================================
> =======
> --- llvm/trunk/include/llvm/BinaryFormat/ELF.h (original)
> +++ llvm/trunk/include/llvm/BinaryFormat/ELF.h Tue May 29 07:49:51 2018
> @@ -1308,6 +1308,13 @@ enum {
> enum {
> GNU_PROPERTY_STACK_SIZE = 1,
> GNU_PROPERTY_NO_COPY_ON_PROTECTED = 2,
> + GNU_PROPERTY_X86_FEATURE_1_AND = 0xc0000002
> +};
> +
> +// CET properties
> +enum {
> + GNU_PROPERTY_X86_FEATURE_1_IBT = 1 << 0,
> + GNU_PROPERTY_X86_FEATURE_1_SHSTK = 1 << 1
> };
>
> // AMDGPU specific notes.
>
> Modified: llvm/trunk/test/tools/llvm-readobj/note-gnu-property.s
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/tools/llvm-
> readobj/note-gnu-property.s?rev=333424&r1=333423&r2=333424&view=diff
> =======================================================================
> =======
> --- llvm/trunk/test/tools/llvm-readobj/note-gnu-property.s (original)
> +++ llvm/trunk/test/tools/llvm-readobj/note-gnu-property.s Tue May 29
> 07:49:51 2018
> @@ -2,16 +2,21 @@
> // RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o %t
> // RUN: llvm-readobj -elf-output-style GNU --notes %t | FileCheck %s
>
> -// CHECK: Displaying notes found at file offset 0x00000040 with
> length 0x00000070:
> +// CHECK: Displaying notes found at file offset 0x00000040 with
> length 0x000000b8:
> // CHECK-NEXT: Owner Data size Description
> -// CHECK-NEXT: GNU 0x00000060
> NT_GNU_PROPERTY_TYPE_0 (property note)
> +// CHECK-NEXT: GNU 0x000000a8
> NT_GNU_PROPERTY_TYPE_0 (property note)
> // CHECK-NEXT: Properties: stack size: 0x100
> // CHECK-NEXT: stack size: 0x100
> // CHECK-NEXT: no copy on protected
> +// CHECK-NEXT: X86 features: SHSTK
> +// CHECK-NEXT: X86 features: IBT, SHSTK
> +// CHECK-NEXT: X86 features: none
> // CHECK-NEXT: <application-specific type 0xfefefefe>
> // CHECK-NEXT: stack size: <corrupt length: 0x0>
> // CHECK-NEXT: stack size: <corrupt length: 0x4>
> // CHECK-NEXT: no copy on protected <corrupt length: 0x1>
> +// CHECK-NEXT: X86 features: <corrupt length: 0x0>
> +// CHECK-NEXT: X86 features: IBT, <unknown flags:
> 0xf000f000f000f000>
> // CHECK-NEXT: <corrupt type (0x2) datasz: 0x1>
>
> .section ".note.gnu.property", "a"
> @@ -26,7 +31,7 @@ begin:
> .long 8 /* Data size */
> .quad 0x100 /* Data (stack size) */
> .p2align 3 /* Align to 8 byte for 64 bit */
> -
> +
> /* Test we handle alignment properly */
> .long 1 /* Type: GNU_PROPERTY_STACK_SIZE */
> .long 8 /* Data size */
> @@ -36,6 +41,23 @@ begin:
> .long 2 /* Type: GNU_PROPERTY_NO_COPY_ON_PROTECTED */
> .long 0 /* Data size */
> .p2align 3 /* Align to 8 byte for 64 bit */
> +
> + /* CET property note */
> + .long 0xc0000002 /* Type: GNU_PROPERTY_X86_FEATURE_1_AND */
> + .long 8 /* Data size */
> + .quad 2 /* GNU_PROPERTY_X86_FEATURE_1_SHSTK */
> + .p2align 3 /* Align to 8 byte for 64 bit */
> +
> + /* CET property note with padding */
> + .long 0xc0000002 /* Type: GNU_PROPERTY_X86_FEATURE_1_AND */
> + .long 4 /* Data size */
> + .long 3 /* Full CET support */
> + .p2align 3 /* Align to 8 byte for 64 bit */
> +
> + .long 0xc0000002 /* Type: GNU_PROPERTY_X86_FEATURE_1_AND */
> + .long 8 /* Data size */
> + .quad 0 /* Empty flags, not an error */
> + .p2align 3 /* Align to 8 byte for 64 bit */
>
> /* All notes below are broken. Test we are able to report them. */
>
> @@ -60,6 +82,17 @@ begin:
> .long 1 /* Data size (corrupted) */
> .byte 1 /* Data */
> .p2align 3 /* Align to 8 byte for 64 bit */
> +
> + /* CET note with size zero */
> + .long 0xc0000002 /* Type: GNU_PROPERTY_X86_FEATURE_1_AND */
> + .long 0 /* Data size */
> + .p2align 3 /* Align to 8 byte for 64 bit */
> +
> + /* CET note with bad flags */
> + .long 0xc0000002 /* Type: GNU_PROPERTY_X86_FEATURE_1_AND */
> + .long 8 /* Data size */
> + .quad 0xf000f000f000f001 /* GNU_PROPERTY_X86_FEATURE_1_IBT and bad
> bits */
> + .p2align 3 /* Align to 8 byte for 64 bit */
>
> /* GNU_PROPERTY_NO_COPY_ON_PROTECTED with pr_datasz and without data
> */
> .long 2 /* Type: GNU_PROPERTY_NO_COPY_ON_PROTECTED */
>
> Modified: llvm/trunk/tools/llvm-readobj/ELFDumper.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-
> readobj/ELFDumper.cpp?rev=333424&r1=333423&r2=333424&view=diff
> =======================================================================
> =======
> --- llvm/trunk/tools/llvm-readobj/ELFDumper.cpp (original)
> +++ llvm/trunk/tools/llvm-readobj/ELFDumper.cpp Tue May 29 07:49:51
> 2018
> @@ -3457,7 +3457,7 @@ static void printGNUProperty(raw_ostream
> case GNU_PROPERTY_STACK_SIZE: {
> OS << " stack size: ";
> if (DataSize == sizeof(typename ELFT::uint))
> - OS << format("0x%x\n",
> + OS << format("0x%lx\n",
> (uint64_t)(*(const typename ELFT::Addr
> *)Data.data()));
> else
> OS << format("<corrupt length: 0x%x>\n", DataSize);
> @@ -3469,6 +3469,36 @@ static void printGNUProperty(raw_ostream
> OS << format(" <corrupt length: 0x%x>", DataSize);
> OS << "\n";
> break;
> + case GNU_PROPERTY_X86_FEATURE_1_AND:
> + OS << " X86 features: ";
> + if (DataSize != 4 && DataSize != 8) {
> + OS << format("<corrupt length: 0x%x>\n", DataSize);
> + break;
> + }
> + uint64_t CFProtection =
> + (DataSize == 4)
> + ?
> support::endian::read32<ELFT::TargetEndianness>(Data.data())
> + :
> support::endian::read64<ELFT::TargetEndianness>(Data.data());
> + if (CFProtection == 0) {
> + OS << "none\n";
> + break;
> + }
> + if (CFProtection & GNU_PROPERTY_X86_FEATURE_1_IBT) {
> + OS << "IBT";
> + CFProtection &= ~GNU_PROPERTY_X86_FEATURE_1_IBT;
> + if (CFProtection)
> + OS << ", ";
> + }
> + if (CFProtection & GNU_PROPERTY_X86_FEATURE_1_SHSTK) {
> + OS << "SHSTK";
> + CFProtection &= ~GNU_PROPERTY_X86_FEATURE_1_SHSTK;
> + if (CFProtection)
> + OS << ", ";
> + }
> + if (CFProtection)
> + OS << format("<unknown flags: 0x%lx>", CFProtection);
> + OS << "\n";
> + break;
> }
> }
>
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits
More information about the llvm-commits
mailing list