[llvm] 88dd7c8 - [llvm-readelf][test] - Refine the merged.test
Georgii Rymar via llvm-commits
llvm-commits at lists.llvm.org
Fri Aug 21 05:08:29 PDT 2020
Author: Georgii Rymar
Date: 2020-08-21T15:07:37+03:00
New Revision: 88dd7c85497a104ab7e3e52e41fe61be7175d8a9
URL: https://github.com/llvm/llvm-project/commit/88dd7c85497a104ab7e3e52e41fe61be7175d8a9
DIFF: https://github.com/llvm/llvm-project/commit/88dd7c85497a104ab7e3e52e41fe61be7175d8a9.diff
LOG: [llvm-readelf][test] - Refine the merged.test
The testing in merged.test is not ideal.
It uses the following set of flags: `-aeWhSrnudlVgIs`
and the precompiled object `trivial.obj.elf-i386`.
In fact, this object, for example, does not contain versioning stuff,
so specifying `-V` does not make much sense for it, so it is not really tested.
Also, we want to avoid using of precompiled objects, ideally we
want to use a YAML that triggers an output for each of the short options in use:
```
-a: --all
-e: --headers
-W: --wide
-h: --file-headers, --file-header
-S: --section-headers, --sections
-r: --relocations
-n: --notes
-u: --unwind
-d: --dynamic-table
-l: --program-headers
-V: --version-info
-g: --elf-section-groups
-I: --elf-hash-histogram
-s: --symbols
```
Note that, for example, we do not need to have groups to test `-g`, because for a
object with no groups llvm-readelf still prints "There are no section groups in this file.",
but that is not always the case. E.g. for `-d` we don't print anything when we have
no dynamic table, so we have to describe it in a YAML to test `-d` properly.
Also, we probably want to test cases with and without `-a`(-all) option separately
to be sure that we handle all options and not only the first one in the sequence.
Differential revision: https://reviews.llvm.org/D86283
Added:
Modified:
llvm/test/tools/llvm-readobj/ELF/merged.test
Removed:
################################################################################
diff --git a/llvm/test/tools/llvm-readobj/ELF/merged.test b/llvm/test/tools/llvm-readobj/ELF/merged.test
index 454699b8a434..0892a174c58a 100644
--- a/llvm/test/tools/llvm-readobj/ELF/merged.test
+++ b/llvm/test/tools/llvm-readobj/ELF/merged.test
@@ -1,13 +1,59 @@
+## In this test we check that short command line options can be merged.
+
## Check merged args produce identical output to when not merged.
-# RUN: llvm-readelf -aeWhSrnudlVgIs %p/Inputs/trivial.obj.elf-i386 > %t.merged
-# RUN: llvm-readelf -a -e -W -h -S -r -n -u -d -l -V -g -I -s %p/Inputs/trivial.obj.elf-i386 > %t.not-merged
+# RUN: yaml2obj %s -o %t.o
+# RUN: llvm-readelf -aeWhSrnudlVgIs %t.o > %t.merged
+# RUN: llvm-readelf -a -e -W -h -S -r -n -u -d -l -V -g -I -s %t.o > %t.not-merged
# RUN: cmp %t.merged %t.not-merged
# RUN: FileCheck %s --input-file %t.merged
+## Check that the output without -a (--all) option is the same. We do it
+## to verify that each of the options is handled, and not just the first
+## one nor just -a, which triggers all other options.
+# RUN: llvm-readelf -eWhSrnudlVgIs %t.o > %t.merged.no.a
+# RUN: cmp %t.merged %t.merged.no.a
+
+## -e (--headers) is equivalent to setting --file-headers (-h),
+## --program-headers (-l) and --section-headers (-S).
+## Check that the output without -e is equal to the output with it.
+## We do not use -a in this test either.
+# RUN: llvm-readelf -WhSrnudlVgIs %t.o > %t.merged.no.ae
+# RUN: cmp %t.merged %t.merged.no.ae
+
+## An arbitrary YAML description that triggers an output for each of
+## the short option from the test sequence.
+
+--- !ELF
+FileHeader:
+ Class: ELFCLASS64
+ Data: ELFDATA2LSB
+ Type: ET_EXEC
+ Machine: EM_X86_64
+Sections:
+ - Name: .note.ABI-tag
+ Type: SHT_NOTE
+## An arbitrary valid note content.
+ Content: 040000001000000001000000474E550000000000020000000600000020000000
+ - Name: .eh_frame
+ Type: SHT_PROGBITS
+ - Name: .dynamic
+ Type: SHT_DYNAMIC
+ Entries:
+ - Tag: DT_NULL
+ Value: 0
+ - Name: .gnu.version
+ Type: SHT_GNU_versym
+ Flags: [ SHF_ALLOC ]
+ Link: .dynsym
+ Entries: [ 0, 1 ]
+DynamicSymbols:
+ - Name: foo
+ Binding: STB_GLOBAL
+
## llvm-readobj does not support merged args, because it also supports some old
## flags (-st, -sd, etc.), and it would be confusing if only some merged args
## were supported.
-# RUN: not llvm-readobj -aeWhSrnudlVgIs %p/Inputs/trivial.obj.elf-i386 2>&1 | FileCheck %s --check-prefix=UNKNOWN
+# RUN: not llvm-readobj -aeWhSrnudlVgIs %t.o 2>&1 | FileCheck %s --check-prefix=UNKNOWN
# CHECK-NOT: Unknown command line argument
# UNKNOWN: for the --section-headers option: may only occur zero or one times!
More information about the llvm-commits
mailing list