llvm-project/llvm/test/tools/llvm-readobj/ELF/check-output-order.test
Georgii Rymar a7a447be0f [yaml2obj] - ProgramHeaders: introduce FirstSec/LastSec instead of Sections list.
Imagine we have a YAML declaration of few sections: `foo1`, `<unnamed 2>`, `foo3`, `foo4`.

To put them into segment we can do (1*):

```
Sections:
 - Section: foo1
 - Section: foo4
```

or we can use (2*):

```
Sections:
 - Section: foo1
 - Section: foo3
 - Section: foo4
```

or (3*) :

```
Sections:
 - Section: foo1
## "(index 2)" here is a name that we automatically created for a unnamed section.
 - Section: (index 2)
 - Section: foo3
 - Section: foo4
```

It looks really confusing that we don't have to list all of sections.

At first I've tried to make this rule stricter and report an error when there is a gap
(i.e. when a section is included into segment, but not listed explicitly).
This did not work perfect, because such approach conflicts with unnamed sections/fills (see (3*)).

This patch drops "Sections" key and introduces 2 keys instead: `FirstSec` and `LastSec`.
Both are optional.

Differential revision: https://reviews.llvm.org/D90458
2020-11-09 13:00:50 +03:00

46 lines
1.4 KiB
Plaintext

## This test checks that `--all --needed-libs` output is the same as the
## printing order in code. One common reason the output could become
## out-of-order is when more than one stream are printing at the same time.
## https://bugs.llvm.org/show_bug.cgi?id=42140
# RUN: yaml2obj %s -o %t
# RUN: llvm-readelf --all --needed-libs %t | FileCheck %s
# CHECK: ELF Header
# CHECK: Section header string table index
# CHECK: There are 5 section headers, starting at offset
# CHECK: Section Headers:
# CHECK: Key to Flags:
# CHECK: Elf file type is DYN (Shared object file)
# CHECK: Entry point 0x0
# CHECK: There are 1 program headers, starting at offset 64
# CHECK: DYNAMIC
# CHECK: Section to Segment mapping:
# CHECK: None .symtab .strtab .shstrtab
# CHECK: Dynamic section at offset
# CHECK: 0x0000000000000000 (NULL) 0x0
# CHECK: NeededLibraries [
# CHECK: ]
# CHECK: There are no relocations in this file.
# CHECK: Symbol table '.symtab' contains 1 entries
# CHECK: 0: 0000000000000000 0 NOTYPE LOCAL DEFAULT UND
# CHECK: There are no section groups in this file.
--- !ELF
FileHeader:
Class: ELFCLASS64
Data: ELFDATA2LSB
Type: ET_DYN
Sections:
- Name: .dynamic
Type: SHT_DYNAMIC
Entries:
- Tag: DT_NULL
Value: 0
Symbols: []
ProgramHeaders:
- Type: PT_DYNAMIC
FirstSec: .dynamic
LastSec: .dynamic