forked from OSchip/llvm-project
[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
This commit is contained in:
parent
57903cf093
commit
88dd7c8549
|
@ -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.
|
## Check merged args produce identical output to when not merged.
|
||||||
# RUN: llvm-readelf -aeWhSrnudlVgIs %p/Inputs/trivial.obj.elf-i386 > %t.merged
|
# RUN: yaml2obj %s -o %t.o
|
||||||
# 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: 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: cmp %t.merged %t.not-merged
|
||||||
# RUN: FileCheck %s --input-file %t.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
|
## 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
|
## flags (-st, -sd, etc.), and it would be confusing if only some merged args
|
||||||
## were supported.
|
## 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
|
# CHECK-NOT: Unknown command line argument
|
||||||
# UNKNOWN: for the --section-headers option: may only occur zero or one times!
|
# UNKNOWN: for the --section-headers option: may only occur zero or one times!
|
||||||
|
|
Loading…
Reference in New Issue