summaryrefslogtreecommitdiffstats
path: root/llvm/test/tools/llvm-readobj
diff options
context:
space:
mode:
authorGeorgii Rymar <grimar@accesssoftek.com>2019-11-12 12:46:44 +0300
committerGeorgii Rymar <grimar@accesssoftek.com>2019-11-20 12:11:13 +0300
commit19ddba95513af4e673ce6724e3a87077c278354c (patch)
tree53b95fadf9ea9b5bac15b00bd32bc10deb4fe959 /llvm/test/tools/llvm-readobj
parentce1f95a6e077693f93d8869245f911aff3eb7e4c (diff)
downloadbcm5719-llvm-19ddba95513af4e673ce6724e3a87077c278354c.tar.gz
bcm5719-llvm-19ddba95513af4e673ce6724e3a87077c278354c.zip
[llvm-readobj] - Improve dumping of the SHT_LLVM_LINKER_OPTIONS sections.
I've added a few tests that shows how the current code could overrun the section data buffer while dumping. I had to rewrite the code to fix this. Differential revision: https://reviews.llvm.org/D70112
Diffstat (limited to 'llvm/test/tools/llvm-readobj')
-rw-r--r--llvm/test/tools/llvm-readobj/elf-linker-options.test43
1 files changed, 36 insertions, 7 deletions
diff --git a/llvm/test/tools/llvm-readobj/elf-linker-options.test b/llvm/test/tools/llvm-readobj/elf-linker-options.test
index ca4884e2459..488f2b16f2d 100644
--- a/llvm/test/tools/llvm-readobj/elf-linker-options.test
+++ b/llvm/test/tools/llvm-readobj/elf-linker-options.test
@@ -1,13 +1,18 @@
## Check that we can use the --elf-linker-options option
## to dump SHT_LLVM_LINKER_OPTIONS sections.
-# RUN: yaml2obj %s -o %t1
-# RUN: llvm-readobj --elf-linker-options %t1 | FileCheck %s
+# RUN: yaml2obj --docnum=1 %s -o %t1
+# RUN: llvm-readobj --elf-linker-options %t1 2>&1 | FileCheck %s --check-prefix=CHECK -DFILE=%t1
-# CHECK: LinkerOptions [
-# CHECK-NEXT: option 0: value 0
-# CHECK-NEXT: option 1: value 1
-# CHECK-NEXT: ]
+# CHECK: LinkerOptions [
+# CHECK: option 0: value 0
+# CHECK: option 1: value 1
+# CHECK-EMPTY:
+# CHECK-NEXT: warning: '[[FILE]]': SHT_LLVM_LINKER_OPTIONS section at index 2 is broken: an incomplete key-value pair was found. The last possible key was: "c"
+# CHECK-EMPTY:
+# CHECK-NEXT: warning: '[[FILE]]': SHT_LLVM_LINKER_OPTIONS section at index 4 is broken: the content is not null-terminated
+# CHECK-NEXT: option 3: value 3
+# CHECK-NEXT: ]
--- !ELF
FileHeader:
@@ -16,13 +21,37 @@ FileHeader:
Type: ET_REL
Machine: EM_X86_64
Sections:
- - Name: .linker-options
+## Case 1: a correct case.
+ - Name: .linker-options.valid1
Type: SHT_LLVM_LINKER_OPTIONS
Options:
- Name: option 0
Value: value 0
- Name: option 1
Value: value 1
+## Case 2: check we do not attempt to dump data from outside the SHT_LLVM_LINKER_OPTIONS section
+## when it contains an incomplete key-value pair.
+ - Name: .linker-options.incomplete
+ Type: SHT_LLVM_LINKER_OPTIONS
+ Content: "610062006300" ## 'a', '\0', 'b', '\0', 'c', '\0'
+ - Type: Fill
+ Pattern: "FF"
+ Size: "1"
+## Case 3: in case of an empty section we dump nothing.
+ - Name: .linker-options.empty
+ Type: SHT_LLVM_LINKER_OPTIONS
+ Content: ""
+## Case 4: check we do not attempt to dump data from outside the SHT_LLVM_LINKER_OPTIONS section
+## when it is not null-terminated.
+ - Name: .linker-options.nonul
+ Type: SHT_LLVM_LINKER_OPTIONS
+ Content: "61"
+## Case 5: another correct case to show we do not stop dumping after reporting a warning.
+ - Name: .linker-options.valid2
+ Type: SHT_LLVM_LINKER_OPTIONS
+ Options:
+ - Name: option 3
+ Value: value 3
## llvm-readelf doesn't support --elf-linker-options yet.
# RUN: llvm-readelf --elf-linker-options %t1 2>&1 | FileCheck %s --check-prefix=READELF
OpenPOWER on IntegriCloud