diff options
| author | George Rimar <grimar@accesssoftek.com> | 2018-03-21 08:34:55 +0000 |
|---|---|---|
| committer | George Rimar <grimar@accesssoftek.com> | 2018-03-21 08:34:55 +0000 |
| commit | 6a14c024310cee82692e7e09ad3a624cd25ebab1 (patch) | |
| tree | d2afae0496435c3f6bf35b6ad7ed87b000215aa9 /llvm/test | |
| parent | f1fc25eb747e12a0d4b81144d15e252f039c49ef (diff) | |
| download | bcm5719-llvm-6a14c024310cee82692e7e09ad3a624cd25ebab1.tar.gz bcm5719-llvm-6a14c024310cee82692e7e09ad3a624cd25ebab1.zip | |
[llvm-readobj] - Teach llvm-readobj to dump .note.gnu.property sections.
NT_GNU_PROPERTY_TYPE_0 is a recently added type of .note.gnu.property
section specified in Linux Extensions to gABI.
(https://github.com/hjl-tools/linux-abi/wiki/Linux-Extensions-to-gABI)
Patch teach tool to print such notes properly.
Differential revision: https://reviews.llvm.org/D44469
llvm-svn: 328078
Diffstat (limited to 'llvm/test')
| -rw-r--r-- | llvm/test/tools/llvm-readobj/note-gnu-property.s | 68 | ||||
| -rw-r--r-- | llvm/test/tools/llvm-readobj/note-gnu-property2.s | 22 |
2 files changed, 90 insertions, 0 deletions
diff --git a/llvm/test/tools/llvm-readobj/note-gnu-property.s b/llvm/test/tools/llvm-readobj/note-gnu-property.s new file mode 100644 index 00000000000..6fd69086612 --- /dev/null +++ b/llvm/test/tools/llvm-readobj/note-gnu-property.s @@ -0,0 +1,68 @@ +// REQUIRES: x86-registered-target +// 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-NEXT: Owner Data size Description +// CHECK-NEXT: GNU 0x00000060 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: <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: <corrupt type (0x2) datasz: 0x1> + +.section ".note.gnu.property", "a" +.align 4 + .long 4 /* Name length is always 4 ("GNU") */ + .long end - begin /* Data length */ + .long 5 /* Type: NT_GNU_PROPERTY_TYPE_0 */ + .asciz "GNU" /* Name */ + .p2align 3 +begin: + .long 1 /* Type: GNU_PROPERTY_STACK_SIZE */ + .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 */ + .long 0x100 /* Data (stack size) */ + .p2align 3 /* Align to 8 byte for 64 bit */ + + .long 2 /* Type: GNU_PROPERTY_NO_COPY_ON_PROTECTED */ + .long 0 /* Data size */ + .p2align 3 /* Align to 8 byte for 64 bit */ + + /* All notes below are broken. Test we are able to report them. */ + + /* Broken note type */ + .long 0xfefefefe /* Invalid type for testing */ + .long 0 /* Data size */ + .p2align 3 /* Align to 8 byte for 64 bit */ + + /* GNU_PROPERTY_STACK_SIZE with zero stack size */ + .long 1 /* Type: GNU_PROPERTY_STACK_SIZE */ + .long 0 /* Data size */ + .p2align 3 /* Align to 8 byte for 64 bit */ + + /* GNU_PROPERTY_STACK_SIZE with data size 4 (should be 8) */ + .long 1 /* Type: GNU_PROPERTY_STACK_SIZE */ + .long 4 /* Data size */ + .long 0x100 /* Data (stack size) */ + .p2align 3 /* Align to 8 byte for 64 bit */ + + /* GNU_PROPERTY_NO_COPY_ON_PROTECTED with pr_datasz and some data */ + .long 2 /* Type: GNU_PROPERTY_NO_COPY_ON_PROTECTED */ + .long 1 /* Data size (corrupted) */ + .byte 1 /* Data */ + .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 */ + .long 1 /* Data size (corrupted) */ + .p2align 3 /* Align to 8 byte for 64 bit */ +end: diff --git a/llvm/test/tools/llvm-readobj/note-gnu-property2.s b/llvm/test/tools/llvm-readobj/note-gnu-property2.s new file mode 100644 index 00000000000..fe6be0c9bcb --- /dev/null +++ b/llvm/test/tools/llvm-readobj/note-gnu-property2.s @@ -0,0 +1,22 @@ +// REQUIRES: x86-registered-target +// 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 0x00000014: +// CHECK-NEXT: Owner Data size Description +// CHECK-NEXT: GNU 0x00000004 NT_GNU_PROPERTY_TYPE_0 (property note) +// CHECK-NEXT: Properties: +// CHECK-NEXT: <corrupted GNU_PROPERTY_TYPE_0> + +// Section below is broken, check we report that. + +.section ".note.gnu.property", "a" +.align 4 + .long 4 /* Name length is always 4 ("GNU") */ + .long end - begin /* Data length */ + .long 5 /* Type: NT_GNU_PROPERTY_TYPE_0 */ + .asciz "GNU" /* Name */ + .p2align 3 +begin: + .long 1 /* Type: GNU_PROPERTY_STACK_SIZE */ +end: |

