[all-commits] [llvm/llvm-project] a7a447: [yaml2obj] - ProgramHeaders: introduce FirstSec/La...
Georgii Rymar via All-commits
all-commits at lists.llvm.org
Mon Nov 9 02:15:28 PST 2020
Branch: refs/heads/master
Home: https://github.com/llvm/llvm-project
Commit: a7a447be0fa934505f0c423fb97b91a68c1cc715
https://github.com/llvm/llvm-project/commit/a7a447be0fa934505f0c423fb97b91a68c1cc715
Author: Georgii Rymar <grimar at accesssoftek.com>
Date: 2020-11-09 (Mon, 09 Nov 2020)
Changed paths:
M llvm/include/llvm/ObjectYAML/ELFYAML.h
M llvm/lib/ObjectYAML/ELFEmitter.cpp
M llvm/lib/ObjectYAML/ELFYAML.cpp
M llvm/test/DebugInfo/symbolize-build-id-error.test
M llvm/test/DebugInfo/symbolize-build-id.test
M llvm/test/Object/invalid.test
M llvm/test/Object/obj2yaml.test
M llvm/test/tools/llvm-elfabi/binary-read-add-soname.test
M llvm/test/tools/llvm-elfabi/binary-read-arch.test
M llvm/test/tools/llvm-elfabi/binary-read-bad-soname.test
M llvm/test/tools/llvm-elfabi/binary-read-bad-vaddr.test
M llvm/test/tools/llvm-elfabi/binary-read-neededlibs-bad-offset.test
M llvm/test/tools/llvm-elfabi/binary-read-neededlibs.test
M llvm/test/tools/llvm-elfabi/binary-read-no-dt-strsz.test
M llvm/test/tools/llvm-elfabi/binary-read-no-dt-strtab.test
M llvm/test/tools/llvm-elfabi/binary-read-replace-soname.test
M llvm/test/tools/llvm-elfabi/binary-read-soname-no-null.test
M llvm/test/tools/llvm-elfabi/binary-read-soname.test
M llvm/test/tools/llvm-gsymutil/X86/elf-dwarf.yaml
M llvm/test/tools/llvm-objcopy/ELF/Inputs/ihex-elf-pt-null.yaml
M llvm/test/tools/llvm-objcopy/ELF/Inputs/ihex-elf-segments.yaml
M llvm/test/tools/llvm-objcopy/ELF/add-symbol.test
M llvm/test/tools/llvm-objcopy/ELF/adjacent-segments.test
M llvm/test/tools/llvm-objcopy/ELF/bad-build-id.test
M llvm/test/tools/llvm-objcopy/ELF/basic-binary-copy.test
M llvm/test/tools/llvm-objcopy/ELF/binary-first-seg-offset-zero.test
M llvm/test/tools/llvm-objcopy/ELF/binary-no-paddr.test
M llvm/test/tools/llvm-objcopy/ELF/binary-paddr.test
M llvm/test/tools/llvm-objcopy/ELF/binary-remove-all-but-one.test
M llvm/test/tools/llvm-objcopy/ELF/binary-remove-end.test
M llvm/test/tools/llvm-objcopy/ELF/binary-remove-middle.test
M llvm/test/tools/llvm-objcopy/ELF/binary-segment-layout.test
M llvm/test/tools/llvm-objcopy/ELF/build-id-link-dir.test
M llvm/test/tools/llvm-objcopy/ELF/check-addr-offset-align-binary.test
M llvm/test/tools/llvm-objcopy/ELF/check-addr-offset-align.test
M llvm/test/tools/llvm-objcopy/ELF/copy-after-strip-sections.test
M llvm/test/tools/llvm-objcopy/ELF/dump-section.test
M llvm/test/tools/llvm-objcopy/ELF/empty-section.test
M llvm/test/tools/llvm-objcopy/ELF/identical-segments.test
M llvm/test/tools/llvm-objcopy/ELF/invalid-p_filesz-p_offset.test
M llvm/test/tools/llvm-objcopy/ELF/marker-segment.test
M llvm/test/tools/llvm-objcopy/ELF/no-build-id.test
M llvm/test/tools/llvm-objcopy/ELF/only-keep-debug.test
M llvm/test/tools/llvm-objcopy/ELF/overlap-chain.test
M llvm/test/tools/llvm-objcopy/ELF/parent-loop-check.test
M llvm/test/tools/llvm-objcopy/ELF/preserve-segment-contents-ehdr-phdrs.test
M llvm/test/tools/llvm-objcopy/ELF/preserve-segment-contents.test
M llvm/test/tools/llvm-objcopy/ELF/program-headers.test
M llvm/test/tools/llvm-objcopy/ELF/remove-section-in-segment.test
M llvm/test/tools/llvm-objcopy/ELF/segment-shift-section-remove.test
M llvm/test/tools/llvm-objcopy/ELF/segment-shift.test
M llvm/test/tools/llvm-objcopy/ELF/segment-test-remove-section.test
M llvm/test/tools/llvm-objcopy/ELF/strip-all-gnu.test
M llvm/test/tools/llvm-objcopy/ELF/strip-all.test
M llvm/test/tools/llvm-objcopy/ELF/strip-non-alloc.test
M llvm/test/tools/llvm-objcopy/ELF/strip-sections.test
M llvm/test/tools/llvm-objcopy/ELF/triple-overlap.test
M llvm/test/tools/llvm-objcopy/ELF/two-seg-remove-end.test
M llvm/test/tools/llvm-objcopy/ELF/two-seg-remove-first.test
M llvm/test/tools/llvm-objcopy/ELF/two-seg-remove-third-sec.test
M llvm/test/tools/llvm-objdump/ELF/dynamic-section-machine-specific.test
M llvm/test/tools/llvm-objdump/ELF/dynamic-section.test
M llvm/test/tools/llvm-objdump/X86/elf-disassemble-dynamic-symbols.test
M llvm/test/tools/llvm-objdump/X86/elf-dynamic-relocs.test
M llvm/test/tools/llvm-objdump/X86/phdrs-lma.test
M llvm/test/tools/llvm-objdump/X86/phdrs-lma2.test
M llvm/test/tools/llvm-objdump/section-filter.test
M llvm/test/tools/llvm-objdump/warn-on-out-of-range-start-stop-address.test
M llvm/test/tools/llvm-readobj/ELF/all.test
M llvm/test/tools/llvm-readobj/ELF/broken-dynamic-reloc.test
M llvm/test/tools/llvm-readobj/ELF/check-output-order.test
M llvm/test/tools/llvm-readobj/ELF/demangle.test
M llvm/test/tools/llvm-readobj/ELF/dyn-symbols-size-from-hash-table.test
M llvm/test/tools/llvm-readobj/ELF/dyn-symbols.test
M llvm/test/tools/llvm-readobj/ELF/dynamic-empty.test
M llvm/test/tools/llvm-readobj/ELF/dynamic-malformed.test
M llvm/test/tools/llvm-readobj/ELF/dynamic-no-pt-dynamic.test
M llvm/test/tools/llvm-readobj/ELF/dynamic-not-in-pt-dynamic.test
M llvm/test/tools/llvm-readobj/ELF/dynamic-reloc-no-section-headers.test
M llvm/test/tools/llvm-readobj/ELF/dynamic-reloc.test
M llvm/test/tools/llvm-readobj/ELF/dynamic-table-dtnull.s
M llvm/test/tools/llvm-readobj/ELF/dynamic-tags-machine-specific.test
M llvm/test/tools/llvm-readobj/ELF/dynamic-tags.test
M llvm/test/tools/llvm-readobj/ELF/gnu-notes.test
M llvm/test/tools/llvm-readobj/ELF/gnu-section-mapping.test
M llvm/test/tools/llvm-readobj/ELF/gnuhash.test
M llvm/test/tools/llvm-readobj/ELF/hash-histogram.test
M llvm/test/tools/llvm-readobj/ELF/hash-symbols.test
M llvm/test/tools/llvm-readobj/ELF/hash-table.test
M llvm/test/tools/llvm-readobj/ELF/loadname.test
M llvm/test/tools/llvm-readobj/ELF/malformed-pt-dynamic.test
M llvm/test/tools/llvm-readobj/ELF/needed-libs.test
M llvm/test/tools/llvm-readobj/ELF/non-dynamic-in-pt-dynamic.test
M llvm/test/tools/llvm-readobj/ELF/note-core-ntfile-bad.test
M llvm/test/tools/llvm-readobj/ELF/note-core-ntfile.test
M llvm/test/tools/llvm-readobj/ELF/note-core.test
M llvm/test/tools/llvm-readobj/ELF/program-headers.test
M llvm/test/tools/llvm-readobj/ELF/reloc-negative-addend-no-sym.test
M llvm/test/tools/llvm-readobj/ELF/reloc-zero-name-or-value.test
M llvm/test/tools/llvm-readobj/ELF/unwind.test
M llvm/test/tools/llvm-xray/ARM/extract-instrmap.test
M llvm/test/tools/obj2yaml/ELF/program-headers.yaml
M llvm/test/tools/yaml2obj/ELF/custom-fill.yaml
M llvm/test/tools/yaml2obj/ELF/dynamic-section-i386.yaml
M llvm/test/tools/yaml2obj/ELF/header-sh-fields.yaml
M llvm/test/tools/yaml2obj/ELF/program-header-address.yaml
M llvm/test/tools/yaml2obj/ELF/program-header-align.yaml
M llvm/test/tools/yaml2obj/ELF/program-header-nobits.yaml
M llvm/test/tools/yaml2obj/ELF/program-header-size-offset.yaml
M llvm/test/tools/yaml2obj/ELF/program-header.yaml
M llvm/tools/obj2yaml/elf2yaml.cpp
Log Message:
-----------
[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
More information about the All-commits
mailing list